FTP Server · 7 min read · Sep 23, 2025

Instalando o Pure-FTPd no Ubuntu 24.04

Pure-FTPd é um software de servidor FTP gratuito e de código aberto disponível para Ubuntu e outras distribuições Linux. Projetado com foco em segurança, desempenho e facilidade de uso, Pure-FTPd oferece recursos robustos, como suporte a usuários virtuais, conexões criptografadas usando TLS/SSL e vários mecanismos de autenticação. Ele também fornece recursos como limitação de largura de banda, restrição de permissões de usuário e habilitação de acesso FTP anônimo. Pure-FTPd é frequentemente escolhido por sua simplicidade na configuração em comparação com outros servidores FTP, tornando-o uma escolha popular tanto para implantações pequenas quanto em grande escala em sistemas Ubuntu.

O Protocolo de Transferência de Arquivos (FTP) é um protocolo de rede padrão usado para transferir arquivos entre um cliente e um servidor por meio de uma rede, como a internet. Desenvolvido no início da década de 1970, o FTP permite que os usuários façam upload, download e gerenciem arquivos em um servidor remoto. Ele opera usando dois canais: um canal de comando para controlar a conexão e um canal de dados para transferir arquivos. O FTP pode funcionar em modo ativo ou passivo, o que dita como o servidor e o cliente estabelecem conexões. Embora amplamente utilizado para transferências de arquivos, o FTP é considerado inseguro porque os dados, incluindo credenciais de login, são transmitidos em texto simples; eu vou mostrar neste guia como configurar o Pure-FTPd para usar FTPS (FTP sobre SSL/TLS), tornando o FTP seguro.

Este tutorial orienta você passo a passo pelo processo de instalação e configuração do Pure-FTPd no Ubuntu.

Pré-requisitos para Instalar o Pure-FTPd

Antes de prosseguir com a instalação, certifique-se de que você possui:

  • Um servidor Ubuntu configurado
  • Acesso a uma conta de usuário com privilégios sudo

Instalação Passo a Passo do Pure-FTPd

Atualizando Pacotes do Sistema

Primeiro, atualize a lista de pacotes do seu sistema:

sudo apt update

Instalando o Pure-FTPd

Em seguida, instale o Pure-FTPd usando o seguinte comando:

sudo apt install pure-ftpd

Configurando o Pure-FTPd para Segurança Aprimorada

Configurando um Ambiente Seguro

Crie um grupo dedicado para usuários FTP:

sudo groupadd ftpgroup

Crie um usuário para o Pure-FTPd:

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Gerenciando Acesso de Usuário

Para adicionar um usuário ao servidor FTP:

sudo pure-pw useradd [username] -u ftpuser -g ftpgroup -d /home/ftpusers/[username]  
sudo pure-pw mkdb

Substitua [username] pelo nome de usuário desejado.

Configurando TLS para Transferência de Dados Segura

Gere um certificado autoassinado:

sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Modifique a configuração do Pure-FTPd para ativar o TLS:

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS  
sudo service pure-ftpd restart

Opções de Configuração Avançadas

