Você está na página 1de 7

Funcionamento do protocolo FTP

Joao Paulo Rechi Vita


Joao Eduardo Ferreira Bertacchi
25 de Abril de 2005

O que
e FTP?

O protocolo de transferencia de arquivos da internet, FTP (File Transfer


Protocol), foi desenvolvido com o objetivo de transferir arquivos de maneira
eficiente e confiavel entre dois computadores na rede, e atravees disto incentivar o compartilhamento de arquivos entre diferentes maquinas, escondendo
do usuario as diferencas dos sistemas de arquivos entre as maquinas.

Funcionamento do protocolo

Uma sessao FTP geralmente envolve os cinco elementos ilustrados na figura


abaixo (Figura1).
Interface com o usuario: aplicacao responsavel pela comunicacao entre o
usuario e o interpretador do protocolo.
Interpretador de protocolo do lado cliente (Client PI): atraves da conexao
de controle conversa com o interpretador de protocolo do lado servidor
(Server PI) e juntos controlam a transferencia. Tambem controla o
processo de transferencia de dados do cliente (Client DTP).
Interpretador de protocolo do lado servidor (Server PI): Conversa com o
Client PI para controlar a transferencia e controla o processo de transferencia de dados do servidor (Server DTP).

Figura 1: Entidades envolvidas em uma secao de FTP usual.


Processo de transferencia de dados do cliente (Client DTP): responsavel
a
pela comunicacao com o Server DTP atraves da conexao de dados.E
parte do cliente que realmente realiza transferencia de dados. Controla
tambem o sistema de arquivos local.
Processo de transferencia de dados do servidor (Server DTP): responsavel
pela comunicacao com o Client DTP e o sistema de arquivos remoto.
Durante uma sessao FTP, existirao duas conexoes separadas no nvel
de transporte, uma entre os interpretadores do protocolo e outra entre os
processos de transferencia de dados. A primeira e a conexao de controle,
que e bidirecional e baseada no protocolo telnet, utilizada para comandos
relativos ao controle da transferencia. A segunda e a conexao de dados,
tambem bidirecional e e por ela que os dados sao transferidos efetivamente.
As duas conexoes operam sobre o protocolo de transporte TCP. A conexao
de dados pode ser estabelecida entre um cliente e um servidor ou entre dois
servidores diferentes.

2.1

Transfer
encia cliente-servidor

Nela, tanto a tranferencia de dados quanto a comunicacao de controle acontecem entre o cliente e o servidor. Pode ocorrer em modo passivo ou ativo,
dependendo se a conexao de dados e originada a partir do cliente ou do
servidor.
2.1.1

Modo ativo

Neste processo, o cliente faz a conexao de controle na porta 21 (valor padrao)


do servidor utilizando uma porta generica sua (N, acima de 1024). Ele
tambem envia ao servidor, por esta conexao, a porta em que ficara escutando por uma conexo de dados (porta N+1, acima de 1024). O comando
utilizado para informar o servidor e PORT ip4,ip3,ip2,ip1,p2,p1, sendo
os primeiros quatro parametros identificadores do n
umero IP do cliente e os
dois u
ltimos, da porta do mesmo.
ip4 - representacao decimal do 1o byte mais significativo
ip3 - representacao decimal do 2o byte mais significativo
ip2 - representacao decimal do 3o byte mais significativo
ip1 - representacao decimal do byte menos significativo
p2 - representacao decimal do byte mais significativo
p1 - representacao decimal do byte menos significativo
Entao o servidor faz a conexao de dados na porta N+1, passada pelo
cliente, utilizando sua porta 20. Esta conexao sera usada para transferencia
de dados nos dois sentidos, tanto uploads quanto downloads.
2.1.2

Modo passivo

Com este processo, o estabelecimento das conexoes de controle e de dados


ficam a cargo do cliente. Para isso, inicialmente o cliente estabelece a conexao
de controle com a porta 21 do servidor, utilizando sua porta N, maior que
1024. Atraves da conexao de controle, o cliente informa ao servidor que a
conexao sera de forma passiva atraves do comando PASV. O servidor escolhe
uma porta maior que 1024, passa a escuta-la e a informa para o cliente. Para
3

Figura 2: Entidades envolvidas em uma transferencia servidor-servidor.


