FTP
O que é FTP?
FTP significa File Transfer Protocol.
Ele é um protocolo de comunicação usado para transferir arquivos entre computadores através de uma rede, como a Internet ou uma rede local, também chamada de LAN.
O FTP foi desenvolvido para ser simples e eficiente, permitindo que usuários ou sistemas compartilhem, enviem, baixem e gerenciem arquivos remotamente.
Para que o FTP é usado?
O FTP é usado para transferir arquivos entre um cliente e um servidor.
Exemplos comuns:
Enviar arquivos de um site para uma hospedagem.
Baixar arquivos de um servidor remoto.
Compartilhar arquivos dentro de uma rede local.
Gerenciar arquivos em servidores antigos.
Enviar backups para outro servidor.
Transferir arquivos entre sistemas automatizados.
Como o FTP funciona?
O FTP funciona com uma conexão entre um cliente FTP e um servidor FTP.
Fluxo básico:
O cliente se conecta ao servidor FTP.
O servidor solicita autenticação.
O usuário informa nome de usuário e senha.
Após autenticar, o usuário pode listar pastas e arquivos.
Arquivos podem ser enviados ou baixados.
A conexão é encerrada ao final do uso.
Exemplo:
ftp servidor.comDepois de conectar:
Name: usuario
Password: senhaCaracterísticas principais do FTP
O FTP possui algumas características importantes:
Permite transferência de arquivos.
Permite envio e download de arquivos.
Funciona entre cliente e servidor.
Pode usar autenticação com usuário e senha.
Pode permitir acesso anônimo.
Pode operar em modo ativo ou passivo.
Não criptografa os dados por padrão.
Pode ter problemas com firewall e NAT se mal configurado.
FTP é seguro?
Por padrão, não.
O FTP tradicional envia dados sem criptografia.
Isso significa que informações como:
Usuário.
Senha.
Nome dos arquivos.
Conteúdo dos arquivos.
Podem trafegar em texto claro pela rede.
Por isso, para uso na internet, o FTP tradicional não é recomendado. O ideal é usar alternativas seguras, como SFTP ou FTPS.
FTP é a mesma coisa que SFTP?
Não.
Apesar dos nomes parecidos, FTP e SFTP são protocolos diferentes.
O FTP é o protocolo tradicional de transferência de arquivos e não usa criptografia por padrão.
O SFTP usa SSH e criptografa a comunicação.
Resumo:
| Protocolo | Segurança | Porta comum | Observação |
|---|---|---|---|
| FTP | Não criptografado | 21 | Antigo e inseguro |
| FTPS | Usa TLS/SSL | 21 ou 990 | FTP com criptografia |
| SFTP | Usa SSH | 22 | Mais comum em servidores Linux |
FTP usa TCP ou UDP?
O FTP usa TCP.
Ele precisa de uma conexão confiável para transferir arquivos corretamente.
Por padrão, o FTP usa a porta:
21/TCPA porta 21 é usada para controle da conexão.
A transferência de dados pode usar outras portas, dependendo do modo ativo ou passivo.
Qual porta o FTP usa?
Por padrão, o FTP usa:
21/TCPNo modo ativo, o servidor geralmente usa a porta:
20/TCPNo modo passivo, o servidor abre uma faixa de portas para transferência de dados.
Resumo:
| Uso | Porta comum |
|---|---|
| Controle FTP | 21/TCP |
| Dados no modo ativo | 20/TCP |
| Dados no modo passivo | Faixa configurada no servidor |
O que é modo ativo no FTP?
No modo ativo, o cliente se conecta ao servidor pela porta 21.
Depois, o servidor tenta se conectar de volta ao cliente para transferir os dados.
Fluxo básico:
O cliente abre conexão com o servidor.
O servidor recebe o comando.
O servidor tenta abrir uma conexão de volta para o cliente.
A transferência de dados acontece nessa conexão.
Esse modo pode causar problemas quando o cliente está atrás de firewall ou NAT.
Exemplo de problema comum:
O cliente consegue conectar, mas não consegue listar diretórios ou transferir arquivos.
O que é modo passivo no FTP?
No modo passivo, o cliente se conecta ao servidor pela porta 21.
Depois, o servidor informa uma porta de dados, e o próprio cliente abre a conexão para essa porta.
Fluxo básico:
O cliente conecta no servidor.
O cliente solicita modo passivo.
O servidor abre uma porta para dados.
O cliente se conecta nessa porta.
A transferência acontece.
O modo passivo costuma funcionar melhor com firewall e NAT.
Por isso, ele é muito usado em hospedagens e conexões pela internet.
Diferença entre modo ativo e modo passivo
| Modo | Como funciona | Problema comum |
|---|---|---|
| Ativo | Servidor conecta de volta ao cliente | Bloqueio por firewall/NAT no cliente |
| Passivo | Cliente conecta nas portas abertas pelo servidor | Precisa liberar faixa de portas no servidor |
Em servidores modernos, geralmente o modo passivo é mais recomendado.
FTP permite login anônimo?
Sim.
O FTP pode ser configurado para permitir acesso anônimo.
Nesse caso, o usuário acessa sem uma conta específica.
Exemplo comum de usuário:
anonymousEm alguns servidores, a senha pode ser um e-mail ou pode ficar em branco.
Mas o acesso anônimo deve ser usado com cuidado, pois pode expor arquivos indevidamente.
Como instalar um servidor FTP?
Um servidor FTP comum no Linux é o vsftpd.
No Debian, Ubuntu e derivados:
sudo apt update
sudo apt install vsftpdVerificar status:
sudo systemctl status vsftpdIniciar o serviço:
sudo systemctl start vsftpdHabilitar na inicialização:
sudo systemctl enable vsftpdComo configurar FTP no servidor?
A configuração principal do vsftpd fica no arquivo:
/etc/vsftpd.confPara editar:
sudo nano /etc/vsftpd.confConfigurações comuns:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YESExplicação:
anonymous_enable=NO desativa login anônimo.local_enable=YES permite login de usuários locais.write_enable=YES permite envio e alteração de arquivos.chroot_local_user=YES limita o usuário à própria pasta.
Depois de alterar, reinicie:
sudo systemctl restart vsftpdComo configurar modo passivo no FTP?
No arquivo:
/etc/vsftpd.confAdicione ou ajuste:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100Se o servidor estiver atrás de NAT ou firewall, também pode ser necessário informar o IP público:
pasv_address=SEU_IP_PUBLICODepois reinicie:
sudo systemctl restart vsftpdLibere as portas no firewall:
sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcpComo criar um usuário para FTP?
Criar usuário:
sudo adduser usuario_ftpDefinir senha:
sudo passwd usuario_ftpCriar pasta para arquivos:
sudo mkdir -p /home/usuario_ftp/ftpAjustar permissões:
sudo chown usuario_ftp:usuario_ftp /home/usuario_ftp/ftpDepois, o usuário poderá conectar usando um cliente FTP.
Como usar FTP pelo terminal?
Conectar ao servidor:
ftp ip_do_servidorOu:
ftp servidor.comDepois informe usuário e senha.
Exemplo:
Name: usuario_ftp
Password: senhaDentro do FTP, listar arquivos:
lsEnviar arquivo:
put arquivo.txtBaixar arquivo:
get arquivo.txtSair:
byeComo enviar arquivos com FTP?
Conecte no servidor:
ftp servidor.comDepois use:
put arquivo.txtPara enviar vários arquivos:
mput *.txtEm clientes gráficos, como FileZilla, basta arrastar os arquivos do computador para o servidor.
Como baixar arquivos com FTP?
Conecte no servidor:
ftp servidor.comDepois use:
get arquivo.txtPara baixar vários arquivos:
mget *.txtTambém é possível usar clientes gráficos, como FileZilla, WinSCP ou Cyberduck.
Como testar se o FTP está funcionando?
Testar porta 21:
nc -vz ip_do_servidor 21Ou:
telnet ip_do_servidor 21Verificar se o servidor está escutando:
sudo ss -tulpn | grep :21Verificar status do serviço:
sudo systemctl status vsftpdTestar conexão FTP:
ftp ip_do_servidorFTP usa TLS ou SSL?
O FTP tradicional não usa TLS ou SSL por padrão.
Quando FTP usa TLS/SSL, ele passa a ser chamado de FTPS.
Existem dois modos comuns:
FTP explícito com TLS, geralmente na porta 21.
FTP implícito com TLS, geralmente na porta 990.
Resumo:
| Protocolo | Criptografia | Porta comum |
|---|---|---|
| FTP | Não | 21 |
| FTPS explícito | Sim | 21 |
| FTPS implícito | Sim | 990 |
| SFTP | Sim, via SSH | 22 |
Diferença entre FTP, FTPS e SFTP
| Protocolo | Segurança | Como funciona | Porta comum |
|---|---|---|---|
| FTP | Não criptografado | Protocolo FTP tradicional | 21 |
| FTPS | Usa TLS/SSL | FTP com criptografia | 21 ou 990 |
| SFTP | Usa SSH | Transferência via SSH | 22 |
O FTP é mais antigo e simples.
O FTPS adiciona criptografia ao FTP.
O SFTP é outro protocolo, baseado em SSH.
Erros comuns no FTP
Login incorrect
Erro:
Login incorrectOu:
530 Login incorrectPossíveis causas:
Usuário incorreto.
Senha incorreta.
Usuário não existe no servidor.
Login local desativado.
Conta bloqueada.
Verifique o usuário:
id usuario_ftpAlterar senha:
sudo passwd usuario_ftpVerificar configuração:
sudo nano /etc/vsftpd.confConfirme se existe:
local_enable=YESConnection refused
Erro:
Connection refusedPossíveis causas:
Serviço FTP parado.
Porta 21 fechada.
Firewall bloqueando.
Servidor FTP não instalado.
Verificar serviço:
sudo systemctl status vsftpdIniciar serviço:
sudo systemctl start vsftpdVerificar porta:
sudo ss -tulpn | grep :21Liberar firewall:
sudo ufw allow 21/tcpConnection timed out
Erro:
Connection timed outPossíveis causas:
Firewall bloqueando.
Servidor fora do ar.
IP incorreto.
Porta não liberada no provedor.
Problema de rota.
Testar porta:
nc -vz ip_do_servidor 21Verificar firewall:
sudo ufw statusLiberar FTP:
sudo ufw allow 21/tcpConecta, mas não lista arquivos
Erro comum:
Failed to retrieve directory listingPossíveis causas:
Modo passivo não configurado.
Faixa de portas passivas bloqueada.
Firewall bloqueando portas de dados.
Servidor atrás de NAT sem pasv_address.
Solução:
Editar:
sudo nano /etc/vsftpd.confAdicionar:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
pasv_address=SEU_IP_PUBLICOLiberar firewall:
sudo ufw allow 40000:40100/tcpReiniciar:
sudo systemctl restart vsftpd500 OOPS: cannot change directory
Erro:
500 OOPS: cannot change directoryPossíveis causas:
Permissões incorretas na pasta do usuário.
Diretório home inexistente.
SELinux bloqueando acesso.
Configuração de chroot incorreta.
Verificar pasta:
ls -ld /home/usuario_ftpCorrigir dono:
sudo chown usuario_ftp:usuario_ftp /home/usuario_ftpCorrigir permissões:
sudo chmod 755 /home/usuario_ftp550 Permission denied
Erro:
550 Permission deniedPossíveis causas:
Usuário sem permissão de escrita.
Pasta pertence a outro usuário.write_enable desativado.
Permissão do arquivo ou diretório incorreta.
Verificar configuração:
sudo nano /etc/vsftpd.confConfirme:
write_enable=YESVerificar permissões:
ls -ld /caminho/da/pastaAjustar dono:
sudo chown usuario_ftp:usuario_ftp /caminho/da/pasta500 OOPS: vsftpd: refusing to run with writable root inside chroot
Erro:
500 OOPS: vsftpd: refusing to run with writable root inside chrootPossíveis causas:
O usuário está preso em chroot.
A pasta raiz do chroot está com permissão de escrita.
O vsftpd bloqueia essa configuração por segurança.
Solução recomendada:
Criar uma pasta interna para uploads:
sudo mkdir -p /home/usuario_ftp/uploads
sudo chown root:root /home/usuario_ftp
sudo chmod 755 /home/usuario_ftp
sudo chown usuario_ftp:usuario_ftp /home/usuario_ftp/uploadsO usuário fica preso em /home/usuario_ftp, mas grava dentro de /uploads.
Como testar se o FTP está funcionando?
Testar serviço:
sudo systemctl status vsftpdTestar porta:
nc -vz ip_do_servidor 21Conectar:
ftp ip_do_servidorListar arquivos:
lsEnviar arquivo de teste:
put teste.txtVerificar logs:
sudo tail -f /var/log/vsftpd.logOu:
sudo journalctl -u vsftpd -fComandos principais do FTP
| Comando | Função |
|---|---|
ftp servidor | Conecta ao servidor FTP |
ls | Lista arquivos remotos |
pwd | Mostra pasta remota atual |
cd pasta | Entra em uma pasta remota |
lcd pasta | Troca a pasta local |
put arquivo | Envia um arquivo |
get arquivo | Baixa um arquivo |
mput *.txt | Envia vários arquivos |
mget *.txt | Baixa vários arquivos |
mkdir pasta | Cria pasta remota |
delete arquivo | Remove arquivo remoto |
rename antigo novo | Renomeia arquivo remoto |
passive | Alterna modo passivo |
bye | Sai do FTP |
quit | Sai do FTP |
Exemplo completo de uso
Criar arquivo de teste:
echo "teste ftp" > teste.txtConectar ao servidor:
ftp 192.168.0.10Informar usuário e senha:
Name: usuario_ftp
Password: senhaDentro do FTP:
pwd
ls
put teste.txt
ls
byeEsse exemplo conecta ao servidor FTP, lista a pasta atual, envia o arquivo teste.txt, lista novamente e encerra a sessão.
Boas práticas de segurança
Evitar FTP tradicional pela internet.
Preferir SFTP ou FTPS quando possível.
Não permitir login anônimo sem necessidade.
Usar senhas fortes.
Criar usuários separados para cada finalidade.
Limitar usuários ao próprio diretório com chroot.
Configurar corretamente o modo passivo.
Liberar no firewall apenas as portas necessárias.
Monitorar logs de acesso.
Remover usuários antigos sem uso.
Manter o servidor FTP atualizado.
Evitar usar FTP com usuário root.