Blog do Zoltral

28/12/2009

Segurança no Linux: procurando RootKit e configurando o firewall

Regularmente, procuro a existência de rootkits no meu Linux. Para isso utilizo o chkrootkit. No entanto, ontem, encontrei um artigo no blog do Corvolino fazendo referência a um outro programa, chamado rkhunter, que o Hugo Dória, usuário experiente em segurança e Linux, defendeu como sendo melhor que o chkrootkit.

Porque procurar rootkit em seu Linux? Porque rootkits são indicativos de que seu Linux foi invadido, estando com a segurança comprometida e seus arquivos e informações estão correndo perigo.

Veja a definição de rootkit pelo Hugo Dória em um artigo no Viva o Linux:
Rootkits são ferramentas utilizadas, geralmente, com o objetivo de ocultar a presença de invasores nas máquinas. Com essas ferramentas alguém não-autorizado, mas que já conseguiu entrar na máquina, pode ter controle sobre a máquina e nem ser notado.

Muitos rootkits acompanham uma gama de binários (como o ls, ps, who, find etc) modificados para que os processos rodados pelo invasor não possam ser vistos pelo administrador da máquina. Além disso, muitos vírus atuais utilizam rootkits.

Assim, seguindo o tutorial do Hugo Doria, instalei e executei o rkhunter.

Os passos são:

  • Instalar ele através do programa de instalação de sua distribuição, via synaptic no caso do meu Ubuntu, caso não esteja instalado ainda.
  • Atualizar a base de propriedades dos arquivos
  • rkhunter --propupd

  • Atualizar a base do rkhunter
  • rkhunter --update

  • Executar o rkhunter, como root
  • rkhunter -c
    ou
    rkhunter --check

    O rkhunter vai listar suas ações no terminal e algumas vezes vai pedir para teclar ENTER.

    Agora basta prestar atenção as mensagens de WARNING na cor vermelha, analisando a ocorrência. O log final ficará no arquivo /var/log/rkhunter.log.

    Abra este arquivo como root com seu editor de textos favorito. Aqui foi:
    sudo gvim /var/log/rkhunter.log

    Se houver algum comprometimento da máquina, pesquise na internet para procurar algum método de limpeza ou então reinstale o seu Linux.

    No meu caso, tive alguns WARNING. Pesquisando descobri que eram apenas falso-positivos que podem ocorrer. Normalmente eles aparecem no final da checagem e do log.
    Veja o exemplo abaixo:
    [23:24:29] Warning: Suspicious file types found in /dev:
    [23:24:29] /dev/shm/pulse-shm-1746895747: data
    [23:24:30] Checking for hidden files and directories [ Warning ]
    [23:24:30] Warning: Hidden directory found: /etc/.java
    [23:24:30] Warning: Hidden directory found: /dev/.static
    [23:24:30] Warning: Hidden directory found: /dev/.udev
    [23:24:30] Warning: Hidden directory found: /dev/.initramfs

    Estes falso-positivos são conhecidos, estando inclusive já mencionados no arquivo de configuração do rkhunter que está em /etc/rkhunter.conf. Mas estas referências vem por padrão comentadas. Para acabar com os falso-positivos, como root, abra este arquivo com o seu editor de texto favorito e descomente as linhas que fazem referência a eles.

    Para as referências Hidden directory found, procure a seção abaixo:

    # Allow the specified hidden directories.
    # One directory per line (use multiple ALLOWHIDDENDIR lines).
    #
    ALLOWHIDDENDIR=/etc/.java
    ALLOWHIDDENDIR=/dev/.udev
    #ALLOWHIDDENDIR=/dev/.udevdb
    #ALLOWHIDDENDIR=/dev/.udev.tdb
    ALLOWHIDDENDIR=/dev/.static
    ALLOWHIDDENDIR=/dev/.initramfs
    #ALLOWHIDDENDIR=/dev/.SRC-unix

    Para a referência ao pulse, procure a seção abaixo:

    # Allow the specified files to be present in the /dev directory,
    # and not regarded as suspicious. One file per line (use multiple
    # ALLOWDEVFILE lines).
    #
    #ALLOWDEVFILE=/dev/abc
    ALLOWDEVFILE=/dev/shm/pulse-shm-*

    Feito isto, os falso-positivos desaparecerão. Agora, se aparecer algum WARNING, então é um rootkit.

    Feito a verificação e não constatando nenhum rootkit instalado, é hora de ter certeza que o firewall está dando conta do trabalho de evitar invasões.

    Para isso, a melhor ferramenta que conheço é o guarddog. Entenda melhor neste contexto como a mais fácil

    Para a configuração do Guarddog, segui este tutorial, com algumas modificações:

    Abra o guarddog:
    sudo guarddog

    Configure no assistente dele, na aba Protocol, o seguinte:

  • chat – habilitar os serviços que você usar – msn, irc, jabber, etc;
  • data serve – habilite cddb e freedb (para consultar dicionários online), ntp se seu Linux atualiza a hora do computador pela internet;
  • file transfer – imprescindível habilitar https e http (cuidado aqui para não deixar de habilitar se não você não tem internet) e todos os serviços de troca de arquivo que você usar como bittorrent, edonkey, fasttrack, ftp, gnutella;
  • games – habilite as opções se você for um jogador e escolha o game do tipo quake, etc…;
  • interactive session – só habilite o ipp, se você precisa usar o cups (pois é pré-requisito para poder usá-lo);
  • mail – habilite pop3 e smtp (para receber e enviar e-mails), apenas se usar o email do provedor. Se usar apenas webmail (gmail, hotmail, etc), não precisa;
  • media – marcar ambos por padrão (caso você precise usar);
  • miscellaneous – habilite o pgp key server para a autenticação de chaves criptográficas;
  • network – habilite o dns para ter acesso a internet;
  • user defined – deixe em branco, a não ser que você defina alguma regra particular que você irá criar;
  • Pronto, seu Linux está limpo e seguro.

    Referências utilizadas antes, durante e depois da utilização do rkhunter e do guarddog e também para escrever este artigo:

    Procure RootKit em seu LINUX !
    Procurando rootkits no seu sistema
    RKhunter log file
    Firewall Guarddog: Configuração Básica
    Firewall guarddog

    Crie um website ou blog gratuito no WordPress.com.