O FTP (File Transfer Protocol) é um serviço baseado em TCP (Transmission Control Protocol), amplamente utilizado para transferir ficheiros através de redes de dados.
O termo FTP pode referir-se tanto ao protocolo, como ao programa que implementa este protocolo (Servidor FTP, Cliente FTP). Este, utiliza dois modos de operação, ativo e passivo. Conheçamos então o que os difere.
Os dois modos FTP funcionam consoante a configuração do servidor e do cliente. Ambos utilizam dois canais de comunicação entre o servidor, o de comandos e o de dados, separados por duas ligações TCP. O canal de comandos é utilizado, como o próprio nome indica, para enviar comandos e receber a resposta. Já o canal de dados, é utilizado para transferir dados.
Modo Ativo (Padrão)
Este modo funciona quando o cliente requisita o servidor, enviando um comando PORT, através de um porto aleatório, com um pacote endereçado ao porto 21, a fim de transferir um ficheiro. Uma vez estabelecida a ligação, o servidor inicia uma segunda.
O servidor, através do porto 20, contacta de imediato o porto seguinte do cliente, ou seja, imaginemos que o porto utilizada na primeira ligação, por este, foi a 1500, a utilizada para efeitos da segunda ligação será a 1501, designada para o canal de dados.
Uma vez estabelecida a ligação, todas as transferências de ficheiros são feitas através dessas mesmos portos, entre o cliente e servidor. Portanto, o cliente estabelece o canal de comandos, mas é o servidor que estabelece o canal de dados.
No segundo esquema, a presença de uma firewall bloqueia a tentativa de comunicação entre servidor e cliente, uma vez que o servidor utiliza um porto diferente da primeira ligação.
Resumindo (Modo ativo):
- O cliente abre o canal de comandos através do porto 1500
- Envia o comando PORT para dirigido ao porto 21 do servidor
- O servidor confirma a ligação do canal de comandos
- Abre o canal de dados na porto 20 para o cliente no porto 1501
- O cliente confirma a ligação pelo canal de dados
- Os canais de comandos e dados estão abertos e prontos a sua atividade
Modo Passivo
Neste, o cliente também contacta, primeiramente, o porto 21 do servidor FTP, através de um comando PASV. Em vez de iniciar uma segunda ligação de imediato, o servidor responde que o cliente apenas o pode contactar através de um segundo porto, diferente da primeira. É então realizada uma segunda ligação entre o cliente e o servidor para a transferência de dados.
A firewall não bloqueia a tentativa de comunicação entre o servidor e o cliente, visto ter sido o cliente quem iniciou a ligação ambas as vezes.
O modo passivo é utilizado, geralmente, em situações que o servidor FTP não consiga estabelecer o canal de dados, por culpa da firewall, mesmo que exista uma regra no servidor FTP.
Para um melhor controlo sobre a rede, o mais indicado será utilizar o modo ativo, que apenas requer a abertura dos portos 20 e 21. Já o modo passivo, obriga à abertura de vários portos, deixando a rede mais exposta e com vários pontos de vulnerabilidade, precisamente por estarem mais portos acessíveis.
Resumindo (Modo Passivo):
- O cliente abre o canal de comandos através do porto 1500
- Envia o comando PASV para o servidor dirigido ao porto 21
- O comando altera a transmissão para o modo passivo
- Através do canal de comandos, o servidor envia ao cliente o porto que irá escutar o canal de dados, por exemplo 2345
- O cliente abre o canal de dados no porto 1501 para o porto 2345 do servidor
- O servidor confirma a ligação do canal de dados
- Os canais de comandos e dados estão abertos e prontos a sua atividade
São estas as principais diferenças entre os modos Ativo e Passivo do protocolo FTP. É importante conhecê-las para nos podermos adaptar em situações em que estejamos com problemas ou que tenhamos de nos adaptar a uma rede com uma firewall mais restritiva.