Escaneo de Vulnerabilidades con Lynis

Introducción

La auditoría de seguridad y la evaluación de vulnerabilidades son componentes fundamentales para mantener una postura de seguridad robusta en servidores. Mientras muchas organizaciones se centran en pruebas de penetración externas, la auditoría de seguridad interna proporciona información igualmente crítica sobre debilidades del sistema, configuraciones incorrectas y brechas de cumplimiento que los atacantes podrían explotar.

Lynis es una poderosa herramienta de auditoría de seguridad de código abierto diseñada específicamente para sistemas basados en Unix, incluyendo Linux, macOS y variantes BSD. Desarrollado por CISOfy, Lynis realiza escaneos de seguridad completos que evalúan el endurecimiento del sistema, detectan vulnerabilidades, identifican debilidades de configuración y proporcionan recomendaciones accionables para mejorar la postura de seguridad.

A diferencia de los escáneres de vulnerabilidades que se centran en CVEs conocidos, Lynis adopta un enfoque holístico al examinar la configuración del sistema, permisos de archivos, servicios en ejecución, parámetros del kernel, mecanismos de autenticación, implementaciones criptográficas y cumplimiento con puntos de referencia de seguridad. Esta metodología integral hace de Lynis una herramienta esencial para profesionales de seguridad, administradores de sistemas y equipos DevOps.

Esta guía completa cubre todo, desde la instalación básica de Lynis hasta técnicas de escaneo avanzadas, auditoría de seguridad automatizada, integración con pipelines CI/CD y aprovechamiento de los resultados del escaneo para endurecer sistemáticamente los servidores Linux y cumplir con los requisitos de cumplimiento.

Comprendiendo la Auditoría de Seguridad

Por Qué Importa la Auditoría de Seguridad

La infraestructura moderna enfrenta desafíos de seguridad constantes:

Deriva de Configuración: Los sistemas se desvían gradualmente de las líneas base de seguridad a medida que se acumulan cambios con el tiempo.

Vulnerabilidades Desconocidas: Software sin parches, configuraciones débiles y servicios innecesarios crean vectores de ataque.

Requisitos de Cumplimiento: Regulaciones como PCI-DSS, HIPAA y GDPR exigen evaluaciones de seguridad regulares.

Amenazas Internas: Configuraciones incorrectas y permisos excesivos representan riesgos incluso sin ataques externos.

Gestión de Superficie de Ataque: Comprender qué servicios, puertos y aplicaciones están expuestos es crítico para la seguridad.

Capacidades de Lynis

Lynis realiza más de 300 pruebas de seguridad en múltiples categorías:

Auditoría del Sistema: Parámetros del kernel, configuración de arranque, inventario de hardware Autenticación: Políticas de contraseñas, configuración SSH, configuraciones PAM Almacenamiento: Sistemas de archivos, opciones de montaje, estado de cifrado Red: Reglas de firewall, puertos abiertos, configuración IPv4/IPv6 Servicios: Demonios en ejecución, servicios innecesarios, configuraciones de servicios Software: Paquetes instalados, estado de actualizaciones, software obsoleto Criptografía: Configuraciones SSL/TLS, validación de certificados, fortalezas de claves Integridad de Archivos: Archivos escribibles por todos, binarios SUID/SGID, archivos huérfanos Cumplimiento: Puntos de referencia CIS, PCI-DSS, controles HIPAA

Arquitectura de Lynis

Lynis opera como un script de shell que:

  1. Detecta el sistema operativo y versión
  2. Determina herramientas y utilidades disponibles
  3. Ejecuta pruebas de seguridad en categorías lógicas
  4. Recopila hallazgos y genera recomendaciones de endurecimiento
  5. Calcula una puntuación de seguridad (índice de endurecimiento)
  6. Produce informes detallados y registros

Instalación y Configuración

Instalando Lynis en Ubuntu/Debian

# Método 1: Gestor de paquetes (puede no ser la última versión)
sudo apt-get update
sudo apt-get install lynis

