FTP: Um Protocolo da Camada de Aplicação Baseado no TCP – Parte II
Esta série de tutoriais apresenta um estudo sobre o protocolo FTP (File Transfer Protocol). Os tutoriais
foram escritos pelo colaborador angolano do portal Teleco Paulo Francisco António, em ortografia angolana.
Este segundo tutorial faz uma introdução inicial sobre o protocolo FTP, e apresenta detalhes dos comandos e
da forma de comunicação.
Paulo Francisco António
Curso Médio de Telecomunicações, no Instituto Nacional de Telecomunicações (ITEL). Actualmente é
Estudante de Engenharia Informática da Universidade Católica de Angola.
Trabalhou na Teta & Teta Informática e Consultoria Lda., como Operador Profissional de Computador, na
escanagem, correcção e reintrodução de dados dos Diários da República para inserção no programa de
Gestão da Legislação Angolana para o BNA-LEXMAN durante 3 anos.
Também trabalhou como colaborador na Área Técnica da Empresa Teta & Teta Informática e Consultaria
Lda., em Montagem e Manutenção de PC’s.
Actualmente trabalha na Biblioteca da Universidade Católica de Angola (BUCAN) como Técnico de
Porbase.
Email: [email protected]
Categoria: Banda Larga
Nível: Introdutório
Enfoque: Técnico
Duração: 15 minutos
Publicado em: 04/02/2008
1
FTP II: Introdução
O TCP é um dos protocolos mais versáteis da Internet dada as suas funcionalidades, sendo considerado
como um sistema de 4 camadas.
A camada de aplicação lida com detalhes de aplicações particulares. Existem muitas aplicações TCP/IP que
quase sempre todas as implementações proporcionam, tais como: Telnet para acesso remoto, FTP para
transferência de ficheiros e SNMP que permite recolher informação sobre todos os componentes que estão
na rede como switches, routers, bridges e os computadores ligados em rede.
Neste trabalho debruçar-me-ei especificamente sobre o FTP (protocolo de transferência de ficheiros).
Historicamente bem mais antigo, o FTP surgiu com o sistema operacional Unix no início dos anos 70, e ainda
é bastante utilizado pois o servidor é de fácil instalação e manutenção.
O FTP é uma aplicação frequentemente usada, sendo padrão da Internet para transferência de ficheiros.
Devemos ser cautelosos de modos a diferenciar entre o protocolo de transferência, que é o que o FTP
proporciona e o acesso a ficheiros, o que é proporcionado por aplicações como NFS (Network File System –
Sistema de Arquivos em Rede).
A transferência de ficheiro fornecida pelo FTP copia um ficheiro completo de um sistema para outro. Para
usar FTP é necessário uma conta de login num servidor, ou deve-se usar FTP com um servidor que permite
FTP Anónimo.
Como o telnet, FTP foi concebido desde o princípio para trabalhar entre hosts diferentes, executando
sistemas operativos diferentes, usando conjunto de caracteres. Todavia, o telnet alcançou heterogeneidade.
O protocolo de transferência de arquivos da internet, FTP (File Transfer Protocol), foi desenvolvido com o
objectivo de transferir arquivos de maneira eficiente e confiável entre dois computadores na rede, e através
disto incentivar o compartilhamento de arquivos entre diferentes maquinas, escondendo do usuário as
diferenças dos sistemas de arquivos entre as maquinas. A RFC 959 é actualmente o documento oficial que
dita seus padrões.
Outrossim neste opúsculo abordarei de forma exaustiva o FTP e todas as questões atinentes a transferência
de arquivos na web.
Neste tutorial parte II abordarei:
A Transferência de dados cliente-servidor: Modo Activo e Modo Passivo;
A Transferência de dados servidor-servidor;
A Interface do usuário;
O FTP anónimo e sua configuração;
O FTP e filtros de pacotes: Modo Activo e Modo Passivo;
Os Servidores FTP e a sua configuração;
As Considerações Finais.
2
FTP II: Transferências de Dados
Transferência Cliente – Servidor
Nela, tanto a transferência de dados quanto a comunicação de controlo acontecem entre o cliente e o
servidor. Pode ocorrer em modo passivo ou activo, dependendo se a conexão de dados é originada a partir
do cliente ou do servidor.
Modo Activo
Neste processo, o cliente faz a conexão de controlo na porta 21 (valor padrão) do servidor utilizando uma
porta genérica sua (N, acima de 1024). Ele também envia ao servidor, por esta conexão, a porta em que
ficará escutando por uma conexão de dados (porta N+1, acima de 1024). O comando utilizado para informar
o servidor é PORT ip4, ip3, ip2, ip1, p2, p1, sendo os primeiros quatro parâmetros identificadores do
número IP do cliente e os dois últimos, da porta do mesmo.
ip4 - representação decimal do 1º byte mais significativo;
ip3 - representação decimal do 2º byte mais significativo;
ip2 - representação decimal do 3º byte mais significativo;
ip1 - representação decimal do byte menos significativo;
p2 - representação decimal do byte mais significativo;
p1 - representação decimal do byte menos significativo.
Então o servidor faz a conexão de dados na porta N+1, passada pelo cliente, utilizando sua porta 20. Esta
conexão será usada para transferência de dados nos dois sentidos, tanto uploads quanto downloads.
Modo Passivo
Com este processo, o estabelecimento das conexões de controlo e de dados ficam a cargo do cliente. Para
isso, inicialmente o cliente estabelece a conexão de controlo com a porta 21 do servidor, utilizando sua porta
N, maior que 1024. Através da conexão de controlo, o cliente informa ao servidor que a conexão será de
forma passiva através do comando PASV.
O servidor escolhe uma porta maior que 1024, passa a escuta-la e a informa para o cliente. Para isto o
servidor utiliza o mesmo comando PORT ip4, ip3, ip2, ip1, p2, p1, mas desta vez o número IP e a porta
informada são do servidor e não do cliente. O cliente se conecta, utilizando a porta N+1, maior que 1024, à
porta passada pelo servidor e a conexão de dados é estabelecida.
Transferência Servidor – Servidor
Neste tipo de transferência, temos um Interpretador de protocolo do lado cliente conectando-se a dois
servidores diferentes. Ele controla os dois servidores (através de uma conexão de controlo com cada um) e
comanda uma transferência de dados entre esses servidores, conforme modelo na figura 1.
3
Figura 1: Entidades envolvidas em uma transferência servidor – servidor.
As conexões de controlo são estabelecidas entre o cliente e os servidores do modo usual. Após isso deve-se
configurar os servidores para que esses estabeleçam a conexão de dados entre si. Isto é feito utilizando-se o
comando SOCK host socket, que especifica com qual máquina (host) e porta (socket) será estabelecida a
conexão de dados.
Feito isso devemos fazer com que um dos servidores fique aceitando conexões, através do comando PASV.
Então finalmente podemos utilizar os comandos que irão realizar a transferência propriamente dita (STOR,
RTRV, etc).
Como exemplo, suponha que queremos transferir dados do servidor A para o servidor B, utilizando a porta
10000 em ambos os lados. Devemos utilizar a seguinte sequencia de comandos:
Tabela 1: Sequencia de comandos.
Servidor A
Servidor B
SOCK B 10000
SOCK A 10000
PASV
STOR
RTRV
4
FTP II: Interface do Usuário
Interface do Usuário
Exemplo 1
A maioria dos sistemas operacionais oferecem uma interface do usuário para acessar os serviços de FTP. A
interface lembra ao usuário que um comando de entrada apropriado é esperado. Após o usuário digitar uma
linha, a interface do FTP lê o comando na linha e o modifica para o comando FTP correspondente. A tabela
2 mostra os comandos da interface do usuário FTP UNIX. Alguns comandos podem ser abreviados, contanto
que não provoquem ambiguidade.
Tabela 2: Lista de comandos FTP ou UNIX.
Comandos
!, $, account, append, ascii, bell, binary, bye, case, cd, cdup, close, cr, delete, debug, dir,
discount, form, get, glob, hash, help, lcd, ls, macdef, mdelete, mdir, mget, mkdir, mls, mode,
mput, nmap, ntrans, open, prompt, proxy, sendport, put, pwd, quit, quote, recv, remotehelp,
rename, reset, rmdir, runique, send, status, struct, sunique, tenex, trace, type, user, verbose,?
Exemplo 2
Mostramos alguns dos comandos da interface do usuário que realizam a tarefa proposta no Exemplo 1. As
entradas realizadas pelo usuário são mostradas em negrito. Como pode ser visto abaixo, alguns dos
comandos são fornecidos automaticamente pela interface. O usuário recebe um prompt e entra somente com
os argumentos.
Figura 2: Exemplo 2.
FTP Anónimo
Para usar os serviços FTP, um usuário precisa de uma contra (user name) e uma senha (password)
cadastrados no servidor remoto. Alguns sites possuem um conjunto de arquivos para acesso público. Para
5
acessar tais arquivos, um usuário não necessita de conta ou senha particulares. Em vez disso, o usuário pode
usar o anonimous como conta e guest como senha.
O acesso do usuário ao sistema é muito limitado. Alguns sites permitem aos usuários anónimos somente um
subconjunto de comandos FTP. Por exemplo, a maioria dos sites permite aos usuários copiarem arquivos
(downloading), mas não permite a navegação através da estrutura de directórios.
Exemplo 3
Abaixo temos um exemplo de acesso usando FTP anónimo. Conectamos à internet, onde desejamos acessar
os arquivos públicos.
Figura 3: Exemplo 3.
Configuração do Serviço de FTP para Acesso Anónimo
Se o servidor FTP tiver por finalidade simplesmente ser um repositório de documentos de domínio público
que podem e devem ser pesquisados pela empresa toda (pela intranet), ou pelo mundo (através da internet),
a simples configuração para permitir somente conexões anónimas será o suficiente [1].
Para configurar o Serviço FTP de modo a permitir somente conexões anónimas, siga estas etapas:
1.
2.
3.
4.
5.
Abra o Gerenciador dos Serviços de Informações da Internet da Microsoft ou o snap-in do IIS.
Expanda Nome_do_servidor, em que Nome_do_servidor é o nome do servidor.
Expanda FTP Sites.
Clique com o botão direito em Default FTP Site e clique em Properties.
Clique na guia Security Accounts.
6
Figura 4: Propriedades de Segurança de Contas de Acesso.
6. Clique para marcar as caixas de selecção Allow anonymous connections (se já não estiver
seleccionada) e Allow only anonymous connections. Ao clicar para seleccionar a caixa de
selecção Allow only anonymous connections, você configura o Serviço FTP para permitir
somente conexões anónimas. Os usuários não podem conectar-se usando nomes de usuário e
senhas.
7. Clique na guia Home Directory.
8. Clique para marcar as caixas de selecção Read e Log Visits (se já não estiverem marcadas) e
clique para desmarcar a caixa de selecção Write (se já não estiver desmarcada).
9. Clique em OK.
10. Feche o Gerenciador dos Serviços de Informações da Internet da Microsoft ou o snap-in do
IIS.
O servidor FTP está configurado para aceitar solicitações de entrada FTP. Copie ou mova os arquivos que
deseja tornar disponível para acesso para a pasta de publicação em FTP. A pasta padrão é unidade:\Inetpub
\Ftproot, onde unidade é a unidade na qual o IIS está instalado.
[1] www.juliobattisti.com.br: Parte 4 – Serviço de FTP – Parte 1.
7
FTP II: Filtros de Pacotes
O facto das conexos de dados no protocolo FTP não terem endereços nem sentidos (qual lado as
estabelecem) fixos implica algumas complicações na configuração de servidores e clientes FTP através de
filtros de pacotes.
Nesta secção vamos mostrar algumas configurações que devem ser feitas para permitir o seu funcionamento.
Para a conexão de controlo as regras são simples, no filtro do lado servidor temos:
1. Repassar os pacotes destinados ao servidor FTP na porta 21, originados de qualquer endereço IP e
porta maior que 1023 (SYN, ACK e dados).
2. Repassar os pacotes originários do servidor FTP, porta 21, com destino à qualquer endereço IP e porta
maior que 1023 (somente ACK e dados).
E no lado cliente:
1. Repassar os pacotes destinados a qualquer endereço IP, porta 21, originados de qualquer endereço IP
da rede interna e porta maior que 1023 (SYN, ACK e dados).
2. Repassar os pacotes originários de qualquer endereço IP, porta 21, com destino à qualquer endereço
IP da rede interna e porta maior que 1023 (somente ACK e dados).
Já para a conexão de dados as regras variam conforme o modo de operação, conforme veremos a seguir.
Modo Activo
Quando temos operações em modo activo o filtro do lado cliente deverá ter regras para permitir que sua
máquina aceite conexões externas para que o servidor possa iniciar a conexão de dados.
Essas regras são mostradas a seguir. Lado servidor:
1. Repassar os pacotes originários de qualquer endereço IP, porta maior que 1023, com destino ao
servidor FTP, porta 20 (ACK e dados).
2. Repassar os pacotes destinados a qualquer endereço IP, porta maior que 1023, originados do servidor
FTP, porta 20 (SYN, ACK e dados).
Lado cliente:
1. Repassar os pacotes originários de qualquer endereço IP, porta 20, com destino à qualquer endereço
IP da rede interna e porta maior que 1023 (SYN, ACK e dados).
2. Repassar os pacotes destinados a qualquer endereço IP, porta 20, originados de qualquer endereço IP
e porta da rede interna (ACK e dados).
A regra número 1 do lado cliente o coloca num cenário muito exposto do ponto de vista da segurança.
Modo Passivo
No modo passivo o filtro no lado servidor terá que aceitar todas as conexões nas portas acima de 1023, pois
estas poderão o ser utilizadas pelo serviço de FTP. Isto é implementado através das regras a seguir. Lado
servidor:
8
1. Repassar os pacotes originários de qualquer endereço 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 endereço IP, porta maior que 1023, originados do servidor
FTP, porta maior que 1023 (ACK e dados).
Lado cliente:
1. Repassar os pacotes originários de qualquer endereço IP da rede interna, porta maior que 1023, com
destino à qualquer endereço IP porta maior que 1023 (SYN, ACK e dados).
2. Repassar os pacotes destinados a qualquer endereço IP da rede interna, porta maior que 1023,
originados de qualquer endereço IP e porta maior que 1023 (ACK e dados).
Esta política torna o cenário bem inseguro no lado servidor. Para reduzir este problema, costuma-se
configurar o serviço de FTP para utilizar uma pequena faixa de portas acima de 1024 liberando apenas essa
faixa no filtro.
9
FTP II: Servidores
Antes que houvesse uma WWW, o FTP fornecia um meio útil de movimentar arquivos entre computadores
na Internet. Os grandes arquivamentos FTP de software Windows e Macintosh na University of Michigan,
Washington University em St. Louis e em outras partes permanecem entre os líderes da Internet,
exactamente por serem tão úteis.
É possível configurar facilmente um servidor FTP para uso interno ou externo. O serviço FTP é um óptimo
complemento para a WWW; às vezes, os usuários querem apenas descarregar um arquivo, como um patch
ou uma versão demo de um programa, e um FTP é óptimo para isso.
Você pode achar estranho ter de se preocupar com FTP quando outras ferramentas de transferência de
arquivos, como NFS UNIX ou as unidades de rede compartilhadas Windows, oferecem uma interfacepadrão parecida com o restante do sistema operacional.
Aqui uma palavra que resume tudo: interoperabilidade. Os clientes usando FTP podem puxar arquivos de
seu site usando qualquer coisa, desde América Online até um supercomputador Cray, e tudo entre eles.
Além disso, você pode facilmente ser o host de um servidor FTP sobre qualuqer coisa, desde um antigo 386
exectuando Linux até um engenhoso servidor Web Silicon Graphics.
A maior parte dos arquivamentos da Internet, inclusive os fornecidos por grandes empresas e universidades,
oferecem acesso anónimo - qualquer um pode fazer logo n e buscar arquivos (a maior parte dos sites evita
que usuários anónimos carreguem arquivos por óbvias razões de insegurança). Muitos sites também
fornecem acesso não-anónimo; esses sites exigem que você tenha uma senha e nome de usuário para usá-los,
exactamente como ao fazer logo n na telnet [2].
Configuração do Servidor FTP
Edite o arquivo /etc/vsftpd.conf e descomente as seguintes linhas:
Permitindo usuário anónimo FTP.
#anonymous_enable=YES
Ativando o acesso a usuários que estão no /etc/passwd.
#local_enable=YES
Ativando o acesso a escrita nos directórios do users.
#write_enable=YES
Default umask para usuários locais é 077. Você pode mudar para 022.
#local_umask=022
Permitindo usuário anónimo FTP fazer upload de arquivos. Isto apenas terá efeito se o global write enable
estiver ativado. Você, obviamente, terá de criar um directório permitindo a escrita do usuário FTP.
#anon_upload_enable=YES
Permitindo usuário anónimo FTP criar novos directórios.
#anon_mkdir_write_enable=YES
10
Ativando mensagens de directórios – mensagens são dadas aos usuários remotos quando eles entram em um
certo directório.
#dirmessage_enable=YES
Ativando logging de uploads/downloads.
#xferlog_enable=YES
Tendo certeza que a porta de transferência de dados é a 20.
#connect_from_port_20=YES
Se desejar, você pode permitir que os arquivos baixados do usuário anónimo tenham como dono um usuário
diferente.
#chown_uploads=YES
#chown_username=whoever
Escolhendo o arquivo de logs do vsftpd.
#xferlog_file=/var/log/vsftpd.log
Mudando o formato dos arquivos de log.
xferlog_std_format=YES
Mudando o valor default de timeout para sessão e conexão.
#idle_session_timeout=600
#data_connection_timeout=120
Alterando o nome "Welcome to blah FTP service" para o nome do seu servidor ex: FTP Server.
#ftpd_banner=Welcome to blah FTP service.
Fazendo com que os usuários fiquem presos no seu home.
chroot_local_user=YES
Para todos os acessos ficarem gravados no /var/log/messages.
syslog_enable=YES
Para pegar a data do sistema.
use_localtime=YES
Se esta opção for ativada o vsftpd ira ler uma lista de nome que esta na opção do userlist_file. Se o usuário
que está tentando acessar o sistema tiver o nome neste arquivo, terá seu acesso negado antes de ser
perguntado a senha do mesmo.
#chroot_list_enable=YES
Esse arquivo diz ao vsftpd quais usuários que não poderão acessar o sistema.
#chroot_list_file=/etc/vsftpd.chroot_list
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=yes
11
#chroot_list_enable=YES
#(default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
[2] ZACKER, Craig, e DOYLE, Paul, Redes de Computadores Configuração, Manutenção e Expansão, São
Paulo, Makron Books, 2000, p. 817.
12
FTP II: Considerações Finais
Como guisa de conclusão apraz-me dizer o seguinte:
O FTP só permite a transferência de arquivos completos, não permitindo enviar partes de arquivos.
O File Transfer Protocol (FTP) é uma aplicação cliente-servidor TCP/IP que permite copiar arquivos
entre hosts da rede.
FTP requer duas conexões para transferência de dados: uma conexão de controlo e uma conexão de
dados.
FTP emprega ASCII para comunicação entre sistemas dissimilares.
Antes da transferência de arquivos, o tipo de arquivo, a estrutura de dados e o modo de transmissão
são definidos pelo cliente através da conexão de controlo.
As respostas são enviadas do servidor ao cliente durante o estabelecimento da conexão.
Há três tipos de transferência de arquivo:
a. Um arquivo é baixado do servidor para o cliente. Isto é denominado donwloading de arquivo.
b. Um arquivo do cliente é copiado no servidor. Isto é denominado uploading de arquivo.
c. Uma lista de directório ou nomes de arquivos é enviada do servidor para o cliente.
A maioria dos sistemas operacionais fornece uma interface amigável entre o FTP e o usuário.
O FTP anónimo fornece um método de acesso anónimo a arquivos públicos da Internet.
Tanto o servidor FTP como o servidor FTP devem ser previamente instalados e configurados,
cumprindo todos os passos acima indicados para que a transferência de ficheiros seja eficiente e
eficaz.
O FTP se baseia essencialmente no envio de comandos, os quais sempre geram uma resposta por parte
do servidor.
O serviço FTP poderá ter várias contas. Cada uma é caracterizada por:
1. O nome do servidor (host-name). Utilize sempre ftp://ftp.seudominio.com.
2. O nome de utilizador (login ou User-ID).
3. A password (senha).
As contas são indispensáveis ao FTP, sobretudo porque permitem apenas dar acesso só a uma parte do
seu espaço em disco no servidor web.
Em suma, o FTP é uma forma bastante rápida e versátil de transferir arquivos sendo uma das mais usadas na
internet. Outrossim é um dos meios mais comum de se copiar arquivos de um lugar para outro na Internet.
Referências
FOUROZAN, Behrouz A. Comunicação de Dados e Redes de Computadores. 3ª ed. São Paulo: Bookman,
2007.
MONTEIRO, Edmundo, e BOAVIDA, Fernando. Engenharia de Redes Informáticas. 2ª ed. Lisboa: FCA,
2000.
GOUVEIA, José. Hardware para PCs e Redes. Lisboa: FCA, 1999.
JÚNIOR, José Helvécio Teixeira e Outros. Redes de Computadores: Serviços, Administração e
Segurança. São Paulo: Makron Books, 1999.
ZACKER, Craig. Redes de Computadores: Configuração e Manutenção e Expansão. São Paulo: Makron
13
Books, 2000.
GOUVEIA, José, e MAGALHÃES, Alberto. Redes de Computadores: Curso Completo. 3ª ed. Lisboa:
FCA, 2005.
STEVENS, W. Richard. TCP/IP Illustrated: The Protocols. Massachusetts: Addison-Wesley, 1994.
KOMAR, Brian. Sam Teach Yourself: TCP/IP Network Administration in 21 days. Indiana: Sams, 1998.
BLANK, Andrew G. TCP/IP Jumpstart. San Francisco: Sybex, 1990.
TANEMBAUM, Andrew S. Redes de Computadores. 3ª ed. São Paulo: Campus, 1999.
MORIMOTO, Carlos E. Dicionário de Termos de Informática, McGraw-Hill, São Paulo, 2000.
TUTORIAIS. FTP Site Authentication in IIS 6.0. [LINK]
TUTORIAIS. Configuring FTP Site Properties. [LINK]
14
FTP II: Teste seu Entendimento
1. O processo através do qual o arquivo do cliente é enviado ao servidor chama-se:
Trial version.
Timeout.
Uploading.
2. O FTP anónimo fornece um método de acesso anónimo a arquivos:
Públicos da Internet.
Privados.
Ocultos e restritos.
3. O facto das conexos de dados no protocolo FTP não terem endereços nem sentidos fixos implica
algumas complicações na configuração de servidores e clientes FTP através de:
Filtros de Sinais.
Filtros de Pacotes.
Filtros de Conexão.
15
Download

FTP: Um Protocolo da Camada de Aplicação Baseado no TCP