Tabla de contenido
Neste artigo, vamos explorar como instalar e configurar o RKHunter (Rootkit Hunter) num sistema Linux. O RKHunter é uma ferramenta essencial para a segurança de qualquer servidor, pois permite detetar rootkits, backdoors e exploits locais em sistemas UNIX. Vamos detalhar cada passo, desde a instalação até à configuração e programação de varreduras automáticas. Este tutorial é destinado a utilizadores com conhecimentos básicos de administração de sistemas Linux.
Instalação do RKHunter
Passo 1: Atualizar os Repositórios
Antes de instalar qualquer pacote novo, é sempre uma boa prática certificar-se de que os repositórios do sistema estão atualizados. Isso pode ser feito com o comando apt update.
apt update
Passo 2: Instalar o RKHunter
Uma vez que os repositórios estejam atualizados, podemos prosseguir para instalar o RKHunter juntamente com as ferramentas básicas do sistema (coreutils).
apt install coreutils rkhunter -y
Passo 3: Descarregar os Repositórios da Base de Dados do RKHunter
Para que o RKHunter funcione corretamente, precisamos descarregar os dados necessários. Isso pode ser feito com o comando curl.
curl https://rkhunter.sourceforge.net/1.4/mirrors.dat > /var/lib/rkhunter/db/mirrors.dat
Configuração do RKHunter
Problema Comum: Impossibilidade de Atualização
Se tentarmos atualizar o RKHunter imediatamente após a instalação, é provável que encontremos um erro semelhante ao seguinte:
root@host# rkhunter --update [ Rootkit Hunter version 1.4.6 ] Checking rkhunter data files... Checking file mirrors.dat [ Skipped ] Checking file programs_bad.dat [ Update failed ] Checking file backdoorports.dat [ Update failed ] Checking file suspscan.dat [ Update failed ] Checking file i18n versions [ Update failed ] Please check the log file (/var/log/rkhunter.log)
Solução: Editar o Ficheiro de Configuração
Para resolver este problema, precisamos editar o ficheiro de configuração do RKHunter (/etc/rkhunter.conf). Usaremos vi ou qualquer outro editor de texto que preferirmos.
vi /etc/rkhunter.conf
Dentro do ficheiro, modificamos os seguintes parâmetros:
PKGMGR=DPKG WEB_CMD=wget UPDATE_MIRRORS=1 MIRRORS_MODE=0
Atualização do RKHunter
Após realizar estas alterações, podemos tentar atualizar o RKHunter novamente.
rkhunter --update
Se tudo correr bem, deveremos ver uma mensagem indicando que os ficheiros foram atualizados com sucesso.
Verificação da Versão
Podemos verificar que estamos a utilizar a versão mais recente do RKHunter com o seguinte comando:
rkhunter --versioncheck
Realização de uma Varredura do Sistema
Uma vez que o RKHunter esteja configurado e atualizado, podemos proceder a realizar uma varredura completa do sistema.
rkhunter --check
Exemplo de Saída de uma Varredura
Durante a varredura, o RKHunter verificará vários aspetos do sistema, incluindo comandos do sistema, bibliotecas partilhadas e ficheiros suspeitos. Aqui está um exemplo do que poderemos ver:
[ Rootkit Hunter version 1.4.6 ] Checking system commands... Performing 'strings' command checks Checking 'strings' command [ OK ] Performing 'shared libraries' checks Checking for preloading variables [ None found ] Checking for preloaded libraries [ None found ] Checking LD_LIBRARY_PATH variable [ Not found ] Performing file properties checks Checking for prerequisites [ OK ] /usr/sbin/adduser [ OK ] /usr/sbin/chroot [ OK ] /usr/sbin/cron [ OK ] /usr/sbin/depmod [ OK ] /usr/sbin/fsck [ OK ] /usr/sbin/groupadd [ OK ] /usr/sbin/groupdel [ OK ] /usr/sbin/groupmod [ OK ] /usr/sbin/grpck [ OK ] /usr/sbin/ifconfig [ OK ] /usr/sbin/init [ OK ] /usr/sbin/insmod [ OK ] /usr/sbin/ip [ OK ] /usr/sbin/lsmod [ OK ] /usr/sbin/modinfo [ OK ] /usr/sbin/modprobe [ OK ] /usr/sbin/nologin [ OK ] /usr/sbin/pwck [ OK ] /usr/sbin/rmmod [ OK ] /usr/sbin/route [ OK ] /usr/sbin/rsyslogd [ OK ] /usr/sbin/runlevel [ OK ] /usr/sbin/sshd [ OK ] /usr/sbin/sulogin [ OK ] /usr/sbin/sysctl [ OK ] /usr/sbin/useradd [ OK ] /usr/sbin/userdel [ OK ] /usr/sbin/usermod [ OK ] /usr/sbin/vipw [ OK ] /usr/sbin/unhide [ OK ] /usr/sbin/unhide-linux [ OK ] /usr/sbin/unhide-posix [ OK ] /usr/sbin/unhide-tcp [ OK ] /usr/bin/awk [ OK ] /usr/bin/basename [ OK ] /usr/bin/bash [ OK ] /usr/bin/cat [ OK ] /usr/bin/chattr [ OK ] /usr/bin/chmod [ OK ] /usr/bin/chown [ OK ] /usr/bin/cp [ OK ] /usr/bin/curl [ OK ] /usr/bin/cut [ OK ] /usr/bin/date [ OK ] /usr/bin/df [ OK ] /usr/bin/diff [ OK ] /usr/bin/dirname [ OK ] /usr/bin/dmesg [ OK ] /usr/bin/dpkg [ OK ] /usr/bin/dpkg-query [ OK ] /usr/bin/du [ OK ] /usr/bin/echo [ OK ] /usr/bin/ed [ OK ] /usr/bin/egrep [ OK ] /usr/bin/env [ OK ] /usr/bin/fgrep [ OK ] /usr/bin/file [ OK ] /usr/bin/find [ OK ] /usr/bin/fuser [ OK ] /usr/bin/grep [ OK ] /usr/bin/groups [ OK ] /usr/bin/head [ OK ] /usr/bin/id [ OK ] /usr/bin/ip [ OK ] /usr/bin/ipcs [ OK ] /usr/bin/kill [ OK ] /usr/bin/killall [ OK ] /usr/bin/last [ OK ] /usr/bin/lastlog [ OK ] /usr/bin/ldd [ OK ] /usr/bin/less [ OK ] /usr/bin/logger [ OK ] /usr/bin/login [ OK ] /usr/bin/ls [ OK ] /usr/bin/lsattr [ OK ] /usr/bin/lsmod [ OK ] /usr/bin/lsof [ OK ] /usr/bin/mail [ OK ] /usr/bin/md5sum [ OK ] /usr/bin/mktemp [ OK ] /usr/bin/more [ OK ] /usr/bin/mount [ OK ] /usr/bin/mv [ OK ] /usr/bin/netstat [ OK ] /usr/bin/newgrp [ OK ] /usr/bin/passwd [ OK ] /usr/bin/perl [ OK ] /usr/bin/pgrep [ OK ] /usr/bin/ping [ OK ] /usr/bin/pkill [ OK ] /usr/bin/ps [ OK ] /usr/bin/pstree [ OK ] /usr/bin/pwd [ OK ] /usr/bin/readlink [ OK ] /usr/bin/rkhunter [ OK ] /usr/bin/runcon [ OK ] /usr/bin/sed [ OK ] /usr/bin/sh [ OK ] /usr/bin/sha1sum [ OK ] /usr/bin/sha224sum [ OK ] /usr/bin/sha256sum [ OK ] /usr/bin/sha384sum [ OK ] /usr/bin/sha512sum [ OK ] /usr/bin/size [ OK ] /usr/bin/sort [ OK ] /usr/bin/ssh [ OK ] /usr/bin/stat [ OK ] /usr/bin/strace [ OK ] /usr/bin/strings [ OK ] /usr/bin/su [ OK ] /usr/bin/sudo [ OK ] /usr/bin/tail [ OK ] /usr/bin/telnet [ OK ] /usr/bin/test [ OK ] /usr/bin/top [ OK ] /usr/bin/touch [ OK ] /usr/bin/tr [ OK ] /usr/bin/uname [ OK ] /usr/bin/uniq [ OK ] /usr/bin/users [ OK ] /usr/bin/vmstat [ OK ] /usr/bin/w [ OK ] /usr/bin/watch [ OK ] /usr/bin/wc [ OK ] /usr/bin/wget [ OK ] /usr/bin/whatis [ OK ] /usr/bin/whereis [ OK ] /usr/bin/which [ OK ] /usr/bin/who [ OK ] /usr/bin/whoami [ OK ] /usr/bin/numfmt [ OK ] /usr/bin/kmod [ OK ] /usr/bin/systemd [ OK ] /usr/bin/systemctl [ OK ] /usr/bin/gawk [ OK ] /usr/bin/bsd-mailx [ OK ] /usr/bin/dash [ OK ] /usr/bin/x86_64-linux-gnu-size [ OK ] /usr/bin/x86_64-linux-gnu-strings [ OK ] /usr/bin/telnet.netkit [ OK ] /usr/bin/which.debianutils [ OK ] /usr/lib/systemd/systemd [ OK ] [Pressione para continuar] ... [Pressione para continuar] Resumo das verificações do sistema ================================== Verificações de propriedades dos ficheiros... Ficheiros verificados: 142 Ficheiros suspeitos: 0 Verificações de rootkits... Rootkits verificados: 498 Rootkits possíveis: 0 Verificações de aplicações... Todas as verificações foram omitidas As verificações do sistema demoraram: 4 minutos e 25 segundos Todos os resultados foram escritos no ficheiro de log: /var/log/rkhunter.log Foram encontrados um ou mais avisos durante a verificação do sistema. Por favor, verifique o ficheiro de log (/var/log/rkhunter.log)
Automatização de Varreduras com Cron
Para garantir que o nosso sistema se mantenha seguro, é uma boa ideia programar varreduras automáticas. Podemos fazer isso editando o ficheiro /etc/crontab para adicionar os trabalhos necessários do cron. Não esqueça de modificar o email de destino para receber os alertas.
vi /etc/crontab
Adicione as seguintes linhas ao ficheiro:
0 3 * * * root /usr/bin/rkhunter --update >> /var/log/rkhunter_update.log 2>&1 0 2 * * * root /usr/bin/rkhunter --cronjob --update --report-warnings-only | mail -s "Varredura Diária do RKHunter" seu-email@example.com
Com isto, configuramos um trabalho cron que atualizará o RKHunter diariamente às 3 da manhã e realizará uma varredura diária às 2 da manhã, enviando um relatório por email apenas se forem encontrados avisos.