Aqui está uma lista de configurações comuns que podem ser configuradas para o Pure-FTPd no diretório /etc/pure-ftpd/conf/ no Ubuntu. O nome do arquivo de configuração está em negrito.

  • AltLog: Especifica métodos de registro alternativos. Por exemplo, AltLog clf:/var/log/pureftpd.log registrará transferências no formato W3C.
  • AnonymousOnly: Quando habilitado (criando um arquivo chamado AnonymousOnly), restringe o servidor a permitir apenas logins anônimos.
  • AntiWarez: Se este arquivo existir, os usuários estão proibidos de fazer upload de arquivos que já existem no servidor.
  • AutoRename: Renomeia automaticamente arquivos enviados se um arquivo com o mesmo nome existir.
  • Bind: Vincula o servidor a um endereço IP e porta específicos. Por exemplo, Bind 21 vincula à porta 21 em todos os endereços disponíveis.
  • BrokenClientsCompatibility: Habilita compatibilidade com clientes FTP que não aderem estritamente aos padrões FTP.
  • ChrootEveryone: Se habilitado, restringe todos os usuários ao seu diretório inicial.
  • CreateHomeDir: Cria automaticamente diretórios iniciais se não existirem quando um usuário faz login.
  • CustomerProof: Aumenta a resiliência contra erros comuns cometidos em configurações e comandos de clientes.
  • Daemonize: Quando este arquivo existir, o Pure-FTPd será executado como um daemon.
  • DisplayDotFiles: Controla se arquivos ocultos (dot files) são exibidos ou não.
  • DontResolve: Impede a resolução de DNS para registro e controle de largura de banda, o que pode melhorar o desempenho.
  • ExtAuth: Especifica um programa externo para autenticação de usuários.
  • ForcePassiveIP: Força o servidor a relatar um endereço IP específico para clientes em modo passivo.
  • FSCharset: Define o conjunto de caracteres do sistema de arquivos, útil para nomes de arquivos não ASCII.
  • IPv4Only ou IPv6Only: Restringe o servidor a escutar apenas endereços IPv4 ou IPv6.
  • KeepAllFiles: Impede a exclusão de qualquer arquivo no servidor.
  • LDAPConfigFile: Especifica o caminho para o arquivo de configuração LDAP para autenticação.
  • LimitRecursion: Limita a profundidade de recursão e o número de arquivos exibidos nas listagens de diretórios.
  • MaxClientsNumber: Limita o número máximo de clientes simultâneos.
  • MaxClientsPerIP: Restringe o número de conexões simultâneas de um único endereço IP.
  • MaxDiskUsage: Limita a porcentagem de uso do disco.
  • MaxIdleTime: Define o tempo máximo de inatividade em minutos antes de desconectar um cliente.
  • MaxLoad: Desconecta clientes ou recusa novas conexões acima de uma certa carga do sistema.
  • MinUID: Define o UID mínimo para login. Usuários com um UID mais baixo não podem fazer login.
  • MySQLConfigFile: Especifica o caminho para o arquivo de configuração MySQL para autenticação baseada em banco de dados.
  • NoAnonymous: Desabilita logins anônimos se este arquivo existir.
  • NoChmod: Desabilita o comando CHMOD no servidor.
  • NoRename: Impede que os usuários renomeiem arquivos.
  • PassivePortRange: Define um intervalo de portas para conexões passivas (por exemplo, 30000 35000).
  • PerUserLimits: Define limites com base em cada usuário.
  • PureDB: Especifica o caminho para o arquivo de banco de dados de usuários PureDB.
  • Quota: Define limites de cota para usuários.
  • SyslogFacility: Define a instalação do syslog para registro.
  • TLSCipherSuite: Especifica os cifradores TLS permitidos para conexões criptografadas.
  • TrustedGID: Especifica uma lista de IDs de grupo confiáveis para login.
  • UMask: Define a umask padrão para criação de arquivos.
  • UnixAuthentication: Habilita autenticação contra o banco de dados de senhas UNIX.
  • UploadScript: Especifica um script a ser executado após um upload bem-sucedido.

Esta lista cobre as opções de configuração mais comumente usadas, mas não é exaustiva. Sempre consulte a documentação oficial do Pure-FTPd ou use o

pure-ftpd-wrapper --help

comando para as informações mais precisas e abrangentes.

Exemplos

