Detectar rootkits con rkhunter y chkrootkit
Un rootkit es un conjunto de herramientas que un atacante instala después de comprometer un servidor para mantener acceso y ocultarse del administrador. Modifican binarios del sistema, esconden procesos y abren puertas traseras. Detectarlos a ojo es prácticamente imposible; por eso existen utilidades específicas como rkhunter y chkrootkit.
¿Por qué dos herramientas?
Cada una usa heurísticas diferentes. rkhunter compara hashes de binarios contra una base conocida, busca archivos sospechosos y revisa configuraciones inseguras. chkrootkit examina strings en binarios y verifica interfaces de red en modo promiscuo. Correr las dos reduce falsos negativos: si una pasa algo por alto, la otra suele detectarlo.
Instalación
En Debian o Ubuntu:
sudo apt install rkhunter chkrootkit -y
En AlmaLinux o Rocky necesitas EPEL:
sudo dnf install epel-release -y
sudo dnf install rkhunter -y
chkrootkit en Rocky se compila desde fuentes si lo necesitas.
Primer escaneo con rkhunter
Antes de escanear, actualiza la base de datos y registra el estado "limpio" del sistema:
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check --sk
La opción --sk (skip keypress) evita que te pida pulsar Enter entre secciones. El reporte queda en /var/log/rkhunter.log.
Escanear con chkrootkit
sudo chkrootkit
Te dará una lista de pruebas con resultados tipo "not infected", "not found" o "INFECTED". Lee cada línea con calma; algunas advertencias son esperables.
Falsos positivos típicos
- "Suspicious hidden file": archivos que empiezan con punto creados por utilidades legítimas.
- Warnings por cambios en binarios: normales después de un
apt upgrade. Correrkhunter --propupddespués de cada actualización grande para refrescar los hashes. - "Searching for Suckit": chkrootkit produce falsos positivos clásicos en kernels modernos.
La regla de oro es: un warning aislado rara vez significa compromiso. Lo preocupante es ver varias alertas juntas, procesos extraños y conexiones de red no justificadas al mismo tiempo.
Automatización
Programa un escaneo diario por cron y envíate el resultado por correo:
0 4 * * * /usr/bin/rkhunter --cronjob --update --quiet
Muchos paquetes ya dejan listo un cron en /etc/cron.daily/rkhunter. Revisa que esté habilitado y que el correo de root llegue a tu casilla real.
Si encuentras algo real
No reinicies. Aísla el servidor de la red, saca una imagen del disco y analiza desde un sistema limpio. Reinstalar el sistema operativo desde cero es casi siempre más rápido y seguro que intentar "limpiar" un servidor comprometido.