2375 Views
Tempo de leitura: 6 MinutosOs serviços de FTP ainda são uns dos mais utilizados para troca de arquivos em redes privadas e públicas. Contudo, quando não configurados corretamente, podem conter certas vulnerabilidades.
Existem vários servidores FTP. Dentre eles, o mais utilizado e considerado o mais seguro é o vsftpd (Very Secure FTP daemon), desenvolvido com enfoque na segurança.
Seu daemon é o vsftpd e seu arquivo de configuração é o /etc/vsftpd.conf. Uma das principais características do vsFTPd é criar um ambiente chroot quando um usuário entra no sistema via FTP, sem necessidade de preparar uma árvore de diretórios especifica para isso.
Em primeiro lugar, é necessário criar o diretório base para o FTP, geralmente /home/ftp ou /var/ftp. Este diretório deve pertencer ao usuário root, e não ter permissão de escrita para o usuário ftp. Caso contrário o vsftpd informará que existe uma brecha de segurança não funcionará corretamente.
As configurações são simples e dificilmente é necessário alterar o padrão. Se o vsftpd não for utilizado através do initd ou xinetd, a opção listen=YES deve estar presente no arquivo /etc/vsftpd.conf.
Características do vsftpd
Além da segurança, estabilidade e velocidade, o vsftpd ainda possui as seguintes características:
Como servidor FTP, será usando o vsftpd. Sua instalação é muito simples, basta executar o seguinte comando:
Em sistema baseados em Debian
aptitude install vsftpd -y
Em sistemas baseados em Red Hat
yum install vsftpd
Em Gentoo Linux
emerge vsftpd
Em Slackware
slackpkg install vsftpd
Em SUSE Linux
zypper install vsftpd
Em Mandriva Linux
urpmi vsftpd
Poderão ocorrer algumas solicitações de remoção de pacotes de outros FTPs por questões de conflitos, mas pode-se perfeitamente seguir adiante.
Configuração do vsftpd
A configuração do vsftpd é feita no arquivo /etc/vsftpd/vsftpd.conf. Logo abaixo, um exemplo:
vsftpd.conf #/etc/vsftpd.conf #Libera ftpd anônimo. anonymous_enable=YES #Permite que os usuários locais efetuem o login. local_enable=YES #Permite que os usuários gravem sem seus diretórios pessoais. write_enable=YES #Usuários que será utilizado para acesso anônimo. nopriv_user=ftp #Habilita a exibição de mensagens para os usuários remotos quando entrarem #nos diretório. Para que a mensagem seja mostrada, é necessário criar um #arquivo .message com o conteúdo da mensagem dentro de cada diretório. dirmessage_enable=YES #Ativa o log de todos od downloads e uploads. xferlog_file=/var/log/vsftpd.log #Permite conexões na porta 20(ftp-dados). connect_from_port_20=YES #Define o tempo de desconexão automática por inatividade. idle_session_timeout=600 #Define que o usuário logado deve ficar preso em seu diretório pessoal chroot_local_user=YES #Permite que seja utilizada uma lista com os usuários que não ficaram presos #no seu diretório pessoal. chroot_list_enable=YES #Lista com os usuários que poderam sair do HOME. chroot_list_file=/etc/vsftpd/chroot-list
Na tabela abaixo, há uma relação de várias opções que podem ser utilizadas no arquivo de configuração do vsftpd e a descrição detalhada das que estão no exemplo acima:
anonymous_enable=NO:
Impede o login anônimo. Se seu servidor de FTP for público, o valor deve ser YES
local_enable=YES
Isto permite que os usuários locais efetuem o login. Útil para um servidor privado (nosso caso) como o de um ISP.
write_enable=YES
Permite que esses usuários escrevam em suas pastas por FTP.
local_umask=022
Define as permissões dos arquivos depois do upload. O padrão é 077 (octal), escrita e leitura somente pelo dono.
anon_upload_enable=NO
Ativa o upload anônimo. Este valor deve ser YES se o servidor de FTP for público.
anon_mkdir_write_enable=NO
Ativa a criação de pastas por usuários anônimos.
dirmessage_enable=YES
Permite que o conteúdo do arquivos .message seja exibido caso exita no diretório atual. Um bom uso deste recuso é criar o arquivo .message (o conteúdo deve ser texto puro) e colocar informações sobre a pasta atual.
xferlog_enable=YES
Ativa o log detablhado, que inclui log de upload e download.
connect_from_port_20=YES
Permite conexões na porta 20 (ftp-dados).
chown_uploads=YES
Se esta opção estiver habilitada, cada upload de arquivo executado pelo usuário anônimo terá automaticamente, como dono do arquivo, o usuário especificado na opção chown_username. Não é recomendado que seja feito upload com o usuário root
chown_username=whoever
Permite especificar qual usuário será o dono dos arquivos que forem enviados para o servidor (upload) pelo usuários anônimo.
xferlog_file=/var/log/vsftpd.log
Pode ser especificado em qual arquivo serão registrados os logs do serviço vsftpd. O padrão é /var/log/vsftpd.log.
xferlog_std_format=YES
Se estiver habilitado, o arquivo de log será gerado no formato padrão do ftpd xferlog.
idle_session_timeout=1800
Define o tempo de desconxão automática por inatividade.
data_connection_timeout=120
Tempo permitido de ociosidade (em segundos) em uma conexão antes que o cliente remoto seja desconectado.
nopriv_user=ftpsecure
Esta opção é recomendada para definir um usuário único do sistema, o qual será utilizado pelo servidor FTP que seja totalmente isolado e sem privilégios. Geralmente escolhe-se o usuário nobody.
userlist_enable=YES
Com esta opção ativada, o vsftpd irá carregar uma lista de nome de usuários a partir do arquivo especificado em userlist_file. Se o usuário tentar conectar usando um nome da lista, ele será PROIBIDO de fazer o login. Mesmo digitando a senha corretamente, terá um retorno de erro de acesso.
userlist_deny=YES
Esta opção só será examinada userlist_enable esteja ativada. Ela faz com que os usuários da lista userlist_file sejam negados antes mesmo de solictar a senha. Isso serve para impedir login com senhas nulas, chamadas de cleartext (texto puro).
userlist_file=/etc/vsftpd.user_list
Nesta opção pode ser especificado um arquivo, o qual conterá o nome dos usuários a serem negados pela opção userlist_enable.
check_shell=YES
NOTA: Esta opção só funciona caso não se utilize autenticação via PAM paravsftpd. Se desabilitada, vsftpd não ira checar o /etc/shells para saber se o shell do usuário é válido para conexões locais.
async_abor_enable=YES
Quando esta opção é habilitada, um comando do FTP conhecido como async ABOR é ativado. Alguns clientes de FTP mais antigos podem apresentar problemas se esta opção não estiver habilitada, porém ela representa um futo na segurança.
ascii_upload_enable=YES
Quando habilitada, o modo ASCII de transferência de dados é ativado para uploads.
ascii_download_enable=YES
Quando habilitada, o modo ASCII de transferência de dados é ativado para downloads.
fptd_banner=Bem Vindo ao FTP
O banner de boas vindas, quando é feito login no servidor FTP, pode ser personalizado.
deny_email_enable=YES
Endereços de e-mails anônimos podem ser desabilitados, ou seja, isso proibirá o login de usuários que possuem esse endereços. Prático para combater ataques do tipo DOS.
banned_email_file=/etc/vsftpd.banned_emails
Esta opção anda em conjunto com a deny_email_enable. Pode-se especificar um arquivo onde estarão listados os endereços de e-mails que serão banidos.
chroot_local_user=YES
Define que o usuário conectado deve ficar preso num diretório raiz. Esta opção é útil em servidores de hospedagem.
chroot_list_enable=YES
Habilita uma lista de usuários que estarão presos em um diretório raiz.
chroot_list_file=/etc/vsftpd.chroot_list
Esta opção define qual é o arquivo que irá conter a lista de usuários para chroot.
listen=YES
Define a execução do vsftpd em modo standalone. Se definido como YES, requer background=YES. Se for iniciado pelo xinetd, deve ficar no NO.
text_userdb_names=YES
Ativa a exibição dos nomes de usuários e grupos nas listagens de arquivos e diretório. Se definido como NO serão exibidos do IDs.
use_localtime=YES
Determina a exibição das datas em local time zone.
ls_recurse_enable=YES
Esta opção habilita a utilização do comando ls -R. Não é muito útil já que isso, em grandes diretórios, pode consumir muito recurso.
Segurança
Por questões de segurança, pode-se evitar que determinados usuários conectem via FTP.
userlist_enable=YES
Se esta opção for ativada o vsftpd lerá uma lista de nomes que está na opção do userlist_file(/etc/vsftpd/ftpdusers). Se o usuário tenta acessar o sistema tiver o nome nesse arquivo, terá seu acesso negado antes que sua senha seja perguntada.
Levantando o serviço
Terminada a configuração, pode ser ativado o serviço de FTP a partir do serviço xinetd.
/etc/init.d/vsftpd restart
Rodando FTP sob demanda com Xinet
O serviço FTP pode ser adicionado ao Xinet de forma que seja sob demanda. Para isso, basta desativar as opções de standalone do serviço em /etc/vsftpd/vsftpd.conf, mudando as opções para NO.
#Habilitando para trabalhar em modo Standalone
listen=NO tcp_wrappers=NO
Parar o serviço de FTP
/etc/init.d/vsftpd stop
No arquivo /etc/xinetd.d/vsftp, colocar em no a opção disable.
vsftp service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd server_args = /etc/vsftpd/vsftpd.conf nice = 10 per_source = 5 instances = 200 log_on_success += PID host DURATION log_on_failure += host flags = IPv4 }
Vamos agora reiniciar o xinetd:
/etc/init.d/xinetd restart
Agora a escolha é do usuário trabalhar em standalone ou xinet.
Li este artigo no site https://www.gmsecurity.com.br e o reproduzi na íntegra, sem edição. Parabéns ao autor, Douglas Quintiliano dos Santos. |