isto o servidor utiliza o mesmo comando PORT ip4,ip3,ip2,ip1,p2,p1,
mas desta vez o n
umero IP e a porta informada sao do servidor e nao do
cliente. O cliente se conecta, utilizando a porta N+1, maior que 1024, a`
porta passada pelo servidor e a conexao de dados e estabelecida.

2.2

Transfer
encia servidor-servidor

Neste tipo de transferencia, temos um Interpretador de protocolo do lado


cliente conectando-se a dois servidores diferentes. Ele controla os dois servidores (atraves de uma conexao de controle com cada um) e comanda uma
transferencia de dados entre esses servidores, conforme modelo na Figura 2.
As conexoes de controle sao estabelecidas entre o cliente e os servidores
do modo usual. Apos isso deve-se configurar os servidores para que esses
estabelecam a conexao de dados entre si. Isto e feito utilizando-se o comando
SOCK host socket, que especifica com qual maquina (host) e porta (socket)
sera estabelecida a conexao de dados. Feito isso devemos fazer com que um
4

dos servidores fique aceitando conexoes, atraves do comando PASV. Entao


finalmente podemos utilizar os comandos que irao realizar a transferencia
propriamente dita (STOR, RTRV etc.).
Como exemplo, suponha que queremos trasferir dados do servidor A para
o servidor B, utilizando a porta 10000 em ambos os lados. Devemos utilizar
a seguinte sequencia de comandos:
Servidor A
SOCK B 10000
PASV
STOR

Servidor B
SOCK A 10000
RTRV

FTP e filtros de pacotes

O fato das conexoes de dados no protocolo FTP nao terem enderecos nem
sentidos (qual lado as estabelecem) fixos implica algumas complicacoes na
configuracao de servidores e clientes FTP atras de filtros de pacotes. Nesta
secao vamos mostrar algumas configuracoes que devem ser feitas para permitir o seu funcionamento. Para a conexao de controle as regras sao simples,
no filtro do lado servidor temos:
1. Repassar os pacotes destinados ao servidor FTP na porta 21, originados
de qualquer endereco IP e porta maior que 1023 (SYN, ACK e dados).
2. Repassar os pacotes originarios do servidor FTP, porta 21, com destino
a` qualquer endereco IP e porta maior que 1023 (somente ACK e dados).
E no lado cliente:
1. Repassar os pacotes destinados a qualquer endereco IP, porta 21, originados de qualquer endereco IP da rede interna e porta maior que 1023
(SYN, ACK e dados).
2. Repassar os pacotes originarios de qualquer endereco IP, porta 21, com
destino a` qualquer endereco IP da rede interna e porta maior que 1023
(somente ACK e dados).
Ja para a conexao de dados as regras variam conforme o modo de operacao,
conforme veremos a seguir.
5

3.1

Modo ativo

Quando temos operacoes em modo ativo o filtro do lado cliente devera ter
regras para permitir que sua maquina aceite conexoes externas para que o
servidor possa iniciar a conexao de dados. Essas regras sao mostradas a
seguir. Lado servidor:
1. Repassar os pacotes originarios de qualquer endereco IP, porta maior
que 1023, com destino ao servidor FTP, porta 20 (ACK e dados).
2. Repassar os pacotes destinados a qualquer endereco IP, porta maior
que 1023, originados do servidor FTP, porta 20 (SYN, ACK e dados).
Lado cliente:
1. Repassar os pacotes originarios de qualquer endereco IP, porta 20, com
destino a` qualquer endereco IP da rede interna e porta maior que 1023
(SYN, ACK e dados).
2. Repassar os pacotes destinados a qualquer endereco IP, porta 20, originados de qualquer endereco IP e porta da rede interna (ACK e dados).
A regra n
umero 1 do lado cliente o coloca num cenario muito exposto do
ponto de vista da seguranca.

3.2

Modo passivo

No modo passivo o filtro no lado servidor tera que aceitar todas as conexoes
nas portas acima de 1023, pois estas poderao o ser utilizadas pelo servico de
FTP. Isto e implementado atraves das regras a seguir. Lado servidor:
1. Repassar os pacotes originarios de qualquer endereco IP, porta maior
que 1023, com destino ao servidor FTP e porta maior que 1023 (SYN,
ACK e dados).
2. Repassar os pacotes destinados a qualquer endereco IP, porta maior
que 1023, originados do servidor FTP, porta maior que 1023 (ACK e
dados).
Lado cliente:
6

1. Repassar os pacotes originarios de qualquer endereco IP da rede interna,


porta maior que 1023, com destino a` qualquer endereco IP porta maior
que 1023 (SYN, ACK e dados).
2. Repassar os pacotes destinados a qualquer endereco IP da rede interna,
porta maior que 1023, originados de qualquer endereco IP e porta maior
que 1023 (ACK e dados).
Esta poltica torna o cenario bem inseguro no lado servidor. Para reduzir
este problema, costuma-se configurar o servico de FTP para utilizar uma
pequena faixa de portas acima de 1024 liberando apenas essa faixa no filtro.

Você também pode gostar