NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
24 de novembro de 2000 | volume 4, número 6

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Configurando o FTP em Modo Passivo

Jean Carlo Faustino <>
Jacomo Dimmit Boca Piccolini <>

Rede Nacional de Ensino e Pesquisa (RNP)

Resumo
1. Introdução
2. Configuração no servidor de FTP
2.1 O Arquivo ftpaccess
2.2 Dica de configuração
2.3 Reinicialização do daemon
3.Configuração no firewall
3.2. Regras para FTP em modo passivo
3.3. Regra adicional
Referências bibliográficas
Apêndices
A. Dicas sobre flags de compilação
B. Dicas sobre os arquivos ftpaccess e ftpusers

Resumo

Este artigo pretende mostrar a implementação do protocolo FTP em modo passivo. O servidor utilizado é o wu-ftpd, que é um dos mais famosos servidores FTP. São ainda descritas as razões para a implementação, assim como o detalhamento do processo. O artigo ainda traz um apêndice com as configurações que envolvam aspectos de segurança em FTP.

^

1. Introdução

Configurar o serviço de FTP em modo passivo (passive mode) permite, ao administrador do sistema, delimitar o número (range) de portas pelas quais se dará a transferência dos dados. Isso representa um considerável incremento de segurança, não especificamente para o serviço de FTP, mas para a máquina que provê este serviço.

Ao tratarmos deste assunto, estamos considerando um servidor de FTP anônimo situado em uma rede que possui um firewall configurado para liberar o acesso apenas àquelas portas que correspondam aos serviços providos nesta rede.

Antes de iniciarmos a discussão sobre o modo passivo, vejamos como funciona o serviço de FTP em seu modo normal.

O funcionamento do FTP em modo normal

Figura 1 - O funcionamento do FTP em modo normal

Conforme podemos visualizar na figura acima, em uma conexão FTP comum, o cliente indica, aleatoriamente, a porta em que deseja que os dados sejam transferidos. No exemplo da figura, esta porta é a 5151.

Assim, seguindo a numeração indicada na figura: quando o cliente acessa o serviço de FTP (porta 21) de um servidor, ele indica para qual porta o servidor deverá lhe enviar os dados (no exemplo, esta é a porta 5151). Deste modo, quando o download/upload começar, o servidor enviará os dados (partindo da porta 20) para essa porta especificada pelo cliente.

O problema desse modo de funcionamento do FTP é que não é possível para o servidor saber o número da porta que o cliente solicitará para o envio dos dados, o que obriga o administrador a deixar todas as portas TCP abertas no firewall. Uma maneira de se contornar isso, é abrir apenas as portas altas (maiores que 1024). Mas, mesmo assim, esse cenário é muito propício a tentativas de ataques ou mesmo instalação de backdoors. Isto acarreta num trabalho extra na administração da máquina: atualizações de patches, correções de bugs, e configurações de segurança não somente do serviço que ele está provendo (no caso em questão, o FTP).

Vejamos, agora, o funcionamento do FTP em modo passivo.

O funcionamento do FTP em modo passivo

Figura 2 - O funcionamento do FTP em modo passivo

Como podemos ver na Figura 2, agora é o servidor que, no início da conexão, informa ao cliente por qual de suas portas TCP os dados serão enviados. Conforme sugere a orientação da seta, o início do processo de transferência é iniciado pelo cliente, ficando o servidor numa posição passiva.

Acompanhando a numeração desta última figura, observamos que, quando o cliente acessa o serviço de FTP (porta 20) de um servidor, a conexão já é estabelecida como “PASV” (passiva). Desta forma, é o servidor quem indica por qual porta os dados serão trocados  com o cliente (no exemplo, esta é a porta 3267).

Uma vez que as portas usadas na transferência de dados são definidas pelo servidor, pode-se também definir, no firewall (ou roteador), que apenas essas portas poderão ser acessadas de fora da rede. Deste modo, as tentativas de ataque restringem-se a um limite especificado pelo número de portas referentes ao serviço de FTP.

