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
15 de maio de 1998 | volume 2, número 5

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Configurando seu Servidor FTP de Maneira Segura

Liliana Esther Velásquez Alegre Solha <>

Rede Nacional de Ensino e Pesquisa (RNP)

Introdução
A escolha de um servidor FTP
Características do servidor WU-FTP
Instalação e configuração do servidor FTP
Registro de logs, auditoria e monitoramento
Como configurar o seu servidor FTP anônimo
Dicas de configuração
Recomendações gerais
Considerações finais
Referências
Sites relacionados

O presente artigo apresenta algumas técnicas e procedimentos dos quais os administradores de redes podem se valer para tornar o seu servidor FTP mais seguro, principalmente se tratando de um servidor FTP público.

^

Introdução

Sem dúvida alguma o serviço de transferência de arquivos (FTP - File Transfer Protocol), é um dos serviços mais difundidos na comunidade Internet. Quem já não fez download da última versão do seu browser preferido ou não precisou, ao menos uma vez, disponibilizar um arquivo para um outro usuário? Pode-se afirmar, com toda certeza, que a resposta será: ninguém.

Pois bem, pelas mesmas razões que o serviço FTP é bastante conhecido, infelizmente, ele tende a sofrer abusos por parte de usuários mal intencionados. Abusos estes que compreendem desde utilizar os servidores como depósito de software ilegal, ou até mesmo como depósito de material pornográfico. Somado a isto, estes servidores, quando mal configurados, abrem brechas para que intrusos ganhem acesso ao sistema.

O presente artigo tem, como propósito principal, portanto, ensinar como os administradores podem defender-se destes tipos de abusos. Por um lado, alertando sobre as graves consequências que um servidor FTP mal configurado pode acarretar e, por outro lado, definindo uma configuração básica mínima a ser seguida que o tornará mais seguro.

Cabe ressaltar que, aspectos de segurança relacionados a autenticação, integridade de dados e confidencialidade, não serão abordados neste artigo.

^

A escolha de um servidor FTP

Falando em termos de UNIX, se pretende-se oferecer um serviço de transferência de arquivos (seja anônimo ou não), existem basicamente três possibilidades:

Este último servidor pode ser considerado como um dos servidores UNIX mais seguros, chegando até mesmo ser recomendado pelo CERT, instituição considerada uma autoridade em termos de segurança.

Embora os procedimentos e técnicas descritos ao longo deste artigo ajudem a instalar e configurar qualquer servidor FTP UNIX, será considerado, para fins de demonstração e exemplificação, o servidor que se acredita ser o mais indicado para sistemas com uma grande preocupação em segurança: o WU-FTPd.

^

Características do servidor WU-FTP

Dentre as funcionalidades que o servidor WU-FTP oferece, a nível de segurança, pode-se mencionar as seguintes:

^

Instalação e configuração do servidor FTP

A instalação do servidor WU-FTP é relativamente fácil, bastando seguir o passo-a-passo descrito no arquivo INSTALL, contido no pacote da sua distribuição (no caso, wu-ftpd-2.4.2-beta-16.tar.gz). Sendo assim, neste artigo, será dada uma maior ênfase à configuração do servidor FTP, que consiste, basicamente, em:

Excetuando-se a configuração do arquivo ftpconversions, que não está diretamente relacionado com a segurança do sistema, serão abordados todos os arquivos relacionados aos procedimentos acima mencionados. A configuração do sistema de logs e do servidor FTP anônimo recebem um destaque especial.

ARQUIVO /etc/inetd.conf

Independente do servidor FTP instalado, é preciso que ele (o daemon ftpd) seja inicializado sob o super daemon inetd. Este super daemon "ouve" as requisições nas portas respectivas (no caso do ftp, 20 e 21) e dispara o ftpd para atender tais requisições. Como o ftpd será executado, dependerá de como ele foi configurado neste arquivo.

Tipicamente, a entrada neste arquivo de configuração, correspondente ao ftpd padrão, é como segue:


