8 min de leitura · Guia técnico
Configurar servidor FTP no Ubuntu 22.04 é um processo que envolve a instalação e configuração do vsftpd (Very Secure FTP Daemon). Para estabelecer um servidor FTP funcional, você precisa instalar o pacote vsftpd, configurar usuários e definir permissões adequadas. Neste guia, você aprenderá a implementar um servidor FTP seguro e funcional em aproximadamente 30 minutos.
Pré-requisitos
- Servidor Ubuntu 22.04 LTS com acesso root ou sudo
- Conexão de internet estável para download de pacotes
- Conhecimento básico de comandos Linux
- Firewall configurado (ufw ou iptables)
- Pelo menos 1GB de espaço livre em disco
Instalação do vsftpd no Ubuntu 22.04
O primeiro passo para configurar servidor FTP é instalar o vsftpd, que é o daemon FTP mais utilizado em sistemas Ubuntu devido à sua segurança e estabilidade.
Atualize o sistema e instale o vsftpd:
sudo apt update
sudo apt install vsftpd -y
Após a instalação, verifique o status do serviço:
sudo systemctl status vsftpd
Output esperado:
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-01-15 10:30:45 UTC; 2min ago
Inicie e habilite o serviço para inicialização automática:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
Configuração básica do arquivo vsftpd.conf
A configuração do servidor FTP Ubuntu é realizada através do arquivo /etc/vsftpd.conf. Este arquivo contém todas as diretivas necessárias para personalizar o comportamento do servidor.
Faça backup do arquivo original:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
Edite o arquivo de configuração:
sudo nano /etc/vsftpd.conf
Configure as seguintes opções essenciais:
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
Para habilitar modo passivo, adicione estas linhas:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
Reinicie o serviço para aplicar as configurações:
sudo systemctl restart vsftpd
Criação e configuração de usuários FTP
O gerenciamento de usuários FTP no Ubuntu pode ser feito através de usuários do sistema ou usuários virtuais. Para este tutorial, criaremos usuários do sistema com acesso restrito.
Crie um usuário FTP sem acesso SSH:
sudo useradd -m -s /bin/false ftpuser
sudo passwd ftpuser
Crie o diretório home e configure permissões:
sudo mkdir -p /home/ftpuser/ftp/upload
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/upload
Para permitir que o usuário acesse apenas seu diretório home, adicione ao arquivo de configuração:
sudo echo "ftpuser" >> /etc/vsftpd.userlist
Configure a lista de usuários no vsftpd.conf:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Configuração do firewall para FTP
A configuração de firewall FTP Ubuntu requer abertura de portas específicas para garantir conectividade adequada tanto no modo ativo quanto passivo.
Configure o UFW para permitir conexões FTP:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
Verifique as regras aplicadas:
sudo ufw status
Output esperado:
Status: active
To Action From
-- ------ ----
21/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
30000:31000/tcp ALLOW Anywhere
Para servidores com iptables, use:
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
Habilitando SSL/TLS para segurança
A implementação de SSL no servidor FTP adiciona uma camada de criptografia essencial para proteger credenciais e dados transferidos.
Gere um certificado SSL autoassinado:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Configure as permissões do certificado:
sudo chmod 600 /etc/ssl/private/vsftpd.pem
Edite o vsftpd.conf para habilitar SSL:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
Reinicie o serviço:
sudo systemctl restart vsftpd
Problemas comuns e como resolver
Erro: 500 OOPS: vsftpd: refusing to run with writable root inside chroot
Causa: O diretório home do usuário tem permissões de escrita, o que é considerado inseguro pelo vsftpd quando chroot está habilitado.
Solução: Remova as permissões de escrita do diretório home: sudo chmod a-w /home/ftpuser e crie um subdiretório para uploads com permissões adequadas.
Conexão recusada na porta 21
Causa: Firewall bloqueando a porta ou serviço vsftpd não está rodando.
Solução: Verifique o status do serviço com sudo systemctl status vsftpd e configure o firewall corretamente. Para servidores VPS Linux, certifique-se de que as portas estão abertas no painel de controle.
Modo passivo não funciona
Causa: Range de portas passivas não configurado ou bloqueado pelo firewall.
Solução: Configure pasv_min_port e pasv_max_port no vsftpd.conf e abra o range no firewall. Para conexões externas, configure pasv_address com o IP público do servidor.
Perguntas frequentes sobre configurar servidor FTP no Ubuntu 22.04
Qual é a diferença entre FTP e SFTP no Ubuntu 22.04?
FTP é um protocolo de transferência de arquivos tradicional que transmite dados em texto plano, enquanto SFTP usa SSH para criptografar toda a comunicação. O SFTP é mais seguro e recomendado para ambientes de produção, mas o FTP ainda é usado em redes internas controladas.
Como testar se o servidor FTP está funcionando corretamente?
Você pode testar usando o comando 'ftp localhost' no terminal ou conectar remotamente com 'ftp IP_DO_SERVIDOR'. Para testes mais completos, use clientes como FileZilla configurando o IP do servidor, porta 21 e as credenciais criadas.
É possível usar SSL/TLS com vsftpd no Ubuntu?
Sim, o vsftpd suporta SSL/TLS através da configuração ssl_enable=YES no arquivo de configuração. Você precisa gerar certificados SSL e configurar as opções de criptografia para proteger as transferências de arquivos e credenciais de login.
Quais portas o servidor FTP usa por padrão?
O FTP usa a porta 21 para comandos de controle e portas aleatórias altas (modo ativo) ou configuradas (modo passivo) para transferência de dados. No modo passivo, você pode definir um range específico como 30000-31000 para facilitar a configuração do firewall.
Como criar usuários FTP sem acesso SSH no Ubuntu?
Configure usuários virtuais no vsftpd ou crie usuários do sistema com shell /bin/false. Para usuários virtuais, use pam_userdb com arquivo de banco de dados Berkeley DB. Para usuários do sistema, execute 'useradd -s /bin/false -d /home/ftpuser ftpuser' e configure chroot_local_user=YES.
Conclusão
- Configure sempre SSL/TLS em servidores FTP de produção para proteger credenciais e dados
- Use chroot para isolar usuários em seus diretórios home e evitar acesso não autorizado
- Monitore logs regularmente em /var/log/vsftpd.log para identificar tentativas de acesso suspeitas
Precisa de ajuda com configuração de servidor FTP?
Nossa equipe especializada pode auxiliar na configuração completa de servidores FTP seguros e otimizados. Oferecemos suporte técnico especializado para implementações em ambiente de produção.