Tabla de contenido
En este artículo, vamos a explorar cómo instalar y configurar RKHunter (Rootkit Hunter) en un sistema Linux. RKHunter es una herramienta esencial para la seguridad de cualquier servidor, ya que permite detectar rootkits, backdoors y exploits locales en sistemas UNIX. Vamos a detallar cada paso, desde la instalación hasta la configuración y la programación de escaneos automáticos. Este tutorial está diseñado para usuarios con conocimientos básicos de administración de sistemas Linux.
Instalación de RKHunter
Paso 1: Actualizar los Repositorios
Antes de instalar cualquier paquete nuevo, siempre es una buena práctica asegurarse de que los repositorios del sistema estén actualizados. Esto se puede hacer con el comando apt update.
apt update
Paso 2: Instalar RKHunter
Una vez que los repositorios estén actualizados, podemos proceder a instalar RKHunter junto con las herramientas básicas del sistema (coreutils).
apt install coreutils rkhunter -y
Paso 3: Descargar los Repositorios de la Base de Datos de RKHunter
Para que RKHunter funcione correctamente, necesitamos descargar los datos necesarios. Esto se puede hacer con el comando curl.
curl https://rkhunter.sourceforge.net/1.4/mirrors.dat > /var/lib/rkhunter/db/mirrors.dat
Configuración de RKHunter
Problema Común: No se Puede Actualizar
Si intentamos actualizar RKHunter inmediatamente después de la instalación, es probable que encontremos un error similar al siguiente:
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)
Solución: Editar el Archivo de Configuración
Para solucionar este problema, necesitamos editar el archivo de configuración de RKHunter (/etc/rkhunter.conf). Usaremos vi o cualquier otro editor de texto que prefiramos.
vi /etc/rkhunter.conf
Dentro del archivo, modificamos los siguientes parámetros:
PKGMGR=DPKG WEB_CMD=wget UPDATE_MIRRORS=1 MIRRORS_MODE=0
Actualización de RKHunter
Después de realizar estos cambios, podemos intentar actualizar RKHunter nuevamente.
rkhunter --update
Si todo ha ido bien, deberíamos ver un mensaje indicando que los archivos se han actualizado correctamente.
Verificación de la Versión
Podemos verificar que estamos utilizando la versión más reciente de RKHunter con el siguiente comando:
rkhunter --versioncheck
Realizar un Escaneo del Sistema
Una vez que RKHunter esté configurado y actualizado, podemos proceder a realizar un escaneo completo del sistema.
rkhunter --check
Ejemplo de Salida de un Escaneo
Durante el escaneo, RKHunter verificará varios aspectos del sistema, incluyendo comandos del sistema, bibliotecas compartidas, y archivos sospechosos. Aquí hay un ejemplo de lo que podríamos 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 ] [Press to continue] ... [Press to continue] System checks summary ===================== File properties checks... Files checked: 142 Suspect files: 0 Rootkit checks... Rootkits checked : 498 Possible rootkits: 0 Applications checks... All checks skipped The system checks took: 4 minutes and 25 seconds All results have been written to the log file: /var/log/rkhunter.log One or more warnings have been found while checking the system. Please check the log file (/var/log/rkhunter.log)
Automatización de Escaneos con Cron
Para asegurarnos de que nuestro sistema se mantenga seguro, es una buena idea programar escaneos automáticos. Podemos hacer esto editando el archivo /etc/crontab para añadir los trabajos cron necesarios. No olvidemos modificar el correo de destino para recibir las alertas.
vi /etc/crontab
Añadimos las siguientes líneas al archivo:
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 "RKHunter Daily Scan" tu-email@example.com
Con esto, hemos configurado un trabajo cron que actualizará RKHunter diariamente a las 3 AM y realizará un escaneo diario a las 2 AM, enviando un informe por correo electrónico solo si se encuentran advertencias.