ftp stream tcp nowait root /usr/sbin/ftpd ftpd -l

Uma vez que esta sintaxe já deve ser bastante familiar para muitos, a mesma não será explicada em detalhes, cabendo lembrar, unicamente, que o penúltimo campo indica o caminho absoluto do daemon ftp instalado. O que precisa ser feito, portanto, é substituir os campos necessários da linha acima de modo que, desta vez, seja executado o WU-FTP daemon com os seus respectivos parâmetros. Para tal, basta re-escrever a linha contendo o seguinte:


ftp stream tcp nowait root /usr/sbin/ftpd ftpd -laio

Neste caso, está-se assumindo que o novo daemon (WU-FTP), também conhecido como ftpd foi instalado no mesmo diretório que o ftpd padrão.

No exemplo dado, as opções -l, -a, -i e -o fazem com que as sessões sejam registradas ("logadas"), o uso do arquivo ftpaccess seja habilitado, as transferências para o servidor também sejam registradas, bem como aquelas feitas a partir do servidor. Estas opções foram consideradas sob a perspectiva de executar o servidor de uma maneira mais segura. Maiores detalhes podem ser obtidos através das man pages do WU-FTPd que acompanham o arquivo fonte (ftpd(8)).

ARQUIVO ftpaccess

Grande parte da configuração do servidor WU-FTP é feita através do arquivo ftpaccess . Dentre outras coisas, ele define as classes de usuários e a forma de acesso ao servidor que eles terão, controla as mensagens que serão mostradas aos usuários e define um sistema de logs bastante completo.

Não se pretende analisar as diversas diretivas que podem ser configuradas neste arquivo e muito menos detalhar quais os seus parâmetros, cabe ao leitor consultar as man pages correspondentes (ftpaccess(5)), contidas no pacote.

Através do link acima, pode-se obter um exemplo do conteúdo do arquivo ftpaccess.

A permissão de acesso deste arquivo deverá ser 600.

ARQUIVO ftpusers

O arquivo ftpusers contém uma lista de usuários que não podem acessar o servidor via FTP. Este arquivo deverá conter nomes de usuários relacionados ao sistema e não nomes de usuários comuns. O formato do arquivo é um nome de usuário por linha.

Exemplo de arquivo ftpusers:


root
bin
boot
daemon
ghest
nobody
operator
sys
uucp

Desta forma, usuários inescrupulosos não poderão, pelas vias normais, entrar nestas contas via FTP.

A permissão de acesso deste arquivo deverá ser 600.

ARQUIVO ftphosts

O arquivo ftphosts trabalha de maneira similar ao arquivo ftpusers, a diferença reside no fato de que com ele pode-se especificar quais usuários de quais máquinas têm a permissão de acesso bloqueada ou permitida.

É possível também usar wildcards e endereços IP de forma a permitir ou bloquear o acesso a domínios inteiros.

Exemplo de arquivo ftphosts:


allow nina *.cais.rnp.br
deny suspeito apinaje.pop-to.rnp.br

No exemplo acima, é permitido o acesso do usuário nina de qualquer máquina com domínio cais.rnp.br. O acesso a partir de outras máquinas é vedado. O acesso do usuário "suspeito" é negado a partir da máquina apinaje.pop-to.rnp.br.

Tome muito cuidado na ordem em que as diretivas allow e deny são colocadas. Diante de várias regras de acesso, será considerada sempre a que primeiro for satisfeita.

^

Registro de logs, auditoria e monitoramento

Monitorar os logs de qualquer novo serviço oferecido por um site faz parte das tarefas de um bom administrador. Não somente para verificar se os mecanismos de proteção estabelecidos realmente funcionam, mas também para garantir que este novo serviço não seja mal usado por usuários inescrupulosos.

Em particular, o servidor WU-FTP permite registrar informaçaões bastante úteis, tais como:

Existem diversas formas de obter estes registros:

^

