--- title: "Cómo auditar la seguridad de Ubuntu 24.04 con Lynis" description: "Instala Lynis en Ubuntu 24.04, ejecuta una auditoría de seguridad, interpreta avisos, sugerencias e índice de endurecimiento y programa escaneos semanales." category: "Seguridad del Servidor" language: es source: https://cubepath.com/es/docs/seguridad-del-servidor/escaneo-de-vulnerabilidades-con-lynis updated: 2026-09-25 --- # Cómo auditar la seguridad de Ubuntu 24.04 con Lynis Lynis es una herramienta de auditoría de seguridad de código abierto desarrollada por CISOfy. Se ejecuta en el propio servidor, revisa cientos de puntos (SSH, kernel, usuarios, paquetes, firewall, registros) y devuelve una lista priorizada de avisos y sugerencias junto con un índice de endurecimiento de 0 a 100. En este tutorial instalarás Lynis en Ubuntu 24.04 desde el repositorio oficial, ejecutarás una auditoría completa, aprenderás a leer el informe, corregirás algunos hallazgos habituales y dejarás un escaneo semanal programado con systemd. Lynis no es un escáner de red ni un antivirus: no ataca el servidor ni busca CVE concretas en cada paquete. Su función es detectar configuraciones débiles y darte una ruta clara para endurecer el sistema. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. Los comandos sirven también en Debian 12. - Un usuario no root con privilegios `sudo`. - Acceso SSH al servidor y una sesión abierta de respaldo antes de cambiar la configuración de SSH. ## Paso 1: Instalar Lynis desde el repositorio de CISOfy Ubuntu incluye un paquete `lynis` en sus repositorios, pero suele ir varias versiones por detrás, y Lynis se actualiza con frecuencia para añadir pruebas nuevas. Por eso es preferible usar el repositorio oficial de CISOfy. Instala las herramientas necesarias para descargar la clave del repositorio: ```bash sudo apt update sudo apt install ca-certificates curl gnupg ``` Descarga la clave pública de CISOfy y guárdala en `/etc/apt/keyrings`: ```bash sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key | sudo gpg --dearmor -o /etc/apt/keyrings/cisofy-lynis.gpg ``` Añade el repositorio indicando esa clave con `signed-by`: ```bash echo "deb [signed-by=/etc/apt/keyrings/cisofy-lynis.gpg] https://packages.cisofy.com/community/lynis/deb/ stable main" | sudo tee /etc/apt/sources.list.d/cisofy-lynis.list ``` Actualiza el índice de paquetes e instala Lynis: ```bash sudo apt update sudo apt install lynis ``` Comprueba que apt ha tomado el paquete del repositorio de CISOfy y no del de Ubuntu: ```bash apt policy lynis ``` La versión instalada debe aparecer asociada a `packages.cisofy.com`: ```output lynis: Installed: 3.1.x Candidate: 3.1.x Version table: *** 3.1.x 500 500 https://packages.cisofy.com/community/lynis/deb stable/main amd64 Packages ``` Verifica también la versión y si hay alguna más reciente publicada: ```bash lynis show version sudo lynis update info ``` > Nota: si prefieres no añadir repositorios externos, `sudo apt install lynis` desde los repositorios de Ubuntu también funciona. El resto del tutorial es igual, aunque tendrás menos pruebas disponibles. ## Paso 2: Ejecutar la primera auditoría La auditoría completa del sistema se lanza con `audit system`. Ejecútala con `sudo`: sin privilegios de root Lynis no puede leer archivos como `/etc/shadow` o la configuración de sudo y se salta muchas pruebas. ```bash sudo lynis audit system ``` El escaneo tarda entre uno y tres minutos. Lynis muestra cada grupo de pruebas en pantalla con un resultado entre corchetes (`OK`, `FOUND`, `NOT FOUND`, `WARNING`, `SUGGESTION`...). Al final verás un resumen parecido a este: ```output Lynis security scan details: Hardening index : 62 [############ ] Tests performed : 262 Plugins enabled : 1 Components: - Firewall [V] - Malware scanner [X] Files: - Test and debug information : /var/log/lynis.log - Report data : /var/log/lynis-report.dat ``` Si solo quieres el resumen, sin pausas ni colores, añade `--quick` (no espera a que pulses Intro entre secciones) o `--quiet` (solo muestra avisos): ```bash sudo lynis audit system --quick ``` ## Paso 3: Interpretar el informe Lynis deja dos archivos en `/var/log`: | Archivo | Contenido | |---|---| | `/var/log/lynis.log` | Registro detallado de cada prueba: qué comprobó y por qué dio ese resultado. | | `/var/log/lynis-report.dat` | Datos del informe en formato `clave=valor`, fácil de filtrar con `grep`. | Ambos se sobrescriben en cada ejecución. ### Avisos y sugerencias Los **avisos** (`warning[]`) son problemas que conviene corregir cuanto antes. Las **sugerencias** (`suggestion[]`) son mejoras de endurecimiento. Filtra cada tipo desde el informe: ```bash sudo grep '^warning\[\]' /var/log/lynis-report.dat sudo grep '^suggestion\[\]' /var/log/lynis-report.dat ``` Cada línea incluye el identificador de la prueba, la descripción y, a veces, un detalle adicional: ```output suggestion[]=SSH-7408|Consider hardening SSH configuration|MaxAuthTries (6 --> 3)|-| suggestion[]=KRNL-6000|One or more sysctl values differ from the scan profile and could be tweaked|-|-| suggestion[]=PKGS-7346|Purge old/removed packages (4 found) with aptitude purge or dpkg --purge command. This will cleanup old configuration files, cron jobs and startup scripts.|-|-| ``` Para entender una prueba concreta, pide a Lynis su explicación y el fragmento de registro asociado: ```bash sudo lynis show details SSH-7408 ``` ### Índice de endurecimiento El índice de endurecimiento resume el estado general. Extráelo del informe: ```bash sudo grep '^hardening_index=' /var/log/lynis-report.dat ``` ```output hardening_index=62 ``` Una instalación limpia de Ubuntu suele rondar los 55-65 puntos. No persigas el 100: algunas sugerencias no tienen sentido para tu caso (por ejemplo, particiones separadas en un VPS). Úsalo para comparar tu servidor consigo mismo a lo largo del tiempo. ## Paso 4: Corregir hallazgos habituales Trabaja primero los avisos y después las sugerencias que afecten a servicios expuestos. Estos son algunos ejemplos frecuentes en Ubuntu 24.04. ### Endurecer SSH (SSH-7408) Lynis compara la configuración efectiva de `sshd` con un perfil más estricto. Crea un archivo de configuración adicional; en Ubuntu 24.04 los archivos de `/etc/ssh/sshd_config.d/` se leen antes que el resto de `sshd_config` y el primer valor encontrado es el que se aplica: ```bash sudo nano /etc/ssh/sshd_config.d/10-hardening.conf ``` ```text PermitRootLogin no MaxAuthTries 3 X11Forwarding no AllowTcpForwarding no ClientAliveCountMax 2 ``` > Importante: si usas túneles SSH o reenvío de puertos, no incluyas `AllowTcpForwarding no`. Asegúrate también de que tienes otro usuario con `sudo` antes de bloquear el acceso de root. Valida la sintaxis y recarga el servicio sin cerrar tu sesión actual: ```bash sudo sshd -t sudo systemctl reload ssh ``` Si `sshd -t` no muestra nada, la configuración es válida. Abre una segunda sesión SSH para comprobar que sigues pudiendo entrar antes de cerrar la primera. ### Instalar paquetes de apoyo recomendados Lynis suele sugerir herramientas que ayudan a mantener el sistema: `libpam-tmpdir` (directorios temporales por usuario), `debsums` (verificación de archivos de paquetes), `apt-show-versions` (versiones instaladas) y `needrestart` (servicios que necesitan reinicio tras actualizar). Instálalas si Lynis las propone: ```bash sudo apt install libpam-tmpdir debsums apt-show-versions needrestart ``` ### Purgar paquetes eliminados (PKGS-7346) Los paquetes eliminados con `apt remove` dejan su configuración en el sistema. Lista los que están en estado `rc` y, si la lista no está vacía, púrgalos: ```bash dpkg -l | awk '/^rc/ {print $2}' sudo apt purge $(dpkg -l | awk '/^rc/ {print $2}') ``` ### Ajustar parámetros del kernel (KRNL-6000) Revisa en `/var/log/lynis.log` qué valores de `sysctl` difieren del perfil: ```bash sudo grep 'has a different value than expected' /var/log/lynis.log ``` Aplica solo los que entiendas en un archivo propio, por ejemplo `/etc/sysctl.d/99-hardening.conf`, y cárgalos con `sudo sysctl --system`. La guía de lista de verificación de auditoría de seguridad de esta misma sección incluye un bloque recomendado. ### Volver a medir Tras cada tanda de cambios, repite la auditoría y compara el índice: ```bash sudo lynis audit system --quick > /dev/null sudo grep '^hardening_index=' /var/log/lynis-report.dat ``` ```output hardening_index=71 ``` ## Paso 5: Excluir pruebas que no aplican Algunas pruebas generarán sugerencias que has decidido no seguir. En lugar de ignorarlas cada vez, exclúyelas en un perfil personalizado. Lynis carga automáticamente `/etc/lynis/custom.prf` si existe, y no se sobrescribe al actualizar el paquete: ```bash sudo nano /etc/lynis/custom.prf ``` ```ini # Particiones separadas no aplican en este VPS skip-test=FILE-6310 # Sin escáner de malware en este servidor, decisión documentada skip-test=HRDN-7230 ``` Escribe un comentario con el motivo de cada exclusión para que quien revise la auditoría después sepa por qué se omitió. Comprueba que el perfil se carga: ```bash sudo lynis show profiles ``` La salida debe incluir `/etc/lynis/custom.prf` además de `/etc/lynis/default.prf`. También puedes ejecutar solo un grupo de pruebas, útil para verificar un cambio concreto sin repetir toda la auditoría. Lista los grupos disponibles y lanza uno: ```bash lynis show groups sudo lynis audit system --tests-from-group ssh ``` ## Paso 6: Programar auditorías semanales con systemd Una auditoría puntual pierde valor en pocas semanas. Programa Lynis para que se ejecute cada semana y guarde una copia fechada del informe, de modo que puedas comparar resultados. Crea el directorio donde se guardarán los informes: ```bash sudo install -d -m 0700 /var/log/lynis-reports ``` Crea un script pequeño que ejecute la auditoría y copie el informe: ```bash sudo nano /usr/local/sbin/lynis-weekly ``` ```bash #!/usr/bin/env bash set -euo pipefail report_dir="/var/log/lynis-reports" stamp="$(date +%F)" /usr/sbin/lynis audit system --cronjob > /dev/null cp /var/log/lynis-report.dat "${report_dir}/lynis-report-${stamp}.dat" grep '^hardening_index=' "${report_dir}/lynis-report-${stamp}.dat" # Conservar solo las últimas 12 semanas find "${report_dir}" -name 'lynis-report-*.dat' -mtime +84 -delete ``` La opción `--cronjob` desactiva colores y pausas para ejecuciones desatendidas. Haz el script ejecutable: ```bash sudo chmod 0750 /usr/local/sbin/lynis-weekly ``` Crea la unidad de servicio: ```bash sudo nano /etc/systemd/system/lynis-weekly.service ``` ```ini [Unit] Description=Auditoría semanal de seguridad con Lynis [Service] Type=oneshot ExecStart=/usr/local/sbin/lynis-weekly ``` Y el temporizador que la lanza cada lunes a las 04:00: ```bash sudo nano /etc/systemd/system/lynis-weekly.timer ``` ```ini [Unit] Description=Ejecuta la auditoría de Lynis cada semana [Timer] OnCalendar=Mon *-*-* 04:00:00 RandomizedDelaySec=30min Persistent=true [Install] WantedBy=timers.target ``` Recarga systemd, activa el temporizador y lanza una ejecución manual para probarlo: ```bash sudo systemctl daemon-reload sudo systemctl enable --now lynis-weekly.timer sudo systemctl start lynis-weekly.service ``` Comprueba el resultado en el diario y la próxima ejecución programada: ```bash sudo journalctl -u lynis-weekly.service -n 5 --no-pager systemctl list-timers lynis-weekly.timer ``` ```output lynis-weekly[2104]: hardening_index=71 ``` Para comparar dos semanas, basta con un `diff` de las sugerencias: ```bash sudo diff <(grep '^suggestion' /var/log/lynis-reports/lynis-report-2026-09-14.dat) <(grep '^suggestion' /var/log/lynis-reports/lynis-report-2026-09-21.dat) ``` Sustituye las fechas por las de tus informes. ## Solución de problemas **Muchas pruebas aparecen como omitidas.** Ejecutaste Lynis sin `sudo`. Vuelve a lanzarlo como root para que pueda leer la configuración protegida. **`apt update` devuelve `NO_PUBKEY` para packages.cisofy.com.** La clave no se descargó bien o la ruta de `signed-by` no coincide. Repite la descarga de la clave del paso 1 y comprueba que el archivo `/etc/apt/keyrings/cisofy-lynis.gpg` existe y no está vacío. **Una sugerencia sigue apareciendo después de corregirla.** Lynis evalúa la configuración efectiva. En el caso de SSH, comprueba el valor real con `sudo sshd -T | grep -i maxauthtries`; si otro archivo de `/etc/ssh/sshd_config.d/` define el mismo parámetro antes que el tuyo, gana ese. ## Conclusión Has instalado Lynis desde el repositorio oficial, ejecutado una auditoría completa, interpretado avisos, sugerencias e índice de endurecimiento, corregido hallazgos habituales y programado auditorías semanales con informes fechados. Lo importante no es la cifra absoluta, sino que el índice suba y que cada sugerencia descartada tenga un motivo documentado. Como siguientes pasos puedes: - Revisar manualmente el resto de áreas con una lista de verificación de auditoría de seguridad. - Reforzar el acceso con claves SSH y autenticación de dos factores. - Instalar un sistema de detección de intrusiones como AIDE para vigilar cambios en archivos críticos.