No ecossistema de hospedagem de sites e servidores baseados no painel de controle HestiaCP, a transferência de arquivos via File Transfer Protocol (FTP) continua sendo uma necessidade operacional comum. No entanto, sua implementação exige cautela extrema dos administradores.
Por padrão, o instalador do HestiaCP permite escolher ou configurar um daemon de FTP específico durante o provisionamento. Os dois daemons suportados nativamente são o VSFTPD (Very Secure FTP Daemon) e o ProFTPD.
Embora ambos desempenhem a mesma função de transporte na camada de aplicação (Portas TCP 20/21 e faixas passivas), suas arquiteturas internas divergem de forma drástica. VSFTPD prioriza segurança absoluta por meio de isolamento estrito de processos e baixo consumo de memória compartilhada. Por outro lado, ProFTPD adota um modelo modular semelhante ao servidor web Apache, permitindo extensibilidade, virtualização avançada de diretórios através de módulos como mod_vroot e alta flexibilidade de diretivas.
Neste guia detalhado de engenharia de infraestrutura, mostro como alterar o serviço de FTP padrão do sistema HestiaCP de forma controlada, cobrindo backups preventivos, configuração de portas passivas e TLS (FTPS), e rollback de emergência, tanto no fluxo de migração do VSFTPD para o ProFTPD quanto na reversão completa.
1. Comparativo técnico de engenharia: VSFTPD vs proftpd#
Antes de executar as alterações no servidor Linux de produção, é de extrema importância avaliar as características internas de cada daemon:
| Recurso / Métrica | VSFTPD | ProFTPD |
|---|---|---|
| Foco Principal | Segurança, baixo consumo de recursos e performance crua. | Flexibilidade, modularidade e controle granular (.ftpaccess). |
| Modelo de Processos | Separação estrita de privilégios (processo pai root + filhos não privilegiados). | Processo multi-threaded/multi-process executando módulos dinâmicos. |
| Chroot e Isolamento | Jail nativa via recurso interno do kernel. Requer permissões estritas de escrita na raiz. | Virtualização flexível via módulo mod_vroot sem exigir chroot pesado. |
| Consumo de Memória | Extremamente baixo (ideal para VPS com pouca memória RAM). | Moderado a alto dependendo dos módulos carregados na inicialização. |
| Logs de Auditoria | Log simples de transferência em vsftpd.log ou syslog. | Log granular configurável em proftpd.log. |
2. Fluxo 1: alterando o serviço de VSFTPD para proftpd#
Esta migração é recomendada quando os usuários enfrentam dificuldades com permissões de chroot em clientes FTP específicos, ou quando é necessário aplicar controle de acesso complexo em nível de subdiretório (regras .ftpaccess).
Siga rigorosamente as etapas abaixo a partir do console do servidor com privilégios de usuário root:
Passo 1: Backups preventivos das configurações#
Antes de efetuar alterações no hestia.conf ou nos daemons de rede, crie cópias de segurança datadas dos arquivos críticos:
# Backup das configurações do painel Hestia
sudo cp /usr/local/hestia/conf/hestia.conf /usr/local/hestia/conf/hestia.conf.backup.$(date +%Y%m%d)
# Backup de configurações de daemons FTP existentes (se aplicável)
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup.$(date +%Y%m%d) 2>/dev/null || true
sudo cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.backup.$(date +%Y%m%d) 2>/dev/null || true
Passo 2: Verificar e encerrar conexões ativas#
Parar o daemon com transferências de arquivos em andamento causará corrupção de arquivos e falha de scripts de automação. Inspecione se há sessões ativas nas portas FTP padrão (TCP 20/21) antes de prosseguir:
# Inspecionar sockets de FTP ativos
sudo ss -tnp | grep -E ':21|:20'
# Caso precise encerrar conexões de forma graciosa (SIGTERM) e depois forçar (SIGKILL) se necessário:
sudo killall vsftpd 2>/dev/null || true
sleep 2
sudo killall -9 vsftpd 2>/dev/null || true
Passo 3: Parar e desabilitar o VSFTPD#
Utilizando o gerenciador de inicialização do systemd (systemctl), interrompa o socket do VSFTPD para desocupar a porta TCP 21 do servidor:
# Parar o serviço ativo
sudo systemctl stop vsftpd
# Desabilitar inicialização no boot do sistema
sudo systemctl disable vsftpd
Passo 4: Instalação dos pacotes do proftpd#
Instale o daemon do ProFTPD junto com o módulo de virtualização de diretório raiz (mod_vroot), necessário para a correta integração de caminhos de usuários no HestiaCP:
sudo apt-get update && sudo apt-get install proftpd-basic proftpd-mod-vroot -y
Passo 5: Sincronização e cópia de configurações#
O HestiaCP mantém templates de arquivos de configuração pré-definidos para o ProFTPD. Substitua a configuração genérica do sistema pelo template homologado do painel:
sudo cp /usr/local/hestia/install/deb/proftpd/proftpd.conf /etc/proftpd/proftpd.conf
Passo 6: Hardening do proftpd (portas passivas e TLS)#
Para garantir o funcionamento correto de clientes FTP atrás de firewalls baseados em NAT e criptografar a transmissão de dados confidenciais, edite proftpd.conf e configure os blocos de portas passivas e encriptação TLS (FTPS):
# 1. Definir faixa de portas passivas (adicione fora de blocos específicos)
PassivePorts 30000 31000
# 2. Habilitar segurança TLS/FTPS (insira ou modifique a seção correspondente)
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSRSACertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
TLSRSACertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
TLSRequired on
</IfModule>
Passo 7: Atualizar a configuração interna do HestiaCP#
Para que as automações do HestiaCP (v-restart-service, v-add-sys-ftp, etc.) passem a gerenciar o ProFTPD, altere a variável global de FTP do painel:
sudo sed -i "s/FTP_SYSTEM='vsftpd'/FTP_SYSTEM='proftpd'/g" /usr/local/hestia/conf/hestia.conf
(Caso seu hestia.conf use sintaxe sem aspas):
sudo sed -i "s/vsftpd/proftpd/" /usr/local/hestia/conf/hestia.conf
Passo 8: Iniciar e habilitar o serviço proftpd#
Ative a inicialização automática e suba o serviço do ProFTPD no systemd:
sudo systemctl enable proftpd
sudo systemctl restart proftpd
3. Fluxo 2: alterando o serviço de proftpd para VSFTPD (reversão)#
Se você precisa economizar memória RAM no servidor e busca máxima segurança e eficiência operacional com baixo consumo de I/O, execute o fluxo reverso para reinstalar e ativar o VSFTPD.
Passo 1: Backups preventivos das configurações#
Antes de efetuar alterações no hestia.conf ou nos daemons de rede, crie cópias de segurança datadas dos arquivos críticos:
# Backup das configurações do painel Hestia
sudo cp /usr/local/hestia/conf/hestia.conf /usr/local/hestia/conf/hestia.conf.backup.$(date +%Y%m%d)
# Backup de configurações de daemons FTP existentes
sudo cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.backup.$(date +%Y%m%d) 2>/dev/null || true
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup.$(date +%Y%m%d) 2>/dev/null || true
Passo 2: Verificar e encerrar conexões ativas#
Inspecione se há sessões ativas nas portas FTP padrão (TCP 20/21) antes de parar o ProFTPD:
# Inspecionar sockets de FTP ativos
sudo ss -tnp | grep -E ':21|:20'
# Caso precise encerrar conexões de forma graciosa (SIGTERM) e depois forçar (SIGKILL) se necessário:
sudo killall proftpd 2>/dev/null || true
sleep 2
sudo killall -9 proftpd 2>/dev/null || true
Passo 3: Parar e desabilitar o proftpd#
Interrompa o serviço do ProFTPD no systemd:
# Parar o serviço ativo
sudo systemctl stop proftpd
# Desabilitar inicialização no boot do sistema
sudo systemctl disable proftpd
Passo 4: Instalação do pacote VSFTPD#
Se o pacote do VSFTPD não estiver mais instalado, instale-o utilizando o gerenciador de pacotes apt:
sudo apt-get update && sudo apt-get install vsftpd -y
Passo 5: Sincronização do arquivo de configuração#
Copie a configuração recomendada pelo painel HestiaCP para o local de configuração padrão do VSFTPD:
sudo cp /usr/local/hestia/install/deb/vsftpd/vsftpd.conf /etc/vsftpd.conf
Passo 6: Hardening do VSFTPD (portas passivas e TLS)#
Edite vsftpd.conf para habilitar a faixa de portas passivas (para clientes sob NAT) e encriptação TLS (FTPS) para logins e tráfego de dados seguros:
# 1. Definir faixa de portas passivas e IP público
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=IP_PUBLICO_DO_SERVIDOR
# 2. Habilitar segurança TLS/FTPS
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key=/etc/ssl/private/ssl-cert-snakeoil.key
force_local_logins_ssl=YES
force_local_data_ssl=YES
Passo 7: Atualizar a configuração interna do HestiaCP#
Configure o painel HestiaCP para reconhecer o VSFTPD como o gerenciador de FTP ativo no sistema:
sudo sed -i "s/FTP_SYSTEM='proftpd'/FTP_SYSTEM='vsftpd'/g" /usr/local/hestia/conf/hestia.conf
(Ou de forma genérica):
sudo sed -i "s/proftpd/vsftpd/" /usr/local/hestia/conf/hestia.conf
Passo 8: Iniciar e habilitar o serviço VSFTPD#
Inicie o daemon do VSFTPD e configure o sistema para carregá-lo automaticamente em futuros ciclos de boot:
sudo systemctl enable vsftpd
sudo systemctl restart vsftpd
4. Auditoria forense, segurança e verificação SRE#
Após realizar a troca de qualquer um dos serviços, execute as tarefas abaixo para garantir a integridade da rede, as regras de firewall e a conectividade dos usuários.
A. Verificação de firewall (UFW/iptables/nftables)#
O protocolo FTP requer a liberação de portas de controle (TCP 20 e 21) e da faixa passiva (TCP 30000-31000) configurada nos daemons.
# Opção 1: Verificar e liberar portas com UFW (Ubuntu/Debian)
sudo ufw status
sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
sudo ufw allow 30000:31000/tcp
# Opção 2: Verificar regras com Iptables clássico
sudo iptables -L -n | grep -E '21|20|3000'
# Opção 3: Listar regras do Nftables moderno
sudo nft list ruleset | grep -E '21|20|3000'
B. Auditoria de segurança mandatória (SELinux / AppArmor)#
Sistemas de controle de acesso obrigatório (MAC) ativos podem impedir silenciosamente que os daemons FTP acessem o diretório home ou gravem logs:
# 1. Verificar se o SELinux está em modo Enforcing
getenforce
# Se estiver ativo, libere explicitamente o acesso total ao diretório home para o daemon de FTP:
sudo setsebool -P ftpd_full_access on
# 2. Inspecionar perfis ativos de AppArmor para vsftpd/proftpd
sudo aa-status | grep -E 'vsftpd|proftpd'
C. Procedimento de rollback rápido de emergência#
Se a migração apresentar problemas críticos ou instabilidade com o ProFTPD, realize a reversão emergencial para o VSFTPD:
# 1. Parar e desativar o ProFTPD
sudo systemctl stop proftpd
sudo systemctl disable proftpd
# 2. Restaurar backup da configuração de FTP anterior
sudo cp /etc/vsftpd.conf.backup.* /etc/vsftpd.conf 2>/dev/null || true
# 3. Restaurar hestia.conf para o estado de VSFTPD
sudo sed -i "s/FTP_SYSTEM='proftpd'/FTP_SYSTEM='vsftpd'/g" /usr/local/hestia/conf/hestia.conf
# 4. Iniciar e habilitar o VSFTPD
sudo systemctl enable vsftpd
sudo systemctl start vsftpd
D. Checklist pós-migração#
Execute os testes abaixo para atestar a estabilidade pós-migração:
- Verificar serviço ativo:
sudo systemctl status proftpd(ouvsftpd) - Inspecionar soquetes de escuta:
sudo ss -tulpn | grep :21 - Validar logs por erros:
sudo tail -n 50 /var/log/proftpd/proftpd.log(ou/var/log/vsftpd.log) - Verificar integração com o painel:
v-list-sys-services
E. Teste de conectividade externa via clientes seguros#
⚠️ AVISO: O cliente CLI tradicional ftp não é recomendado por transmitir credenciais em texto plano. Não o utilize em produção. Use as alternativas seguras abaixo:
# Opção 1: Acesso nativo criptografado via SFTP (Recomendado)
sftp [email protected]
# Opção 2: Validação de conexão FTPS com TLS forçado via lftp
# Instalar utilitário lftp
sudo apt-get install lftp -y
# Conectar forçando o uso de criptografia SSL/TLS
lftp -u [email protected] -e "set ftp:ssl-force true; ls; bye" domain.com
# Opção 3: Conexão via Curl com FTPS seguro
curl --ftp-ssl -u [email protected] ftps://domain.com/
Este artigo foi útil?
Deixe uma reação rápida para apoiar o conteúdo:
Este post está licenciado sob CC BY-NC.



Comentários
Participe da discussão abaixo.
0 comentários