# Método 2: Instalar última versión desde repositorio
sudo apt-get install apt-transport-https ca-certificates
wget -O - https://packages.cisofy.com/keys/cisofy-software-public.key | sudo apt-key add -
echo "deb https://packages.cisofy.com/community/lynis/deb/ stable main" | sudo tee /etc/apt/sources.list.d/cisofy-lynis.list
sudo apt-get update
sudo apt-get install lynis

# Verificar instalación
lynis show version

Instalando Lynis en CentOS/Rocky Linux

# Método 1: Repositorio EPEL
sudo dnf install epel-release
sudo dnf install lynis

# Método 2: Instalación manual
cd /tmp
wget https://downloads.cisofy.com/lynis/lynis-3.0.9.tar.gz
tar xzf lynis-3.0.9.tar.gz
cd lynis
sudo ./lynis audit system

# Instalar permanentemente
sudo mkdir /usr/local/lynis
sudo tar xzf lynis-3.0.9.tar.gz -C /usr/local/lynis --strip-components=1
sudo ln -s /usr/local/lynis/lynis /usr/local/bin/lynis

Instalando desde GitHub

# Clonar repositorio
cd /usr/local
sudo git clone https://github.com/CISOfy/lynis

# Crear enlace simbólico
sudo ln -s /usr/local/lynis/lynis /usr/local/bin/lynis

# Verificar instalación
lynis show version

# Actualizar vía git
cd /usr/local/lynis
sudo git pull

Verificando Instalación

# Verificar versión
lynis show version

# Mostrar comandos disponibles
lynis show commands

# Mostrar ayuda
lynis show help

# Verificar actualizaciones
lynis update info

Escaneo y Análisis Básico

Ejecutando su Primer Escaneo

# Auditoría básica del sistema
sudo lynis audit system

# Ver progreso del escaneo
# Lynis muestra progreso en tiempo real mientras realiza pruebas

# Verificar estado de salida
echo $?

Comprendiendo la Salida del Escaneo

Lynis produce varios tipos de salida:

Salida de Consola en Tiempo Real: Resultados codificados por colores mostrados durante el escaneo Archivo de Informe: Hallazgos detallados guardados en /var/log/lynis-report.dat Archivo de Registro: Detalles técnicos en /var/log/lynis.log

# Ver archivo de informe
sudo cat /var/log/lynis-report.dat

# Ver archivo de registro
sudo cat /var/log/lynis.log

# Filtrar advertencias
sudo grep "warning" /var/log/lynis.log

# Filtrar sugerencias
sudo grep "suggestion" /var/log/lynis.log

Interpretando Resultados

Lynis categoriza los hallazgos en niveles de severidad:

Verde (OK): Prueba de seguridad aprobada Amarillo (Advertencia): Problema de seguridad potencial que requiere atención Rojo (Crítico): Debilidad de seguridad seria que requiere acción inmediata Sugerencias: Recomendaciones para mejoras de seguridad

Índice de Endurecimiento: Lynis calcula una puntuación (0-100) indicando la postura de seguridad general.

# Extraer índice de endurecimiento del informe
sudo grep "hardening_index" /var/log/lynis-report.dat

Opciones Avanzadas de Escaneo

Personalizando Escaneos

# Escaneo rápido (omitir pruebas que consumen mucho tiempo)
sudo lynis audit system --quick

# Modo silencioso (salida mínima)
sudo lynis audit system --quiet

# Salida verbosa
sudo lynis audit system --verbose

# Perfil personalizado
sudo lynis audit system --profile /path/to/custom.prf

# Omitir pruebas específicas
sudo lynis audit system --tests-from-group malware --skip-test FILE-6310

# Ejecutar grupos de pruebas específicos
sudo lynis audit system --tests-from-group authentication,networking

Grupos de Pruebas Disponibles

# Listar todos los grupos de pruebas
lynis show groups

# Grupos de pruebas comunes:
# - accounting
# - authentication
# - boot_services
# - containers
# - crypto
# - file_integrity
# - firewalls
# - hardening
# - kernel
# - logging
# - malware
# - memory_processes
# - networking
# - ports_packages
# - scheduling
# - shells
# - storage
# - webservers

