Entendendo SFTP vs. FTPS vs. FTP
Publicados: 2022-08-18FTP ou File Transfer Protocol é um dos métodos de transferência de dados mais populares disponíveis para vários casos de uso.
O FTP tem diferentes variações seguras disponíveis, conhecidas como FTPS e SFTP, que incorporam algumas diferenças sutis e outras não tão sutis em como eles funcionam. Essas diferenças estão relacionadas a como os dados são trocados, o nível e o tipo de segurança na comunicação e as considerações de firewall.
Saber como esses protocolos funcionam e as diferenças entre esses mecanismos de transferência populares podem ajudá-lo a escolher qual deles funciona melhor para suas necessidades.
FTP
FTP é o protocolo de transferência de arquivos de décadas originalmente proposto sob a RFC 114. Posteriormente, evoluiu como RFC 959, que é o padrão em uso hoje.

O FTP funciona em dois canais para troca de informações: um para comandos e outro para dados. Isso requer duas portas para o FTP funcionar – o canal de comando e o canal de dados.
O canal de comando funciona na porta 21, que aceita conexões de clientes e trata da passagem de comandos. O canal de comando permanece aberto durante toda a sessão FTP até que o cliente envie o comando QUIT
ou o servidor se desconecte forçosamente devido à inatividade ou qualquer outro motivo possível.
O canal de dados usa uma porta temporária sob demanda que escuta no servidor (modo passivo) ou no cliente (modo ativo). Este canal é responsável por compartilhar dados reais entre servidor e cliente na forma de listas de diretórios e transferências de arquivos.
Ao contrário do canal de comando, o canal de dados permanece aberto apenas durante a transferência de arquivos e, assim que termina, o canal de dados é fechado. Para transferência simultânea de vários arquivos ou listagens de diretório, são necessárias várias portas de canal de dados.

O FTP é um protocolo inerentemente inseguro, pois os canais de comando e de dados transferem informações de forma não criptografada, o que é facilmente suscetível à interceptação por qualquer pessoa que use ataques man-in-the-middle.
Conforme discutido anteriormente, o FTP requer uma conexão de entrada na porta 21/tcp
no lado do servidor para o canal de comando. Um intervalo de portas passivas é definido para transferências de arquivos e listagens de diretórios e permite conexões de entrada. Esse processo de definição pode variar de acordo com o servidor FTP em uso. Consulte sua documentação para obter mais detalhes. No lado do cliente, a conexão de saída na porta 21/tcp
deve ser permitida junto com o intervalo de porta passivo definido no servidor.
Autenticação em FTP
As informações de autenticação FTP são transmitidas pelo canal de comando durante o estabelecimento da conexão inicial. O FTP pode usar um nome de usuário e senha para autenticação ou pode ser anônimo para permitir que qualquer pessoa faça login e acesse o servidor.
Modos FTP Ativo e Passivo
O FTP usa o modo Ativo ou Passivo para configurar conexões.
No modo ativo , um usuário se conecta de uma porta aleatória no cliente FTP à porta FTP 21/tcp
no servidor e envia o comando PORT, especificando a porta cliente à qual o servidor deve se conectar. Esta porta será usada para o canal de dados.
O servidor então se conecta da porta 20/tcp
à porta cliente especificada anteriormente com o comando PORT
pelo cliente. Este canal de dados é então usado para transferências de arquivos entre servidor e cliente.
No modo passivo , o cliente se conecta de uma porta aleatória do cliente FTP à porta 21/tcp no servidor e envia o comando PASV. O servidor então responde com uma porta aleatória que deve ser usada para o canal de dados. O cliente então usa outra porta aleatória para se conectar à porta respondida por um servidor na etapa anterior. Essa conexão de canal de dados é então usada para transferência de arquivos entre o servidor e o cliente.
Assim, no modo ativo, a solicitação de conexão inicial é iniciada pelo cliente enquanto a solicitação de conexão do canal de dados é iniciada pelo servidor.
Por outro lado, no modo passivo, as solicitações de conexão inicial e as solicitações de canal de dados subsequentes são iniciadas pelo cliente ao servidor. Essa diferença sutil às vezes afeta como um firewall permite/bloqueia solicitações de FTP tradicionais devido à direção do tipo de conexão de entrada/saída.

