Conheça as diferenças entre o modo FTP ativo e passivo

15 Comentários

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.

FTP

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.

FTP Ativo

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):

  1. O cliente abre o canal de comandos através do porto 1500
  2. Envia o comando PORT para dirigido ao porto 21 do servidor
  3. O servidor confirma a ligação do canal de comandos
  4. Abre o canal de dados na porto 20 para o cliente no porto 1501
  5. O cliente confirma a ligação pelo canal de dados
  6. 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.

FTP Passivo

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):

  1. O cliente abre o canal de comandos através do porto 1500
  2. Envia o comando PASV para o servidor dirigido ao porto 21
  3. O comando altera a transmissão para o modo passivo
  4. Através do canal de comandos, o servidor envia ao cliente o porto que irá escutar o canal de dados, por exemplo 2345
  5. O cliente abre o canal de dados no porto 1501 para o porto 2345 do servidor
  6. O servidor confirma a ligação do canal de dados
  7. 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.

Comentários

15

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Jose Baptista
    Jose Baptista

    Pplware soma e segue. Excelente artigo Pedro.

    1. Avatar de Não Interessa
      Não Interessa

      “Por Diogo Gaspar para Pplware.com”

    2. Avatar de José Rodrigues
      José Rodrigues

      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 😉

    3. Avatar de Jose Baptista
      Jose Baptista

      Sorry!!! Parabéns Diogo.

  2. Avatar de Janito
    Janito

    Uma dúvida rápida: o que se faz em ambos os processos é um 3 way handshake?

    1. Avatar de Joao V.
      Joao V.

      FTP corre sobre TCP logo tem sempre que fazer o 3way handshake.

  3. Avatar de José Fonseca
    José Fonseca

    Muito interessante e esclarecedor.

  4. Avatar de Rui Pedro
    Rui Pedro

    Muito bem , parabés

  5. Avatar de Alexandre M.
    Alexandre M.

    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.

    1. Avatar de Miguel Ribeiro
      Miguel Ribeiro

      Sem abrir os Portos no Router é complicado.
      Eu diria que näo, mas talvez alguém saiba de uma maneira.

      1. Avatar de José Rodrigues
        José Rodrigues

        Duh.. apontas o ftp server para uma porta já aberta..

  6. Avatar de chino
    chino

    FTP é um sistema completamente ultrapassado.

    1. Avatar de José Rodrigues
      José Rodrigues

      Depende por onde andas e a fazer o quê 🙂

  7. Avatar de Pedro Ribeiro
    Pedro Ribeiro

    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