Como configurar o seu servidor FTP anônimo

CRIANDO O USUÁRIO FTP

Para maior segurança, este usuário não poderá ter acesso a nenhum shell. Para tal, bastará configurar o campo correspondene ao shell, no arquivo passwd, como /bin/false, /bin/true ou o equivalente no seu sistema. O diretório home deste usuário será ~ftp que, por sua vez, é o diretório que se deseja que os usuários do servidor ftp anônimo enxerguem.

A entrada no arquivo /etc/passwd, correspondente ao descrito acima, será algo do tipo:


ftp:*:300:300:FTP Anônimo:/home/ftp:/bin/true

CRIANDO UMA ESTRUTURA DE DIRETÓRIOS SEGURA

Aqui um exemplo de configuração de diretórios de um servidor FTP anônimo:


dr-xr-xr-x 7 root system 512 Mar 1 15:17 ./
drwxr-xr-x 25 root system 512 Jan 4 11:30 ../
d--x--x--x 2 root system 512 Dec 20 15:43 bin/
d--x--x--x 2 root system 512 Mar 12 16:23 etc/
dr-xr-xr-x 10 root system 512 Jun 5 10:54 pub/

CONFIGURANDO DIRETÓRIOS COM PERMISSÃO DE ESCRITA

Se a idéia é disponibilizar um lugar onde usuários anônimos possam deixar arquivos (isto é, fazer upload), então há duas alternativas viáveis para controlar o acesso. De qualquer forma, vale a pena ressaltar que este procedimento pode comprometer a segurança do seu sistema.

Alternativa 1

Deverá ser criado o diretório raiz que abrigará estes arquivos (por exemplo, ~ftp/pub/incoming), limitando os usuários anônimos a ter unicamente permissão de execução (751). Isto fará com que o usuário anônimo possa mudar de diretório (cd), mas não listar o seu conteúdo.

Seguidamente, deverão ser criados subdiretórios predefinidos (com permissão 753) usando nomes conhecidos unicamente pelos usuários locais e pelos usuários "anônimos" que se deseja dar permissão de escrita nesses subdiretórios. Neste esquema, por questões de segurança, faz-se necessário escolher nomes de diretórios que não sejam fáceis de adivinhar de forma a prevenir que um usuário anônimo qualquer inclua arquivos arbitrários na área FTP.

Deve-se reparar que este método requer uma prévia coordenação e não garante uma total proteção contra usuários mal intencionados, uma vez que os nomes "secretos" dos subdiretórios podem se tornar públicos, intencional ou acidentalmente.

Alternativa 2

Da mesma forma que na alternativa 1, é necessário que seja criado o diretório incoming tendo também como dono o root, mas, desta vez, configurando as permissões de acesso no modo 733 (escrita e execução permitidos para grupo e outros). Mais um detalhe, o daemon ftp normalmente não permite que um usuário anônimo escreva sobre um arquivo já existente mas um usuário normal pode fazê-lo. Configurando o sticky bit como 1 se evitará que isto aconteça:


chmod +t ~ftp/pub/incoming

No caso específico do servidor WU-FTP, é possível configurar o daemon de forma que os novos arquivos sejam criados com permissão 600, tendo como dono o root ou qualquer outro usuário. Basta para tal incluir no arquivo /etc/ftpaccess linhas do tipo:


upload /var/ftp * no
upload /var/ftp /incoming yes ftp daemon 0666
upload /var/ftp /incoming/gifs yes ari guest 0600 nodirs

As linhas acima especificam que unicamente os diretórios /incoming e /incoming/gifs poderão receber arquivos. Os arquivos colocados no diretório /incoming obrigatoriamente terão o usuário ftp como dono, o daemon como grupo e as permissões de acesso configuradas para 0666. Assim mesmo, os arquivos recebidos pelo diretório /incoming/gifs terão como dono o usuário ari que pertence ao grupo guest e as permissões configuradas para 0600.

