🛡 Seguridad Linux · Blue Team · Ubuntu · Hardening
Herramientas Esenciales de Seguridad Linux
Guia practica de las herramientas de seguridad fundamentales para Linux: firewall UFW, deteccion de rootkits con rkhunter y chkrootkit, antivirus ClamAV, monitorizacion de integridad AIDE y hardening del sistema con Lynis y scripts automatizados.
Interfaz predeterminada y facil de usar para configurar el firewall Netfilter de Linux. Preinstalado en Ubuntu, esencial para restringir el trafico de red entrante y saliente.
¿Por que usarlo? Bloquea las conexiones no deseadas a tu sistema, lo que es vital tanto para escritorios como para servidores.
bash — UFW comandos esenciales
# Habilitar el firewall
sudo ufw enable
# Politica predeterminada: denegar TODO el trafico entrante (clave)
sudo ufw default deny incoming
# Permitir SSH (si lo necesitas)
sudo ufw allow ssh
# Ver estado y reglas configuradas
sudo ufw status verbose
💡 Orden recomendado: Configura las reglas allow ANTES de ejecutar ufw enable. Si habilitas UFW con deny incoming activo y sin permitir SSH primero, perderás acceso remoto al servidor.
¿Que es un Rootkit?
Un Rootkit es un conjunto de herramientas de software malicioso disenado para ocultar la presencia de malware u otro codigo malicioso en un sistema operativo, permitiendo a un atacante mantener un acceso persistente con privilegios elevados (nivel root o Administrador) sin ser detectado.
🔑 Etimologia:Root = usuario administrador de maximo privilegio en Linux/Unix. Kit = conjunto de herramientas que usa el atacante. Su funcion principal no es danar el sistema directamente, sino actuar como una capa de invisibilidad para que otros malwares operen libremente.
Mecanismo de Ocultamiento
Un rootkit manipula las funciones estandar del sistema operativo para "mentirle" al usuario y a las herramientas de seguridad:
Manipulacion de comandos: Modifica ls, ps, netstat y find para que omitan mostrar archivos y procesos del atacante.
Manipulacion del Kernel: Los rootkits mas peligrosos inyectan codigo directamente en el nucleo del SO para modificar la gestion de memoria, procesos y red.
Tipos de Rootkits
Nivel 1
Rootkits de Nivel de Aplicacion
Modifican bibliotecas o APIs de aplicaciones especificas. Son los mas faciles de detectar y eliminar.
Nivel 2
Rootkits de Nivel de Kernel
Modifican el kernel del sistema operativo para ocultar procesos y archivos de forma invisible para la mayoria de herramientas de usuario. Extremadamente peligrosos.
Nivel 3
Rootkits de Hipervisor
Residen por debajo del SO y lo cargan a el mismo en una maquina virtual. Dan al atacante vision y control totales. Casi imposibles de detectar desde el SO comprometido.
Peligros Principales
Evaden el antivirus: El SO le miente al antivirus informando que el malware no existe.
Afectan AIDE: Un rootkit bien disenado puede manipular las funciones de hashing para engañar a AIDE.
Acceso permanente: El atacante puede conectarse y desconectarse cuando quiera sin ser detectado.
Maximo privilegio: Pueden ejecutar cualquier comando, modificar archivos o instalar software adicional.
⚠ Eliminacion extremadamente dificil: Debido a que residen en niveles muy bajos (firmware o kernel), en muchos casos la unica forma segura de restaurar la integridad es una reinstalacion completa del SO desde cero.
02
Deteccion de Rootkits
rkhunter — Rootkit Hunter
Muy popular por su base de datos de firmas conocidas de rootkits. Escanea el sistema buscando rootkits, backdoors y exploits locales.
bash — instalacion y uso
# Instalar
sudo apt install rkhunter
# Ejecutar comprobacion completa
sudo rkhunter --check
# Actualizar base de datos de propiedades
sudo rkhunter --propupd
# Actualizar base de datos de firmas
sudo rkhunter --update
rkhunterrkhunter instalado correctamente en Ubuntu
rkhunterrkhunter --check en ejecucion — primeros resultados del escaneo
Falso Positivo: lwp-request
El aviso sobre /usr/bin/lwp-request es una advertencia benigna emitida por rkhunter. No indica un problema real de seguridad.
🔎 ¿Por que aparece? rkhunter espera que ciertos comandos sean binarios compilados. lwp-request es una utilidad legitima para peticiones web (paquete libwww-perl), pero en Debian/Ubuntu esta implementada como un script de Perl, no como un binario. Esto genera el Warning.
Solucion: Anadir a SCRIPTWHITELIST
Edita el archivo de configuracion local de rkhunter (se recomienda el archivo .local para no perder cambios en actualizaciones):
sudo nano /etc/rkhunter.conf.local
Anade la siguiente linea al final del archivo:
SCRIPTWHITELIST=/usr/bin/lwp-request
Guarda y cierra el archivo: Ctrl+O, Enter, Ctrl+X
Vuelve a ejecutar rkhunter — el aviso ya no deberia aparecer.
Falso Positivo: passwd y group changes
Los avisos "Checking for passwd file changes" y "Checking for group file changes" son advertencias muy comunes y en la mayoria de los casos son falsos positivos benignos.
rkhunterrkhunter -- warnings de passwd/group tras crear usuarios o actualizar el sistema
🔎 ¿Por que aparecen? rkhunter calcula un hash de /etc/passwd y /etc/group la primera vez que se ejecuta y almacena ese valor. Cualquier cambio posterior hace que el hash no coincida: crear un usuario (adduser), crear un grupo (addgroup), cambiar pertenencia a grupos o actualizaciones del SO que anadean usuarios de servicio.
Solucion: Actualizar la Base de Datos de Propiedades
bash
# Actualizar la BD de propiedades para aceptar los cambios actuales como referencia valida
sudo rkhunter --propupd
Responde "S" (Si) a la pregunta para actualizar la base de datos. La proxima vez que ejecutes el check, esos avisos apareceran como [ OK ].
Falso Positivo: Hidden files and directories
El aviso "Checking for hidden files and directories [ Warning ]" indica que rkhunter ha encontrado archivos o directorios ocultos en ubicaciones del sistema donde no se esperan.
Paso 1: Revisar el registro para identificar los archivos
bash
# Buscar "hidden" en el log (muestra el encabezado de seccion)
sudo grep "hidden" /var/log/rkhunter.log
# Busqueda mas amplia para ver los archivos exactos encontrados
sudo grep -E 'Found|Hidden' /var/log/rkhunter.log
rkhuntergrep hidden en el log de rkhunter — muestra solo encabezados de seccion
rkhuntergrep -E Found|Hidden — archivos ocultos exactos que generaron el Warning
En este ejemplo, los dos archivos que generaron el aviso son:
/etc/.resolv.conf.systemd-resolved.bak — Copia de seguridad temporal de DNS de systemd-resolved. Completamente normal.
/etc/.updated — Marcador de posicion del sistema APT de Debian/Ubuntu. No representa amenaza.
Paso 2: Determinar legitimidad
Archivo / Directorio Oculto
Legitimidad
/dev/.udev, /dev/.shm
OK Falso positivo — archivos de servicio del SO.
/root/.ssh
OK Legitimo — claves SSH del usuario root.
/etc/.resolv.conf.*.bak, /etc/.updated
OK Falso positivo — archivos de sistema en Ubuntu/Debian.
Binarios en /tmp o /var/tmp
REVISAR Si son ejecutables, pueden ser sospechosos.
Archivos ocultos en /usr/bin o /usr/sbin
SOSPECHOSO Muy inusual. Investigar como posible intrusion.
Paso 3: Anadir a la whitelist
bash — editar configuracion
sudo nano /etc/rkhunter.conf
# Archivos ocultos de sistema legitimos en Ubuntu/DebianALLOWHIDDENFILE=/etc/.resolv.conf.systemd-resolved.bakALLOWHIDDENFILE=/etc/.updated# Para directorios ocultos legitimos (ej. /dev/.udev)ALLOWHIDDENDIR=/dev/.udev
rkhunterrkhunter tras anadir whitelists — Hidden files ahora muestra [ OK ]
🛡 Regla de oro: Solo anade a la whitelist archivos de los que estes absolutamente seguro que son legitimos. Si encuentras un archivo oculto en /usr/bin, investigalo como una posible intrusion antes de ignorarlo.
03
Deteccion de Rootkits — Alternativa
chkrootkit
Alternativa mas ligera a rkhunter. Usa scripts de shell para comprobar binarios del sistema en busca de modificaciones caracteristicas de rootkits conocidos.
chkrootkitchkrootkit en ejecucion — advertencias tipicas en Ubuntu moderno
Falsos Positivos Comunes en Ubuntu
1. Archivos y Directorios Sospechosos
chkrootkit reporta archivos ocultos (que empiezan con .) en directorios sensibles. En Ubuntu moderno, los siguientes son todos falsos positivos:
/usr/lib/ruby/vendor_ruby/rubygems/... — Marcadores de paquetes RubyGems
/usr/lib/modules/.../vdso/.build-id — Sistema de paquetes de depuracion del kernel
/usr/lib/libreoffice/share/.registry — Pertenece a LibreOffice
/usr/lib/debug/.dwz y .build-id — Sistema de depuracion
📝 Sin whitelist en chkrootkit: A diferencia de rkhunter, chkrootkit no ofrece una forma sencilla de poner estos archivos en lista blanca. Simplemente memoriza cuales son normales y esperalos en cada ejecucion.
Falso positivo muy comun. NetworkManager utiliza el modo promiscuo de forma legitima para algunas funciones de red, especialmente al interactuar con VirtualBox o en tareas de configuracion de red. No indica una intrusion. Ninguna accion requerida.
04
Antivirus — Opcional
ClamAV
Util cuando tu maquina interactua con archivos de otros sistemas operativos (servidor de correo, archivos compartidos). Linux es menos propenso a virus de Windows, pero ClamAV escanea archivos compartidos.
bash — ClamAV instalacion y uso
# Instalar ClamAV y el daemon
sudo apt install clamav clamav-daemon
# Actualizar la base de datos de firmas de virus
sudo freshclam
# Escanear un directorio recursivamente
clamscan -r /home/tu_usuario
# Escanear todo el sistema (puede tardar mucho)
sudo clamscan -r / --exclude-dir="^/sys|^/proc|^/dev"
05
Monitorizacion de Integridad
AIDE — Advanced Intrusion Detection Environment
Crea una "instantanea" (base de datos de hashes) de la estructura, permisos y contenido de archivos importantes del sistema. Si algun archivo cambia, AIDE te avisara en comprobaciones futuras.
bash — AIDE instalacion y flujo de trabajo
# 1. Instalar AIDE
sudo apt install aide
# 2. Inicializar la BD (hacerlo INMEDIATAMENTE tras la instalacion)
sudo aide --init --config /etc/aide/aide.conf
# 3. Activar la base de datos (moverla a la ubicacion definitiva)
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 4. Verificacion regular del sistema (ejecutar periodicamente)
sudo aide --check
⏱ La inicializacion tarda: En una maquina virtual o en un disco lento o lleno, aide --init puede tardar varios minutos. Es normal — esta calculando hashes de todos los archivos del sistema.
💡 Cuanto antes, mejor: Inicializa AIDE inmediatamente despues de instalar el sistema, antes de instalar software adicional. Asi la "instantanea" de referencia sera lo mas limpia posible.
Buenas Practicas de Seguridad
🔄
Mantener el sistema actualizado
La medida de seguridad mas basica y efectiva. Siempre aplica las ultimas actualizaciones de seguridad.
sudo apt update && sudo apt upgrade
🗑
Deshabilitar servicios innecesarios
Cuantos menos servicios esten corriendo y escuchando conexiones, menor sera la superficie de ataque. Revisa que servicios tienes habilitados con systemctl list-units --type=service --state=running.
🔒
Contrasenyas robustas y 2FA
Usa contrasenas fuertes y, si accedes via SSH, habilita la autenticacion de dos factores (2FA). Mejor aun: usa autenticacion por clave publica SSH en lugar de contrasenas.
Herramientas y Scripts de Hardening
El proceso de fortalecer un sistema Linux puede automatizarse con proyectos de codigo abierto en GitHub, siguiendo estandares como CIS (Center for Internet Security) o DISA STIG.
01 — Auditoria
Lynis
Herramienta de auditoria de seguridad muy popular. Escanea el SO, configuracion del kernel, paquetes, red y firewall, y da una "puntuacion" de seguridad con recomendaciones detalladas.
sudo lynis audit system
02 — Guia Manual
Practical Linux Hardening Guide
Guia muy completa sobre como proteger un sistema GNU/Linux de produccion. Cubre sysctl, sistema de archivos, firewall, SSH, servicios y cifrado.
trimstray/the-practical-linux-hardening-guide
03 — Scripts
Scripts de Hardening Ubuntu
Scripts Bash semi-automatizados para Ubuntu/Debian. Incluyen modulos para UFW, Fail2Ban, SSH hardening, politicas de contrasenyas y deteccion con rkhunter.
Z-A-P-P-I-T / captainzero93
04 — Automatizacion
Ansible Lockdown
Roles de Ansible para aplicar configuraciones de hardening basadas en guias CIS o DISA STIG para distintas versiones de Linux. Ideal para entornos con multiples servidores.
ansible-lockdown / CIS / STIG
05 — Cumplimiento
OpenSCAP / SCAP Workbench
Implementacion de guias SCAP. Permite escanear y aplicar perfiles de hardening que cumplen con rigurosos estandares gubernamentales o industriales y generar informes de cumplimiento.
SCAP / CIS / Informe de cumplimiento
⚠ Antes de ejecutar cualquier script de GitHub:
Revisa el codigo — Un script de hardening mal configurado puede romper tu sistema o bloquear tu acceso.
Haz copias de seguridad — Siempre prueba primero en un entorno de desarrollo.
Elige proyectos activos — Prioriza repos con commits recientes y muchas estrellas/forks.