Embora o processo envolvido na conexão FTP se altere significativamente, a operação é transparente para o usuário - a menos que ele utilize um browser FTP que não aceite o modo passivo, o que não é o caso do Netscape e do FTP do UNIX. São poucos hoje em dia, os clientes FTP que não aceitam esse modo de comunicação com o servidor FTP.

A seguir, veremos como configurar um servidor de FTP em modo passivo e como configurar um firewall de modo a garantir que apenas as portas liberadas para o FTP estejam disponíveis para uma máquina cliente externa à rede. Adotaremos, no exemplo, o software wu-ftpd, como sendo o servidor de FTP, e um roteador Cisco, como solução de firewall.

As figuras acima foram elaboradas a partir de figuras presentes no livro “Building Internet Firewalls”.

Configurar o serviço de FTP em modo passivo (passive mode) permite, ao administrador do sistema, delimitar o número (range) de portas pelas quais se dará a transferência dos dados. Isso representa um considerável incremento de segurança, não especificamente para o serviço de FTP, mas para a máquina que provê este serviço.

Ao tratarmos deste assunto, estamos considerando um servidor de FTP anônimo situado em uma rede que possui um firewall configurado para liberar o acesso apenas àquelas portas que correspondam aos serviços providos nesta rede.

Antes de iniciarmos a discussão sobre o modo passivo, vejamos como funciona o serviço de FTP em seu modo normal.

O funcionamento do FTP em modo normal

Figura 1 - O funcionamento do FTP em modo normal

Conforme podemos visualizar na figura acima, em uma conexão FTP comum, o cliente indica, aleatoriamente, a porta em que deseja que os dados sejam transferidos. No exemplo da figura, esta porta é a 5151.

Assim, seguindo a numeração indicada na figura: quando o cliente acessa o serviço de FTP (porta 21) de um servidor, ele indica para qual porta o servidor deverá lhe enviar os dados (no exemplo, esta é a porta 5151). Deste modo, quando o download/upload começar, o servidor enviará os dados (partindo da porta 20) para essa porta especificada pelo cliente.

O problema desse modo de funcionamento do FTP é que não é possível para o servidor saber o número da porta que o cliente solicitará para o envio dos dados, o que obriga o administrador a deixar todas as portas TCP abertas no firewall. Uma maneira de se contornar isso, é abrir apenas as portas altas (maiores que 1024). Mas, mesmo assim, esse cenário é muito propício a tentativas de ataques ou mesmo instalação de backdoors. Isto acarreta num trabalho extra na administração da máquina: atualizações de patches, correções de bugs, e configurações de segurança não somente do serviço que ele está provendo (no caso em questão, o FTP).

Vejamos, agora, o funcionamento do FTP em modo passivo.

O funcionamento do FTP em modo passivo

Figura 2 - O funcionamento do FTP em modo passivo

Como podemos ver na Figura 2, agora é o servidor que, no início da conexão, informa ao cliente por qual de suas portas TCP os dados serão enviados. Conforme sugere a orientação da seta, o início do processo de transferência é iniciado pelo cliente, ficando o servidor numa posição passiva.

Acompanhando a numeração desta última figura, observamos que, quando o cliente acessa o serviço de FTP (porta 20) de um servidor, a conexão já é estabelecida como “PASV” (passiva). Desta forma, é o servidor quem indica por qual porta os dados serão trocados  com o cliente (no exemplo, esta é a porta 3267).

Uma vez que as portas usadas na transferência de dados são definidas pelo servidor, pode-se também definir, no firewall (ou roteador), que apenas essas portas poderão ser acessadas de fora da rede. Deste modo, as tentativas de ataque restringem-se a um limite especificado pelo número de portas referentes ao serviço de FTP.

