Conheça as diferenças entre o modo FTP ativo e passivo
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.
Este artigo tem mais de um ano
Pplware soma e segue. Excelente artigo Pedro.
“Por Diogo Gaspar para Pplware.com”
Não é do Pedro, é do Diogo.
Já agora podias ter explicado as diferenças de segurança, ter falado um bocado de cluster de ftp (drftpd ou glftpd) e um overview sobre FXP, só para quem tem curisodade sobre ftps ficar a saber um pouco mais 😉
+1
Sorry!!! Parabéns Diogo.
Uma dúvida rápida: o que se faz em ambos os processos é um 3 way handshake?
FTP corre sobre TCP logo tem sempre que fazer o 3way handshake.
Muito interessante e esclarecedor.
Muito bem , parabés
Queria instalar um FTP Server num PC onde não tenho acesso ao router.
É possível?
Entretanto vou-me desenrascando com o Chrome Demore Desktop.
Thanks.
Sem abrir os Portos no Router é complicado.
Eu diria que näo, mas talvez alguém saiba de uma maneira.
Duh.. apontas o ftp server para uma porta já aberta..
FTP é um sistema completamente ultrapassado.
Depende por onde andas e a fazer o quê 🙂
O uso do porto de valor numérico seguinte é apenas coincidência, não conheço regra que o imponha. O porto a usar no canal de dados do lado do cliente é determinado pelo sistema operativo e não é propriamente aleatório, é um disponível que este identifique na sua gama de “ephemeral port range” (por omissão de 1024 a 4999 ou nos sistemas mais recentes, todos os acima de 1024 inclusive). Este valor, junto com o endereço IP a que o servidor se deve ligar é indicado no comando PORT quando estiver em uso o modo ativo.
O porto usado no canal de dados do lado do servidor é para o modo ativo o de valor numérico anterior ao usado na ligação inicial (tipicamente control=21, dados=20).
Em modo passivo o porto destino da ligação ao servidor é também um qualquer (não tem relação direta com o usado para controlo) disponibilizado pelo sistema operativo do seu “ephemeral port range” e é indicado ao cliente em resposta ao comando PASV