Aqui está uma lista de configurações do Pure-FTPd em /etc/pure-ftpd/conf/ com exemplos para ilustrar os tipos de valores que aceitam:

  • AltLog: AltLog clf:/var/log/pureftpd.log - Exemplo: clf:/var/log/pureftpd.log
  • AnonymousOnly: Habilite criando um arquivo chamado AnonymousOnly. - Nenhum valor necessário.
  • AntiWarez: Habilite criando um arquivo chamado AntiWarez. - Nenhum valor necessário.
  • AutoRename: Habilite criando um arquivo chamado AutoRename. - Nenhum valor necessário.
  • Bind: Bind 21 - Exemplo: 192.168.0.1,21
  • BrokenClientsCompatibility: Habilite criando um arquivo chamado BrokenClientsCompatibility. - Nenhum valor necessário.
  • ChrootEveryone: Habilite criando um arquivo chamado ChrootEveryone. - Nenhum valor necessário.
  • CreateHomeDir: Habilite criando um arquivo chamado CreateHomeDir. - Nenhum valor necessário.
  • CustomerProof: Habilite criando um arquivo chamado CustomerProof. - Nenhum valor necessário.
  • Daemonize: Habilite criando um arquivo chamado Daemonize. - Nenhum valor necessário.
  • DisplayDotFiles: Habilite criando um arquivo chamado DisplayDotFiles. - Nenhum valor necessário.
  • DontResolve: Habilite criando um arquivo chamado DontResolve. - Nenhum valor necessário.
  • ExtAuth: ExtAuth /path/to/authenticator - Exemplo: /usr/local/bin/myauth
  • ForcePassiveIP: ForcePassiveIP 192.168.0.1 - Exemplo: 192.168.0.1
  • FSCharset: FSCharset utf-8 - Exemplo: utf-8
  • IPv4Only ou IPv6Only: Habilite criando um arquivo chamado IPv4Only ou IPv6Only. - Nenhum valor necessário.
  • KeepAllFiles: Habilite criando um arquivo chamado KeepAllFiles. - Nenhum valor necessário.
  • LDAPConfigFile: LDAPConfigFile /etc/pure-ftpd/ldap.conf - Exemplo: /etc/pure-ftpd/ldap.conf
  • LimitRecursion: LimitRecursion 10000 8 - Exemplo: 10000 8 (10000 arquivos, 8 níveis de profundidade)
  • MaxClientsNumber: MaxClientsNumber 50 - Exemplo: 50
  • MaxClientsPerIP: MaxClientsPerIP 8 - Exemplo: 8
  • MaxDiskUsage: MaxDiskUsage 95 - Exemplo: 95 (95 por cento)
  • MaxIdleTime: MaxIdleTime 15 - Exemplo: 15 (15 minutos)
  • MaxLoad: MaxLoad 4.0 - Exemplo: 4.0
  • MinUID: MinUID 1000 - Exemplo: 1000
  • MySQLConfigFile: MySQLConfigFile /etc/pure-ftpd/mysql.conf - Exemplo: /etc/pure-ftpd/mysql.conf
  • NoAnonymous: Habilite criando um arquivo chamado NoAnonymous. - Nenhum valor necessário.
  • NoChmod: Habilite criando um arquivo chamado NoChmod. - Nenhum valor necessário.
  • NoRename: Habilite criando um arquivo chamado NoRename. - Nenhum valor necessário.
  • PassivePortRange: PassivePortRange 30000 35000 - Exemplo: 30000 35000
  • PerUserLimits: PerUserLimits 8 - Exemplo: 8 (8 conexões simultâneas por usuário)
  • PureDB: PureDB /etc/pure-ftpd/pureftpd.pdb - Exemplo: /etc/pure-ftpd/pureftpd.pdb
  • Quota: Quota 1000M - Exemplo: 1000M (1000 Megabytes)
  • SyslogFacility: SyslogFacility ftp - Exemplo: ftp
  • TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3 - Exemplo: HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • TrustedGID: TrustedGID 1000 - Exemplo: 1000
  • UMask: UMask 133:022 - Exemplo: 133:022 (Arquivos: 133, Diretórios: 022)
  • UnixAuthentication: Habilite criando um arquivo chamado UnixAuthentication. - Nenhum valor necessário.
  • UploadScript: UploadScript /path/to/script - Exemplo: /usr/local/bin/uploadscript

Esses exemplos devem esclarecer como configurar várias opções no Pure-FTPd.

Monitoramento e Manutenção

Verifique regularmente os logs em /var/log/pure-ftpd/ para qualquer atividade ou erro incomum.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.