Detectar rootkits con rkhunter y chkrootkit
Dedicados & VPS
26

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. Corre rkhunter --propupd despué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.