Como instalar o RKHunter no AlmaLinux, Rocky ou Ubuntu, procurar rootkits, ler o relatório sem pânico com falsos positivos e agendar o aviso diário.
O RKHunter (Rootkit Hunter) procura sinais de que o próprio sistema operacional foi alterado por um invasor: programas do sistema trocados por versões adulteradas, arquivos e pastas típicos de rootkits conhecidos, módulos suspeitos no kernel, permissões erradas e configurações inseguras do SSH. Ele não procura malware em sites; para isso use o Maldet ou o ImunifyAV.
Antes de começar
- Acesso root pelo SSH.
- O ideal é instalar o RKHunter num servidor recém-instalado e limpo. Ele grava as características dos programas do sistema na primeira execução e passa a comparar com elas. Se o servidor já estiver comprometido quando você instalar, ele registra o estado adulterado como normal.
- A última versão do RKHunter é a 1.4.6. O projeto não recebe versões novas desde 2018, mas segue empacotado nas distribuições e ainda é útil como camada extra.
Como instalar o RKHunter
Use o pacote da distribuição, não o arquivo baixado à mão: assim ele recebe correções e já vem com a tarefa diária.
AlmaLinux, Rocky e CloudLinux (o pacote vem do EPEL; veja repositórios no AlmaLinux e Rocky):
dnf install epel-release
dnf install rkhunter
Ubuntu e Debian:
apt install rkhunter
Primeira execução
- Atualize os dados de rootkits conhecidos:
rkhunter --update - Registre o estado atual dos programas do sistema (a "foto" usada nas comparações seguintes):
rkhunter --propupd - Rode a verificação completa, mostrando só os avisos:
rkhunter --check --skip-keypress --report-warnings-only - Leia o log completo para entender cada aviso. No AlmaLinux e no Rocky ele fica em
/var/log/rkhunter/rkhunter.log; no Ubuntu e no Debian, em/var/log/rkhunter.log.
Como interpretar os avisos
Aviso (Warning) não quer dizer invasão. Os mais comuns em servidores saudáveis:
- Arquivo do sistema mudou logo depois de um
dnf updateouapt upgrade. É esperado: depois de toda atualização, roderkhunter --propupdde novo. - Programa substituído por um script, como
/usr/bin/lwp-requestouegrep. Em várias distribuições esses comandos são scripts de verdade. - Login do root permitido no SSH (
PermitRootLogin). É um aviso de configuração, não de invasão. - Arquivos ou pastas ocultos em
/devou/etc, criados por serviços legítimos.
Aviso que merece investigação séria: programas como ls, ps, netstat, ss ou sshd com assinatura alterada sem atualização recente, ou a mensagem de um rootkit específico encontrado. Confira o arquivo com o gerenciador de pacotes: rpm -Vf /usr/bin/ps no AlmaLinux ou debsums -c no Ubuntu (pacote debsums).
Como silenciar falsos positivos confirmados
Depois de confirmar que um aviso é legítimo, registre a exceção no arquivo de configuração /etc/rkhunter.conf. Exemplos:
SCRIPTWHITELIST=/usr/bin/lwp-request
ALLOWHIDDENDIR=/etc/.java
ALLOW_SSH_ROOT_USER=yes
Em ALLOW_SSH_ROOT_USER, use o mesmo valor que está na opção PermitRootLogin do seu /etc/ssh/sshd_config: assim o RKHunter só reclama se alguém mudar essa configuração.
Confira se a configuração está válida com rkhunter -C.
Verificação diária com aviso por e-mail
Os pacotes das distribuições já instalam uma tarefa diária. Falta só dizer para onde vai o relatório:
- AlmaLinux e Rocky: em
/etc/sysconfig/rkhunter, ajuste[email protected]. - Ubuntu e Debian: em
/etc/default/rkhunter, ajusteCRON_DAILY_RUN="true",CRON_DB_UPDATE="true"eREPORT_EMAIL="[email protected]". Ligue tambémAPT_AUTOGEN="true"para a "foto" ser atualizada sozinha depois de cadaapt upgrade.
Se preferir, encaminhe o e-mail do root para a sua caixa e deixe o destino padrão (veja como encaminhar o e-mail do root).
Problemas comuns
Todo dia chega aviso de arquivo alterado
O sistema foi atualizado e a "foto" não. Rode rkhunter --propupd logo após as atualizações (no Ubuntu, APT_AUTOGEN="true" faz isso sozinho).
rkhunter --update reclama da opção WEB_CMD no Ubuntu
No Ubuntu e no Debian, o pacote vem com o download de dados desligado de propósito (WEB_CMD="/bin/false" no /etc/rkhunter.conf), e os dados chegam pelas atualizações do próprio pacote. Se quiser usar o --update, ajuste no arquivo: UPDATE_MIRRORS=1, MIRRORS_MODE=0 e WEB_CMD="".
rkhunter --update mostra erro de download
Os espelhos do projeto às vezes ficam fora do ar. Os dados de rootkits mudam pouco; tente de novo mais tarde e confira se o servidor tem acesso de saída à internet (porta 443 liberada no TCP_OUT do firewall).