Escaneando Componentes Específicos

# Escanear solo seguridad del kernel
sudo lynis audit system --tests-from-group kernel

# Escanear mecanismos de autenticación
sudo lynis audit system --tests-from-group authentication

# Escanear configuración de red
sudo lynis audit system --tests-from-group networking

# Escanear seguridad del sistema de archivos
sudo lynis audit system --tests-from-group storage

Perfiles y Configuración Personalizados

Creando Perfiles Personalizados

Crear /etc/lynis/custom.prf:

# Perfil Personalizado de Lynis

# Omitir ciertas pruebas
skip-test=FILE-6310
skip-test=SSH-7408

# Opciones de escaneo personalizadas
config:quick=1

# Registro verboso
config:verbose=1

# Umbrales de advertencia personalizados
config:ssl_certificate_expiration_days=30

# Ignorar binarios específicos
config:ignore_bin=/usr/local/custom-app

# Directorio de plugins
config:plugin_dir=/etc/lynis/plugins/

# Estándares de cumplimiento
config:compliance_standards=pci-dss,hipaa

# Archivo de registro personalizado
config:logfile=/var/log/lynis-custom.log

Usar perfil personalizado:

sudo lynis audit system --profile /etc/lynis/custom.prf

Configurando Ajustes de Lynis

Editar /etc/lynis/default.prf:

# Opciones de configuración personalizadas

# Omitir advertencias para problemas específicos
skip-test=FILE-6310  # Omitir si no hay archivo /etc/issue

# Configurar umbral de advertencia de certificado SSL
ssl-certificate-expiration-days=30

# Configurar días mínimos de contraseña
password-minimum-days=1
password-maximum-days=90

# Ignorar rutas específicas
ignore-path=/mnt/backup
ignore-path=/var/quarantine

# Ubicaciones de binarios personalizados
binary_dir=/usr/local/bin

# Habilitar/deshabilitar plugins
plugin=compliance
plugin=security

Configuración Empresarial

Para configuración consistente en múltiples servidores:

# Crear configuración centralizada
sudo mkdir -p /etc/lynis/
sudo nano /etc/lynis/enterprise.prf
# Perfil Empresarial de Lynis

# Identificación de la empresa
config:company_name=Empresa Ejemplo
config:environment=production

# Requisitos de cumplimiento
config:compliance_standards=pci-dss,soc2,iso27001

# Umbrales personalizados
config:password_max_days=90
config:password_min_length=14
config:ssl_certificate_expiration_days=30

# Omitir excepciones específicas de la organización
skip-test=HTTP-6640  # Configuración de servidor web personalizada
skip-test=PKGS-7392  # Configuración aprobada del gestor de paquetes

# Registro mejorado
config:verbose=1
config:log_tests_incorrect_os=1

# Configuración de informes
config:colored_output=1
config:report_file=/var/log/lynis/lynis-report-$HOSTNAME.dat

Auditoría de Seguridad Automatizada

Escaneos Programados con Cron

# Crear script de auditoría
sudo nano /usr/local/bin/lynis-audit.sh
#!/bin/bash
# Script de Auditoría de Seguridad Automatizada con Lynis

DATE=$(date +%Y%m%d-%H%M%S)
LOG_DIR="/var/log/lynis"
REPORT_FILE="$LOG_DIR/lynis-report-$DATE.dat"
EMAIL="[email protected]"

# Crear directorio de registro
mkdir -p $LOG_DIR

# Ejecutar auditoría de Lynis
lynis audit system --quick --report-file $REPORT_FILE > /dev/null 2>&1

# Extraer índice de endurecimiento
HARDENING_INDEX=$(grep "hardening_index" $REPORT_FILE | cut -d'=' -f2)

# Contar advertencias
WARNING_COUNT=$(grep -c "warning\\[\\]" $REPORT_FILE)

# Generar resumen
SUMMARY="Auditoría de Seguridad Lynis - $(date)
Servidor: $(hostname)
Índice de Endurecimiento: $HARDENING_INDEX/100
Advertencias: $WARNING_COUNT

Informe detallado: $REPORT_FILE"

# Enviar resultados por email
echo "$SUMMARY" | mail -s "Auditoría de Seguridad Lynis: $(hostname)" $EMAIL

# Alertar si el índice de endurecimiento cae por debajo del umbral
if [ "$HARDENING_INDEX" -lt 70 ]; then
    echo "CRÍTICO: Índice de endurecimiento cayó a $HARDENING_INDEX" | \
        mail -s "ALERTA DE SEGURIDAD: $(hostname)" $EMAIL
fi

# Limpieza de informes antiguos (conservar 90 días)
find $LOG_DIR -name "lynis-report-*.dat" -mtime +90 -delete

Hacer ejecutable y programar:

sudo chmod +x /usr/local/bin/lynis-audit.sh

# Programar auditoría semanal
sudo crontab -e
0 3 * * 0 /usr/local/bin/lynis-audit.sh

Monitoreo Continuo

#!/bin/bash
# Script de monitoreo diario con Lynis

LOG_FILE="/var/log/lynis/daily-$(date +%Y%m%d).log"
BASELINE="/var/log/lynis/baseline-report.dat"
CURRENT="/var/log/lynis/current-report.dat"

# Ejecutar escaneo
lynis audit system --quiet --report-file $CURRENT

# Comparar con línea base
if [ -f "$BASELINE" ]; then
    # Verificar nuevas advertencias
    NEW_WARNINGS=$(comm -13 \
        <(grep "warning\\[\\]" $BASELINE | sort) \
        <(grep "warning\\[\\]" $CURRENT | sort))

    if [ -n "$NEW_WARNINGS" ]; then
        echo "Nuevas advertencias de seguridad detectadas:" > $LOG_FILE
        echo "$NEW_WARNINGS" >> $LOG_FILE
        mail -s "Nuevas Advertencias Lynis: $(hostname)" [email protected] < $LOG_FILE
    fi
else
    # Crear línea base inicial
    cp $CURRENT $BASELINE
fi

Analizando y Actuando sobre los Resultados

Revisando Advertencias

# Extraer todas las advertencias
sudo grep "warning\\[\\]" /var/log/lynis-report.dat

# Obtener detalles de advertencias
sudo lynis show warnings

# Filtrar tipos específicos de advertencias
sudo grep "warning.*SSH" /var/log/lynis-report.dat

# Contar advertencias por categoría
sudo grep "warning\\[\\]" /var/log/lynis-report.dat | \
    cut -d'|' -f2 | sort | uniq -c | sort -rn

Revisando Sugerencias

# Extraer todas las sugerencias
sudo grep "suggestion\\[\\]" /var/log/lynis-report.dat

# Mostrar sugerencias
sudo lynis show suggestions

# Formatear sugerencias para revisión
sudo grep "suggestion\\[\\]" /var/log/lynis-report.dat | \
    cut -d'=' -f2- | sed 's/|/ - /g'

Priorizando Remediación

Crear una lista de prioridades de remediación:

#!/bin/bash
# Generar informe de remediación priorizado

REPORT="/var/log/lynis-report.dat"
OUTPUT="/root/lynis-remediation-$(date +%Y%m%d).txt"

echo "Lista de Prioridades de Remediación Lynis - $(date)" > $OUTPUT
echo "=======================================" >> $OUTPUT
echo "" >> $OUTPUT

# Problemas críticos
echo "PRIORIDADES CRÍTICAS:" >> $OUTPUT
echo "-------------------" >> $OUTPUT
grep "warning\\[\\]" $REPORT | grep -i "root\|password\|ssh\|firewall" >> $OUTPUT
echo "" >> $OUTPUT

# Alta prioridad
echo "PRIORIDADES ALTAS:" >> $OUTPUT
echo "---------------" >> $OUTPUT
grep "warning\\[\\]" $REPORT | grep -i "update\|patch\|kernel" >> $OUTPUT
echo "" >> $OUTPUT

# Prioridad media
echo "PRIORIDADES MEDIAS:" >> $OUTPUT
echo "-----------------" >> $OUTPUT
grep "suggestion\\[\\]" $REPORT | grep -i "hardening\|security" >> $OUTPUT
echo "" >> $OUTPUT

# Índice de endurecimiento
echo "ÍNDICE DE ENDURECIMIENTO:" >> $OUTPUT
grep "hardening_index" $REPORT >> $OUTPUT

Implementando Recomendaciones

Flujo de trabajo de ejemplo para abordar hallazgos:

# 1. Revisar recomendación específica
sudo lynis show details SSH-7408

# 2. Verificar configuración actual
grep "PermitRootLogin" /etc/ssh/sshd_config

# 3. Implementar corrección
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

# 4. Verificar cambio
grep "PermitRootLogin" /etc/ssh/sshd_config

# 5. Reiniciar servicio
sudo systemctl restart sshd

# 6. Re-ejecutar prueba específica
sudo lynis audit system --tests SSH-7408

# 7. Documentar cambio
echo "$(date): Deshabilitado login root SSH - SSH-7408" >> /root/lynis-remediation.log

Integración con Pipelines CI/CD

Integración GitLab CI

.gitlab-ci.yml:

security_audit:
  stage: security
  image: ubuntu:22.04
  before_script:
    - apt-get update
    - apt-get install -y lynis
  script:
    - lynis audit system --quick --quiet
    - SCORE=$(grep "hardening_index" /var/log/lynis-report.dat | cut -d'=' -f2)
    - echo "Índice de Endurecimiento: $SCORE"
    - |
      if [ "$SCORE" -lt 70 ]; then
        echo "Puntuación de seguridad muy baja: $SCORE"
        exit 1
      fi
  artifacts:
    paths:
      - /var/log/lynis-report.dat
    expire_in: 30 days
  only:
    - master
    - production

Integración Jenkins

pipeline {
    agent any

    stages {
        stage('Auditoría de Seguridad') {
            steps {
                script {
                    sh '''
                        sudo lynis audit system --quick --quiet
                        SCORE=$(sudo grep "hardening_index" /var/log/lynis-report.dat | cut -d'=' -f2)
                        echo "Índice de Endurecimiento: $SCORE"

                        if [ "$SCORE" -lt 70 ]; then
                            echo "FALLO: Puntuación de seguridad por debajo del umbral"
                            exit 1
                        fi
                    '''
                }
            }
        }
    }

    post {
        always {
            archiveArtifacts artifacts: '/var/log/lynis-report.dat', allowEmptyArchive: true
        }
        failure {
            emailext (
                subject: "Auditoría de Seguridad Fallida: ${env.JOB_NAME}",
                body: "La auditoría de seguridad Lynis falló. Verifique la salida de la consola para detalles.",
                to: "[email protected]"
            )
        }
    }
}

GitHub Actions

.github/workflows/security-audit.yml:

name: Auditoría de Seguridad

on:
  push:
    branches: [ main ]
  schedule:
    - cron: '0 2 * * 0'  # Semanalmente

jobs:
  lynis-audit:
    runs-on: ubuntu-latest

    steps:
    - name: Instalar Lynis
      run: |
        sudo apt-get update
        sudo apt-get install -y lynis

    - name: Ejecutar Auditoría de Seguridad
      run: |
        sudo lynis audit system --quick --quiet

    - name: Verificar Índice de Endurecimiento
      run: |
        SCORE=$(sudo grep "hardening_index" /var/log/lynis-report.dat | cut -d'=' -f2)
        echo "Índice de Endurecimiento: $SCORE"

        if [ "$SCORE" -lt 70 ]; then
          echo "::error::Puntuación de seguridad muy baja: $SCORE"
          exit 1
        fi

    - name: Subir Informe
      uses: actions/upload-artifact@v2
      with:
        name: lynis-report
        path: /var/log/lynis-report.dat

Escaneo de Cumplimiento

Cumplimiento PCI-DSS

# Escanear para cumplimiento PCI-DSS
sudo lynis audit system --tests-from-group authentication,logging,hardening

# Verificar requisitos específicos de PCI-DSS
sudo grep "pci" /var/log/lynis-report.dat

# Generar informe de cumplimiento PCI-DSS
sudo lynis show compliance pci-dss

Verificaciones clave de PCI-DSS que realiza Lynis:

  • Políticas de contraseñas y complejidad
  • Mecanismos de bloqueo de cuenta
  • Registro y pistas de auditoría
  • Monitoreo de integridad de archivos
  • Controles de seguridad de red
  • Medidas de endurecimiento del sistema

Cumplimiento HIPAA

# Pruebas relevantes para HIPAA
sudo lynis audit system --tests-from-group authentication,crypto,file_integrity,logging

# Verificar estado de cifrado
sudo grep "encryption" /var/log/lynis-report.dat

# Revisar controles de acceso
sudo grep "permission" /var/log/lynis-report.dat

Alineación con Punto de Referencia CIS

# Ejecutar pruebas alineadas con puntos de referencia CIS
sudo lynis audit system --tests-from-group hardening

# Verificar contra controles CIS
sudo grep "cis" /var/log/lynis-report.dat

Generando Informes de Cumplimiento

#!/bin/bash
# Generar informe de cumplimiento

REPORT_FILE="/var/log/lynis-report.dat"
COMPLIANCE_REPORT="/root/compliance-report-$(date +%Y%m%d).txt"

echo "Informe de Cumplimiento de Seguridad - $(date)" > $COMPLIANCE_REPORT
echo "=====================================" >> $COMPLIANCE_REPORT
echo "" >> $COMPLIANCE_REPORT

# Controles de Autenticación
echo "CONTROLES DE AUTENTICACIÓN:" >> $COMPLIANCE_REPORT
grep "AUTH-" $REPORT_FILE | grep "warning\\|suggestion" >> $COMPLIANCE_REPORT
echo "" >> $COMPLIANCE_REPORT

# Estado de Cifrado
echo "CONTROLES DE CIFRADO:" >> $COMPLIANCE_REPORT
grep "CRYP-" $REPORT_FILE | grep "warning\\|suggestion" >> $COMPLIANCE_REPORT
echo "" >> $COMPLIANCE_REPORT

# Integridad de Archivos
echo "CONTROLES DE INTEGRIDAD DE ARCHIVOS:" >> $COMPLIANCE_REPORT
grep "FILE-" $REPORT_FILE | grep "warning\\|suggestion" >> $COMPLIANCE_REPORT
echo "" >> $COMPLIANCE_REPORT

# Registro
echo "CONTROLES DE REGISTRO:" >> $COMPLIANCE_REPORT
grep "LOGG-" $REPORT_FILE | grep "warning\\|suggestion" >> $COMPLIANCE_REPORT
echo "" >> $COMPLIANCE_REPORT

# Puntuación General
echo "ÍNDICE DE ENDURECIMIENTO:" >> $COMPLIANCE_REPORT
grep "hardening_index" $REPORT_FILE >> $COMPLIANCE_REPORT

Comparación y Tendencias

Comparación de Línea Base

#!/bin/bash
# Comparar escaneo actual con línea base

BASELINE="/var/log/lynis/baseline-report.dat"
CURRENT="/var/log/lynis-report.dat"
DIFF_REPORT="/root/lynis-diff-$(date +%Y%m%d).txt"

echo "Comparación de Línea Base Lynis - $(date)" > $DIFF_REPORT
echo "===================================" >> $DIFF_REPORT
echo "" >> $DIFF_REPORT

# Comparar índices de endurecimiento
BASE_SCORE=$(grep "hardening_index" $BASELINE | cut -d'=' -f2)
CURR_SCORE=$(grep "hardening_index" $CURRENT | cut -d'=' -f2)

echo "Índice de Endurecimiento Línea Base: $BASE_SCORE" >> $DIFF_REPORT
echo "Índice de Endurecimiento Actual: $CURR_SCORE" >> $DIFF_REPORT
echo "Cambio: $((CURR_SCORE - BASE_SCORE))" >> $DIFF_REPORT
echo "" >> $DIFF_REPORT

# Nuevas advertencias
echo "NUEVAS ADVERTENCIAS:" >> $DIFF_REPORT
comm -13 \
    <(grep "warning\\[\\]" $BASELINE | sort) \
    <(grep "warning\\[\\]" $CURRENT | sort) >> $DIFF_REPORT
echo "" >> $DIFF_REPORT

# Advertencias resueltas
echo "ADVERTENCIAS RESUELTAS:" >> $DIFF_REPORT
comm -23 \
    <(grep "warning\\[\\]" $BASELINE | sort) \
    <(grep "warning\\[\\]" $CURRENT | sort) >> $DIFF_REPORT

Tendencias Históricas

#!/bin/bash
# Rastrear índice de endurecimiento a lo largo del tiempo

LOG_DIR="/var/log/lynis"
TREND_FILE="/root/lynis-trend.csv"

# Inicializar CSV si no existe
if [ ! -f "$TREND_FILE" ]; then
    echo "Fecha,Índice_Endurecimiento,Cuenta_Advertencias,Cuenta_Sugerencias" > $TREND_FILE
fi

# Ejecutar escaneo
lynis audit system --quick --quiet

# Extraer métricas
DATE=$(date +%Y-%m-%d)
SCORE=$(grep "hardening_index" /var/log/lynis-report.dat | cut -d'=' -f2)
WARNINGS=$(grep -c "warning\\[\\]" /var/log/lynis-report.dat)
SUGGESTIONS=$(grep -c "suggestion\\[\\]" /var/log/lynis-report.dat)

# Agregar a archivo de tendencias
echo "$DATE,$SCORE,$WARNINGS,$SUGGESTIONS" >> $TREND_FILE

# Generar informe simple de tendencias
echo "Tendencia de Postura de Seguridad (Últimos 10 Escaneos):"
tail -10 $TREND_FILE | column -t -s','

Técnicas Avanzadas

Desarrollo de Pruebas Personalizadas

Crear prueba personalizada de Lynis:

# Crear directorio de plugins
sudo mkdir -p /etc/lynis/plugins

# Crear prueba personalizada
sudo nano /etc/lynis/plugins/custom_tests
#!/bin/sh

# Plugin de Prueba Personalizada de Lynis

# Verificar requisito de seguridad personalizado
Display --indent 2 --text "- Verificando política de seguridad personalizada"

if [ -f "/etc/custom-security.conf" ]; then
    LogText "Resultado: Configuración de seguridad personalizada encontrada"
    Display --indent 4 --text "- Config seguridad personalizada" --result OK --color GREEN
else
    LogText "Resultado: Configuración de seguridad personalizada NO encontrada"
    Display --indent 4 --text "- Config seguridad personalizada" --result WARNING --color YELLOW
    ReportWarning "CUSTOM-001" "Configuración de seguridad personalizada no encontrada"
    ReportSuggestion "CUSTOM-001" "Crear /etc/custom-security.conf"
fi

Habilitar plugin en perfil:

# En /etc/lynis/custom.prf
config:plugin_dir=/etc/lynis/plugins/

Escaneo Multi-Servidor

#!/bin/bash
# Escanear múltiples servidores vía SSH

SERVERS="web1 web2 db1 db2"
RESULTS_DIR="/root/lynis-results"

mkdir -p $RESULTS_DIR

for SERVER in $SERVERS; do
    echo "Escaneando $SERVER..."

    ssh root@$SERVER "lynis audit system --quick --quiet"

    scp root@$SERVER:/var/log/lynis-report.dat \
        $RESULTS_DIR/$SERVER-report-$(date +%Y%m%d).dat

    SCORE=$(grep "hardening_index" $RESULTS_DIR/$SERVER-report-$(date +%Y%m%d).dat | cut -d'=' -f2)

    echo "$SERVER: Índice de Endurecimiento $SCORE"
done

# Generar resumen
echo "Resumen de Seguridad Multi-Servidor - $(date)" > $RESULTS_DIR/summary.txt
for REPORT in $RESULTS_DIR/*-report-*.dat; do
    SERVER=$(basename $REPORT | cut -d'-' -f1)
    SCORE=$(grep "hardening_index" $REPORT | cut -d'=' -f2)
    echo "$SERVER: $SCORE" >> $RESULTS_DIR/summary.txt
done

Resolución de Problemas

Problemas Comunes

Errores de Permiso Denegado

# Siempre ejecutar Lynis con sudo
sudo lynis audit system

# Verificar permisos de archivo
sudo ls -l /var/log/lynis*

# Corregir permisos
sudo chmod 644 /var/log/lynis*
sudo chown root:root /var/log/lynis*

Pruebas Faltantes

# Actualizar Lynis a la última versión
cd /usr/local/lynis
sudo git pull

# Verificar pruebas disponibles
lynis show tests

# Verificar base de datos de pruebas
lynis show version

Problemas con Archivo de Informe

# Especificar ubicación de informe personalizada
sudo lynis audit system --report-file /tmp/custom-report.dat

# Verificar espacio en disco
df -h /var/log

# Limpiar informes antiguos
sudo rm /var/log/lynis-report.dat.*

Mejores Prácticas

Estrategia de Auditoría de Seguridad

  1. Establecer Línea Base: Escaneo completo inicial para establecer línea base de seguridad
  2. Escaneos Regulares: Escaneos automatizados semanales para detectar deriva de configuración
  3. Remediación Priorizada: Abordar hallazgos críticos primero
  4. Seguimiento de Cambios: Comparar escaneos para identificar regresiones de seguridad
  5. Integración de Cumplimiento: Alinear auditorías con requisitos regulatorios
  6. Documentación: Mantener registros de hallazgos y acciones de remediación

Mejores Prácticas Operacionales

  1. Control de Versiones: Rastrear perfiles y pruebas personalizadas de Lynis en Git
  2. Programación Automatizada: Implementar escaneo programado automatizado
  3. Umbrales de Alerta: Configurar alertas para caídas del índice de endurecimiento
  4. Retención de Informes: Mantener informes históricos para análisis de tendencias
  5. Integración: Incorporar Lynis en flujos de trabajo CI/CD y despliegue
  6. Capacitación del Equipo: Asegurar que los equipos de seguridad y operaciones comprendan los hallazgos

Conclusión

Lynis proporciona capacidades de auditoría de seguridad completas esenciales para mantener una postura de seguridad robusta en servidores Linux. Al realizar más de 300 pruebas de seguridad en autenticación, red, criptografía, sistemas de archivos y configuración del sistema, Lynis identifica vulnerabilidades y configuraciones incorrectas que podrían ser explotadas por atacantes.

Puntos clave de esta guía:

Evaluación Completa: Lynis evalúa la seguridad de manera holística, examinando configuración, servicios, permisos y alineación de cumplimiento más allá del simple escaneo de vulnerabilidades.

Inteligencia Accionable: Recomendaciones detalladas permiten mejoras de seguridad sistemáticas priorizadas por riesgo e impacto.

Monitoreo Continuo: El escaneo automatizado regular detecta deriva de configuración y regresiones de seguridad antes de que puedan ser explotadas.

Soporte de Cumplimiento: Lynis ayuda a cumplir con requisitos regulatorios identificando brechas en PCI-DSS, HIPAA y otros marcos de cumplimiento.

Capacidades de Integración: Integración perfecta con pipelines CI/CD, gestión de configuración y sistemas de monitoreo permite automatización de seguridad.

Al implementar las estrategias de escaneo, técnicas de automatización y flujos de trabajo de remediación descritos en esta guía, establece auditoría de seguridad proactiva que mejora continuamente la postura de seguridad de su infraestructura. Los escaneos regulares de Lynis, junto con remediación sistemática de hallazgos, reducen significativamente la superficie de ataque y aseguran el cumplimiento con mejores prácticas de seguridad y requisitos regulatorios.

Recuerde que la auditoría de seguridad es un proceso continuo, no un evento único. Establezca cadencias de escaneo regulares, rastree métricas de seguridad a lo largo del tiempo y refine continuamente su postura de seguridad basándose en hallazgos de Lynis e inteligencia de amenazas emergentes.