Embora o processo envolvido na conexão FTP se altere significativamente, a operação é transparente para o usuário - a menos que ele utilize um browser FTP que não aceite o modo passivo, o que não é o caso do Netscape e do FTP do UNIX. São poucos hoje em dia, os clientes FTP que não aceitam esse modo de comunicação com o servidor FTP.

A seguir, veremos como configurar um servidor de FTP em modo passivo e como configurar um firewall de modo a garantir que apenas as portas liberadas para o FTP estejam disponíveis para uma máquina cliente externa à rede. Adotaremos, no exemplo, o software wu-ftpd, como sendo o servidor de FTP, e um roteador Cisco, como solução de firewall.

As figuras acima foram elaboradas a partir de figuras presentes no livro “Building Internet Firewalls”.

^

2. Configuração no servidor de FTP

Este artigo pressupõe que o serviço de FTP esteja previamente configurado, restringindo assim, sua abordagem apenas à configuração do modo passivo.

A configuração do serviço de FTP pode ser encontrada em artigo anteriormente publicado neste boletim - Configurando seu Servidor FTP de Maneira Segura (http://www.rnp.br/newsgen/9805/serv-ftp.html) - e o leitor poderá encontrar algumas dicas para as versões mais recentes, do software wu-ftpd, nos apêndices deste artigo.

^

2.1 O Arquivo ftpaccess

A configuração do modo passivo no wu-ftpd se faz pela simples inclusão de duas linhas, semelhantes às abaixo indicadas, no arquivo ftpaccess:

passive address 192.168.100.99 0.0.0.0/0
passive ports 0.0.0.0/0 7000 7200

Esses dois argumentos de configuração (passive address e passive ports) já eram previstos no arquivo ftpaccess do wu-ftpd, de modo que é possível consultá-los nas suas respectivas páginas de manual (man pages). Vejamos, porém, o significado de cada uma dessas linhas.

Pode-se observar que, em ambas as linhas, os argumentos são todos numéricos. Um desses argumentos é fixo nas duas linhas: 0.0.0.0/0. Ele representa todos os possíveis endereços IP da Internet. Vejamos a sua relação com os outros campos.

Na primeira linha, o argumento 192.168.100.99 indica o endereço IP do seu servidor. Dado o significado do 0.0.0.0/0, acima mencionado, essa linha de comando está indicando que o recurso em questão aplica-se a todos os hosts IP que acessarem o servidor FTP.

Na segunda linha temos, então, a definição do limite (range) de portas por onde os dados do FTP serão transmitidos. É esta linha que representa o benefício do modo de configuração passivo do servidor de FTP.

^

2.2 Dica de configuração

Em algumas implementações do modo passivo no wu-ftpd, é necessário alterar as permissões de acesso, conforme indicado na seguinte seqüência de comandos:

cd ~ftp/dev
chmod 666 tcp

^

2.3 Reinicialização do daemon

Tendo feito as alterações no arquivo de configuração do servidor de FTP  não se deve esquecer de reinicializar o daemon de FTP para que elas sejam ativadas.

^

3.Configuração no firewall

As regras abaixo ("access-list 120") dizem respeito aos pacotes que saem de uma rede local; enquanto as "access-list 110" referem-se aos pacotes que entram.

A primeira regra permite a saída de pacotes por todas as portas do servidor FTP; a segunda regra permite conexões à porta FTP e a última permite conexões à porta de dados do FTP e a qualquer outra porta maior que 1024.

access-list 120 permit tcp host 192.168.100.99 any log
access-list 110 permit tcp any host 192.168.100.99 eq FTP log
access-list 110 permit tcp any eq FTP-DATA any gt 1024 log

^

3.2. Regras para FTP em modo passivo

Partindo do exemplo anterior, a implementação do modo passivo se dá apenas pela substituição da última linha pela linha abaixo que libera o acesso às portas especificadas na cláusula range.

access-list 110 permit tcp any host 192.168.100.99 range 6900 7000 log

Portanto, as regras relativas a este servidor FTP, ficariam da seguinte forma:

access-list 120 permit tcp host 192.168.100.99 any log
access-list 110 permit tcp any host 192.168.100.99 eq FTP log
access-list 110 permit tcp any host 192.168.100.99 range 6900 7000 log

^

3.3. Regra adicional

É possível observar que a implementação do FTP em modo passivo é bastante simples e acrescenta inúmeras vantagens do ponto de vista de administração e segurança.

Uma vez implementada, esta solução facilita o controle sobre todos os acessos FTP, visto que estes estarão restritos a uma faixa específica. Esta facilidade se estende à elaboração de scripts para tratamento de log.

Convém ressaltar que a solução proposta pode ser implementada de diferentes formas e utilizando-se de outras combinações de firewall e de servidor FTP.

Sendo o serviço de FTP um dos mais comuns na Internet é de vital importância que o responsável pela sua administração mantenha-se sempre informado sobre alertas e atualizações do pacote.

^

Referências bibliográficas

[1] D. Brent Chapman and Elizabeth D. Zwicky, Building Internet Firewalls, Ed. 1, O'Reilly.

[2] Liliana Esther Velásquez Alegre Solha, Configurando seu Servidor FTP de Maneira Segura, NewsGeneration.

[3] FAQ Wu-ftpd, http://www.cetis.hvu.nl/~koos/wu-ftpd-faq.html

^

Apêndices

A. Dicas sobre flags de compilação

^

B. Dicas sobre os arquivos ftpaccess e ftpusers

Os arquivos de configuração, do servidor wu-ftpd, são os seguintes:

Segue um exemplo comentado de uma possível configuração para o arquivo ftpaccess.

class   all   real,guest,anonymous  *

limit   all   10   Any              /etc/ftpmsgs/msg.muitos
* limita a um máximo de 10 o total de conexões permitido, independente do seu tipo.

passive address 192.168.100.99 0.0.0.0/0
passive ports 0.0.0.0/0  6900 7000

* define quais são as portas que serão utilizadas pelo FTP passivo.

message /etc/ftpmsgs/msg.start  login
message .message                cwd=3D*

* define o arquivo que contém o banner de entrada.

compress yes local remote
tar  yes local remote

* define se o usuário pode utilizar de recursos de compressão.

loginfails 3
* especifica que o número máximo de tentativas de login será de 3.

passwd-check  rfc822 enforce
* utiliza a RFC822 para verificação da senha.

delete  no guest,anonymous         # delete permission?
overwrite no guest,anonymous         # overwrite permission?
rename   no guest,anonymous         # rename permission?
chmod  no guest,anonymous         # chmod permission?
umask   no guest,anonymous         # umask permission?

* relação de comandos que estão sendo negados aos usuários do FTP.

noretrieve /etc core /var/log /var/mail /var/adm
* relação de arquivos que não podem ser transferidos ou conteúdos dos diretórios.

banner /etc/ftpmsgs/msg.banner
* define qual o arquivo de banner de login. É a mensagem que aparece assim que um usuário acessa o FTP.

log commands real,commands
log transfers anonymous,real inbound,outbound

* define como será realizado o log. Neste caso, estamos logando os arquivos que são transferidos e os comandos utilizados.

log security
* define que se ocorrer uma tentativa de algo proibido pela configuração as violações de segurança são "logadas".

log syslog+xferlog
* define que ambos logs recebam informações simultâneas sobre as transferências.

deny-email mozilla@
deny-email IE30User@
deny-email IE40User@
deny-email IE50User@

* define os e-mails padrão que não são aceitos como senha.

timeout idle 300
* define o tempo sem utilização que termina a conexão. É importante se ter um valor baixo, pois pode ser utilizado para um overflow de conexões contra o servidor.

shutdown /etc/shutmsg
* define o arquivo que possui a mensagem de shutdown para aviso aos usuários.

email ftpmaster@<dominio.br
* define qual o e-mail de contato em caso de problemas.

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004