O FTP é um dos meios mais comuns de se copiar arquivos de um lugar para outro na Internet. É bastante antigo, sendo suportado até por sistemas Mainframe. Sendo tão antigo, é um protocolo muito simples e não foi projetado para atender os requisitos de segurança que se fazem necessários nos dias atuais. Por isso mesmo, precisamos entender o seu funcionamento (pelo menos o básico) para podermos ajustar o ambiente de rede, configurando a disponibilidade e a segurança do processo.
A porta 21 é utilizada para estabelecer e manter a comunicação entre o cliente e o servidor. Essa sessão também é conhecida como Control Channel. É ela quem verifica se a conexão com o servidor ainda existe.
A porta 20 é utilizada para a transferência dos dados (arquivos), propriamente dita. É conhecida também como Data Channel. É nela que é feito o controle do fluxo e integridade dos dados.
Para utilizar o FTP, a estação cliente realiza uma conexão com o servidor FTP na porta 21. Após a conexão estabelecida, para cada arquivo transferido estabelece-se uma nova conexão, chamada de conexão de dados. Por padrão, a porta TCP 21 é usada no servidor para controlar a conexão, mas a conexão de dados é determinada pelo método que o cliente opta quando se conecta ao servidor. Existem 2 métodos para a conexão:
Conexões FTP de modo ativo são algumas vezes chamadas de conexões "gerenciadas pelo cliente" porque o cliente envia um comando PORT ao servidor, usando a conexão do controle. O comando solicita ao servidor que estabeleça uma conexão de dados da porta TCP 20 no servidor até o cliente com a porta TCP especificada pelo comando PORT.
Conexões FTP de modo passivo são às vezes chamadas de conexões "gerenciadas pelo servidor" porque, depois que o cliente emite o comando PASV, o servidor responde com uma de suas portas temporárias usadas como a porta do servidor na conexão de dados. Depois que um comando de conexão de dados é emitido pelo cliente, o servidor se conecta ao cliente usando a porta imediatamente acima da porta do cliente na conexão do controle.
O problema que ocorre com mais freqüência no FTP pela Internet envolve a transferência de dados por servidor proxy, firewall ou dispositivo de conversão de endereços de rede (NAT). Em muitos casos, esses dispositivos de segurança de rede permitem que a conexão de controle seja estabelecida na porta TCP 21 (ou seja, o usuário faz o logon com êxito no servidor FTP); porém, quando o usuário tenta realizar uma transferência de dados do tipo DIR, LS, GET ou PUT, o cliente FTP aparentemente para de responder porque o dispositivo de segurança da rede bloqueia a porta de conexão de dados especificada pelo cliente. Se o dispositivo de segurança da rede der suporte a logs, você poderá verificar o bloqueio da porta consultando os logs de negação/rejeição do dispositivo de segurança.
O firewall com filtro de pacotes com base no estado da conexão consegue analisar todo o tráfego da conexão FTP, identificando qual o tipo de transferência que será utilizada (ativa ou passiva) e quais as portas que serão utilizadas para estabelecer a conexão. Sendo assim, todas as vezes que o firewall identifica que uma transferência de arquivos se realizará, é acrescentada uma entrada na tabela de estados, permitindo que a conexão seja estabelecida. As informações ficam armazenadas na tabela somente enquanto a transferência do arquivo é realizada.
Com FTP ativo, quando um usuário se conecta ao servidor FTP remoto e solicita informações ou um arquivo, o servidor FTP abre uma nova conexão com o cliente para transferir os dados. Esta é a chamada conexão de dados. Para iniciar, o cliente FTP escolhe uma porta aleatória para receber a conexão de dados, envia o número da porta escolhida para o servidor FTP e fica esperando uma conexão nessa porta. Então o servidor FTP inicia a conexão com o endereço do cliente na porta escolhida e transfere os dados. Isto se torna um problema para usuários atrás de um gateway NAT tentando se conectar a servidores FTP.
Por causa da forma como NAT funciona, o servidor FTP inicializa a conexão de dados se conectando ao endereço externo do gateway NAT na porta escolhida. A máquina fazendo NAT receberá o pedido, mas como não possui mapeamento para o pacote na tabela de estado, descartará o pacote sem entrega-lo ao cliente.
No modo FTP passivo, o cliente pede ao servidor que escolha uma porta aleatória para ouvir esperando a conexão de dados. O servidor informa ao cliente a porta escolhida e o cliente se conecta na porta para transferir os dados. Infelizmente, isto nem sempre é possível ou desejável, por causa da possibilidade do firewall em frente ao servidor FTP bloquear a conexão de dados em portas aleatórias.
*Ricardo Matuda é formado em Análise de Sistemas. Atualmente é DBA na ABC71 e um entusiasta da tecnologia de informações.
2 comentários :
Excelente explicação ! Parabéns pelo artigo !
Parabéns, pelo excelente artigo e postado de forma bem sucinta !
Postar um comentário
OBS: Os comentários enviados a este Blog são submetidos a moderação. Por isso, eles serão publicados somente após aprovação.
Observação: somente um membro deste blog pode postar um comentário.