FTPS
Mesmo se você estiver disposto a correr riscos associados ao FTP com transmissão de dados não criptografada e ataques main-in-the-middle, os requisitos do setor o obrigam a usar uma alternativa mais segura, como FTPS e SFTP, que são comparativamente muito mais seguras.
Em 1990, com a mudança do cenário de segurança, a Netscape criou o protocolo SSL ou Secure Sockets Layer (SSL, agora conhecido como TLS) para proteger a comunicação em uma rede. SSL foi aplicado ao FTP que se tornou FTPS ou File Transfer Protocol Secure . FTPS ou FTP/S geralmente são executados na porta 990/tcp
, mas também podem ser vistos na porta 21/tcp. Da mesma forma, para o canal de dados, a porta 989/tcp
é a porta comum usada para FTPS. Se a porta de comando for 21/tcp
, espera-se que sua porta de dados seja 20/tcp
.

Assim como o FTP, o FTPS usa dois canais para comunicação: canal de comando e canal de dados. O canal de dados pode ser criptografado com FTPS ou os canais de comando e de dados podem ser criptografados para maior segurança.
O FTPS, como o FTP, também usa várias portas para canais de comando e dados. Assim, a porta 21/tcp
é usada para a conexão inicial e transmissão de informações de autenticação. Posteriormente, serão necessárias portas diferentes para configurar canais de dados para cada solicitação de transferência de arquivo ou listagem de diretório do cliente. Assim, como o FTP, ele precisa de um intervalo de portas para ser permitido em seu firewall.
Autenticação em FTPS
A autenticação para FTPS funciona usando um nome de usuário e senha junto com um certificado de servidor para criptografia. Quando o cliente FTPS se conecta a um servidor, ele verifica se o certificado do servidor é confiável para prosseguir com a conexão. Este certificado pode ser solicitado ao cliente e ao servidor.
SFTP
Ao contrário de FTP e FTPS, SFTP (SSH File Transfer Protocol) é um protocolo completamente diferente construído em SSH (ou Secure Shell). O SFTP, por padrão, funciona na porta 22/tcp, da mesma forma que o SSH, embora possa ser configurado para usar uma porta gratuita personalizada no servidor.

SFTP é um protocolo FTP seguro que usa SSH para enviar e receber arquivos. Sendo o SSH completamente criptografado, o SFTP é um método robusto e seguro para transferir arquivos em uma rede.
O SFTP, ao contrário do FTP e do FTPS, usa um único canal de comunicação para transferir comandos e tráfego de dados, todos os quais são transmitidos de forma criptografada junto com a autenticação inicial.
Autenticação em SFTP
A autenticação no SFTP pode ser feita por meio de um simples nome de usuário e senha, mas, diferentemente do FTP, todas as informações, incluindo detalhes de autenticação, são passadas criptografadas pela rede.
O SFTP também suporta autenticação usando par de chaves SSH, combinação de chaves privada e pública, onde o cliente fornece a chave privada para o usuário especificado e o servidor deve ter a chave pública correspondente para que a autenticação seja bem-sucedida. É mais seguro do que usar uma combinação de nome de usuário/senha. É possível autenticar o mesmo usuário usando senha e chaves SSH se ambos os métodos estiverem configurados no servidor SFTP.
Resumo
Este artigo resume os recursos básicos de diferentes protocolos de transferência de arquivos populares, como FTP, FTPS e SFTP, e destaca as diferenças sutis e principais entre esses protocolos. Ele cobre as portas que é necessário permitir em um firewall para configurar um servidor FTP/FTPS/SFTP em funcionamento, ao mesmo tempo em que destaca a necessidade de alternar para protocolos mais seguros, como FTPS e SFTP.
Quando digo FTP aqui, estou me referindo a qualquer protocolo discutido neste artigo. A razão é que o FTP tem décadas de idade, e até mesmo as versões seguras mais recentes são às vezes chamadas de FTP em vez de seu nome designado para uso diário.
Você também pode estar interessado em conhecer o melhor software de servidor FTP e clientes FTP/SFTP.