Os parâmetros dirs e nodirs especificam, respectivamente, se é permitida ou não a criação de novos subdiretórios, usando o comando mkdir.

O diretório /var/ftp representa o diretório home do usuário ftp (~ftp).

Como se mencionou anteriormente, os servidores FTP que suportam uploads são comumente alvo de abusos cometidos por usuários mal intencionados. Com o intuito de não serem descobertos, estes usuários criam arquivos e diretórios ocultos.

No caso particular do servidor WU-FTP, a diretiva path-filter é utilizada para restringir os caracteres usados nos nomes destes arquivos e diretórios. Por exemplo:


path-filter anonmyous /etc/pathmsg ^[-A-Za-z0-9._]*$ ^\\\. ^-

a linha acima especifica que qualquer nome de arquivo depositado pelo usuário anônimo poderá constar dos seguintes caracteres: A-Z, a-z, 0-9, ".", "_" e "-", mas não deverá iniciar com "." ou "-".

^

Dicas de configuração

Nesta seção, pretende-se passar ao leitor algumas dicas de configuração que eventualmente poderão ser úteis.

^

Recomendações gerais

Além das técnicas anteriormente abordadas, é importante tomar algumas precauções gerais, visando tornar o seu servidor FTP seguro. Por exemplo:

^

Considerações finais

Da maneira como está atualmente implementado o protocolo FTP [RFC 959], pode-se dizer que ele é, por natureza, inseguro: não existe um conceito de autenticação de usuários realmente seguro, pois as senhas trafegam totalmente abertas pela rede. Não existem também mecanismos de proteção de dados sigilosos, nem de verificação da integridade destes dados.

Diante destas fraquezas, lamentavelmente, as técnicas abordadas ao longo deste artigo não adiantam muito pois elas unicamente focalizam a segurança no servidor em sí, sem a preocupação de uma comunicação segura entre cliente (usuário) e servidor.

Com o intuito de combater estas fraquezas, um novo modelo foi especificado recentemente [RFC 2228]. Este modelo, compatível com a especificação padrão aborda, basicamente, aspectos de segurança no protocolo FTP, tais como: autenticação de cliente/servidor, integridade de dados, e confidencialidade, entre outros.

Enquanto a implementação deste novo modelo não se concretiza, existem algumas soluções alternativas que visam contornar as fraquezas do protocolo já apontadas. Uma destas alternativas baseia-se no uso do ftp padrão sob ssh (a conexão é encriptada, cria-se um túnel de proteção). Uma outra opção pouco conhecida é SSLay FTP (neste caso, são os dados que trafegam encriptados).

^

Referências

Managing Internet Information Services
by Cricket Liu et al, 1st Edition, 1994,O'Reilly & Associates, Inc.

Practical UNIX & Internet Security
by Simson Garfinkel and Gene Spafford, 2nd Edition, 1996,O'Reilly & Associates, Inc.

Anonymous FTP FAQ
by Christopher Klaus
http://www.iss.net/vd/anonftp.html

Anonymous FTP Abuses
by CERT Coordination Center
ftp://ftp.cert.org/pub/tech_tips/anonymous_ftp_abuses

Anonymous FTP Configuration Guidelines
by CERT Coordination Center
ftp://ftp.cert.org/pub/tech_tips/anonymous_ftp_config

Problems with the FTP Port Command
by CERT Coordination Center
ftp://ftp.cert.org/pub/tech_tips/FTP_PORT_attacks

WU-FTPD FAQ
by Koos van den Hout
http://www.hvu.nl/~koos/wu-ftpd-faq.html

How to Setup Guest Accounts
by Michael Brennen
http://www.landfield.com/wu-ftpd/guest-howto.html

Logging in WU-FTPD
by Kent Landfield
http://www.landfield.com/wu-ftpd/logging.html

RFC 2228 - FTP Security Extensions
by M. Horowitz
http://www.landfield.com/rfcs/rfc2228.html

^

Sites relacionados

WU-FTPD Resource Center

^

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