Skip navigation

De repente me veio a pergunta: será que dá para usar FTP com uma camada de criptografia?

Eis uma breve pesquisa sobre o tema.

O que é FTP?

Segundo a wikipedia:

FTP ou File Transfer Protocol (Protocolo de Transferência de Arquivos) é uma forma bastante rápida e versátil de transferir arquivos, sendo uma das mais usadas na Internet.

O protocolo é especificado na RFC959, resumida logo a seguir.

Um cliente realiza uma conexão TCP para a porta 21 do servidor. Essa conexão, chamada de conexão de controle, permanece aberta ao longo da sessão enquanto uma segunda conexão, chamada conexão de dados, é estabelecida na porta 20 do servidor e em alguma porta do cliente (estabelecida no diálogo entre ambos) como requisitado para a transferência de arquivo. A conexão de controle é utilizada para administração da sessão (comandos, identificação, senhas) entre cliente e servidor utilizando um protocolo semelhante ao Telnet.

FTP pode ser executado em modo ativo ou passivo, os quais determinam como a conexão de dados é estabelecida. No modo ativo, o cliente envia para o servidor o endereço IP e o número da porta na qual ele irá ouvir e então o servidor inicia a conexão TCP. Em situações onde o cliente está atrás de um firewall e inapto para aceitar entradas de conexões TCP, o modo passivo pode ser utilizado. O cliente envia um comando PASV para o servidor e recebe um endereço IP e um número de porta como resposta, os quais o cliente utiliza para abrir a conexão de dados com o servidor.

Acesso aos servidores FTP

O acesso a servidores FTP pode ocorrer de dois modos: através de uma interface ou através da linha de comando, tanto usuários LINUX como usuários Windows podem acessar através dos dois modos. O modo linha de comando está presente em qualquer distribuição LINUX-like e Windows, através do telnet.

A partir de qualquer navegador credenciado (Internet Explorer, Firefox, ou mesmo no Windows Explorer), conforme a norma RFC1738 também é possível aceder a um servidor FTP digitando na barra de endereço:

ftp://[username]:[password]@[servidor]

ou

ftp://[username]:[password]@[servidor]:[porta]

Basicamente, FTP é um protocolo muito simples para transferência de arquivos. Mas e como fica a segurança da conexão com um servidor FTP?

O que encontrei foi a aplicação de uma camada SSL/TLS sobre o FTP tradicional (FTP Secure – FTPS). Uma opção semelhante seria passar (tunneling) a transferência FTP através de uma conexão SSH. Uma outra forma ainda, fácil de confundir, é o SFTP, que é utilizar o protocolo Secure Shell (SSH) para transferir arquivos (SSH File Transfer Protocol).

O FTP Seguro (FTPS)

A Netscape desenvolveu a Secure Sockets Layer (SSL) em 1994 e em meados de 1996 ela foi aplicada sobre o FTP. (Acho sempre interessante lembrar que a SSL só foi virar padrão para a web, através do HTTPS, em 2010, quando um hacker lançou a extensão para Firefox Firesheep. Essa extensão capturava os cookies de logins de sites da web 2.0 como webmail e redes sociais e extraia informações de nome de usuária e senha. Essa falha (exploit) consistia em que os cookies (assim como várias outras informações, como mensagens de email) trafegavam em texto legível pela rede sem criptografia.)

Bom, o FTPS funciona da mesma forma que qualquer implementação que use o SSL (ex. HTTPS para web ou SMTPS para email). O servidor que está sendo acessado envia uma chave pública ao cliente. O servidor precisa fornecer também um certificado para essa chave. É possível criá-los através do OpenSSL e geralmente usa-se uma Autoridade Certificadora (empresa que gerencia certificados) para garantir a autenticidade da chave, mas podemos verificar a chave pública nós mesmo. Ela é então usada por este para enviar uma chamada secreta, criada aleatoriamente. Desta forma, com a autenticação das duas partes, fica estabelecida a troca de dados criptografados entre dois computadores. A principal função do SSL é prover a privacidade da informação e sua integridade. Por isso, ele também evita que o conteúdo dos pacotes transferidos seja alterado.

 

Existem duas formas de invocar essa camada de segurança pelo lado do cliente: uma implícita e outra explícita. No modo implícito, toda a seção FTPS é criptografada. O que a difere do modo explícito é que neste caso o cliente possui controle total sobre quais áreas da conexão serão criptografadas. Ativar ou desativar a criptografia para o canal de controle do FTPS e do canal de dados do FTPS pode acontecer a qualquer momento. A única restrição vem do servidor FTPS, que pode negar comandos baseado numa política de criptografia do servidor (wikipedia.org).

É isso. Deixo o SSH File Transfer Protocol e o FTP através de SSH para outro momento.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *