Percio Castelo.
EN Início
Como alternar o serviço de FTP no HestiaCP: VSFTPD vs proftpd
← Voltar para blog

Como alternar o serviço de FTP no HestiaCP: VSFTPD vs proftpd

14/06/2026 · 7 min · Infraestrutura · 163 visualizações

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étricaVSFTPDProFTPD
Foco PrincipalSegurança, baixo consumo de recursos e performance crua.Flexibilidade, modularidade e controle granular (.ftpaccess).
Modelo de ProcessosSeparação estrita de privilégios (processo pai root + filhos não privilegiados).Processo multi-threaded/multi-process executando módulos dinâmicos.
Chroot e IsolamentoJail 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óriaExtremamente baixo (ideal para VPS com pouca memória RAM).Moderado a alto dependendo dos módulos carregados na inicialização.
Logs de AuditoriaLog 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:

  1. Verificar serviço ativo: sudo systemctl status proftpd (ou vsftpd)
  2. Inspecionar soquetes de escuta: sudo ss -tulpn | grep :21
  3. Validar logs por erros: sudo tail -n 50 /var/log/proftpd/proftpd.log (ou /var/log/vsftpd.log)
  4. 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:

163 leituras
Creative Commons Atribuição-NãoComercial

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários