Transferência de arquivos através do protocolo FTP: é possível…

… realizar esta operação de forma segura? Infelizmente, não. Além de ser um dos protocolos mais antigos do planeta (1971), o FTP (File Transfer Protocol) não possui nenhum mecanismo de criptografia designado para garantir a segurança e a confidencialidade das informações trafegadas. Para variar, o seu método de autenticação é baseado em contas de usuário & senhas, que por sua vez são transmitidos como texto puro, tornando a sua interpretação mais fácil. Porém, é possível empregar soluções que suportem o uso de criptografia de dados, além de utilizar métodos de autenticação mais robustos…

O “X da questão” é que até então, não sabia da existência de duas diferentes implementações de segurança para o protocolo em questão, o que me motivou a escrever esta coluna e deixá-la registrada para futuras consultas! Atualmente, temos os protocolos FTP over SSH (SFTP) e o FTP Secure (FTPS). O primeiro se baseia na utilização de túneis criptografados através do protocolo SSH, ao passo que o segundo (FTPS) possui mecanismos embutidos para a utilizaçãdo do protocolo TLS, que também é utilizado para estabelecer túneis criptografados.

As similaridades terminam a partir do momento em que avaliamos o seu modo de funcionamento. Pelo fato do protocolo FTP clássico utilizar múltiplas portas para realizar o gerenciamento e a transferência (20 e 21, principalmente), o FTP over SSH precisará criar múltiplos túneis de criptografia para que possa operar com segurança, trazendo um overhead para o processo de comunicação, afetando a sua performance. Além disso, as complexidades estabelecer novos túneis irão gerar pontos de vulnerabilidades em suas configurações, comprometendo a segurança geral do serviço. Por fim, não é possível estabelecer túneis, caso o FTP esteja utilizando o modo ativo na transferência de dados.

E se não bastassem as limitações do FTP over SSH, ainda temos que lidar com um outro protocolo independente, mas com um nome “parecido”: o SSH Filer Transfer Protocol! Este por sua vez, NÃO é uma implementação (segura) do protocolo FTP mas sim, uma extensão do protocolo SSH que tem como objetivo, oferecer uma solução para a transferência de arquivos de forma segura e confiável. Por utilizar o SSH como base, ele trabalha na porta 22 e não é compatível com os clientes FTP que conhecemos. Não há nada de errado em relação ao SSH FTP; inclusive, ele cumpre muito bem as funções para a qual foi concebido.

Por fim, temos o FTP Secure (FTPS), uma implementação do protocolo FTP dotado de uma extensão que provê suporte nativo para os protocolo TLS e SSL, para estabelecer túneis criptografados. O FTP Secure utiliza as portas TCP 989 e 990 (canais de controle e de dados), mantendo as tradicionais portas TCP 20 e 21 apenas para fins de retro-compatibilidade. Porém, apenas o modo de negociação explícito é suportado, o qual requer que o cliente tenha a iniciativa de requisitar o modo seguro e estabelecer uma negociação, para definir o método de criptografia a ser utilizado. Bem diferente do modo implícito, o qual a negociação é feita de forma automática, após a conexão.

Eis a questão: qual deles, escolher? Cada um certamente irá apresentar as suas vantagens e desvantagens, tornando este processo complexo até mesmo para os especialistas no assunto! E se não bastassem as dificuldades técnicas, ainda teremos que levar em consideração as particularidades dos principais sistemas operacionais em uso, pois além de suas diferenças (técnicas e práticas), ainda necessitaremos definir quais serviços se encontram disponíveis, bem como a sua compatibilidade com estes “diferentes” protocolos! Para se ter uma idéia, o Linux possui vários serviços, destacando-se o VSFTPD, o ProFTPD e o Pure-FTPd.

Sem contar as regras de firewall e as permissões & controles de acesso… &;-D