Artigos, LinuxInstalação e configuração do VsFTP

Instalação e configuração do VsFTP

Os 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:

  • Suporte a IPs virtuais;
  • Suporte a usuários virtuais;
  • Pode ser executado sob demanda, a partir do inetd ou xinetd, ou como um processo à parte (standalone);
  • Suporte à limitação de consumo de banda;
  • Configuração por IP de origem;
  • Limite de conexões por endereço IP;
  • Suporte a Ipv6;
  • Suporte à criptografia através de integração com SSL.
  • Instalação do vsftpd
  • 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 http://www.gmsecurity.com.br e o reproduzi na íntegra, sem edição. Parabéns ao autor, Douglas Quintiliano dos Santos.

    Categories: Artigos, Linux Tags: , , , ,

    Comments

    No Comments Yet. Be the first?

    Post a comment

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.