Files
Security-Reports/lynis
Eduardo David Paredes Vara 80245f3227 weekly lynis
2025-12-05 00:55:03 +00:00
..
2025-12-05 00:35:56 +00:00
2025-12-05 00:35:56 +00:00
2025-12-05 00:55:03 +00:00
2025-12-05 00:55:03 +00:00

🔒 Lynis Security Report Generator

Sistema automatizado para generar y enviar reportes de seguridad de Lynis en múltiples formatos con diseño moderno y profesional.

📋 Descripción

Este proyecto automatiza la ejecución de auditorías de seguridad con Lynis y genera reportes en tres formatos:

  • TXT: Salida original sin formato (referencia técnica completa)
  • HTML: Reporte web con diseño moderno, compacto y en columnas paralelas
  • PDF: Versión imprimible del reporte HTML (soporta múltiples métodos de generación)

Los reportes se envían automáticamente por correo electrónico con todos los formatos adjuntos.

Características

Diseño HTML Moderno

  • 🎨 Interfaz elegante con gradientes profesionales
  • 📊 Visualización clara de métricas de seguridad en 3 columnas paralelas
  • 🎯 Código de colores según nivel de riesgo
  • 📱 Diseño responsive y optimizado para impresión
  • Efectos visuales y animaciones sutiles
  • 📏 Diseño compacto y centrado para mejor aprovechamiento del espacio

Componentes del Reporte

  • Hardening Index: Índice de endurecimiento del sistema (0-100)
  • Test Results: Resumen de tests realizados, warnings y sugerencias
  • Security Components: Estado de firewall, IDS/IPS y antimalware
  • Warnings: Problemas críticos que requieren atención inmediata
  • Suggestions: Recomendaciones para mejorar la seguridad
  • Full Report: Salida completa de Lynis en formato raw

🚀 Instalación

Requisitos del Sistema

# Lynis (herramienta de auditoría)
sudo apt install lynis

# Python 3.x
sudo apt install python3 python3-pip python3-venv

Dependencias Python

# Crear entorno virtual (recomendado)
python3 -m venv venv
source venv/bin/activate

# Instalar dependencias
pip install -r requirements.txt

Herramientas para Generación de PDF

El script intenta varios métodos automáticamente (en orden de prioridad). Instala al menos uno:

Opción 1: wkhtmltopdf (Recomendado - Mejor calidad y soporte CSS)

sudo apt install wkhtmltopdf

Opción 2: WeasyPrint (Alternativa Python con buen soporte CSS)

pip install weasyprint

Opción 3: Chromium Headless (Alternativa con motor de navegador)

sudo apt install chromium-browser
# O en sistemas basados en Debian/Ubuntu
sudo apt install chromium

El script intentará usar wkhtmltopdf primero, luego weasyprint, y finalmente chromium/chrome headless. Todas estas opciones generan PDFs con formato visual completo (no texto plano).

⚙️ Configuración

Edita el archivo config.py con tus parámetros:

# Comando Lynis
LYNIS_CMD = ["/usr/bin/lynis", "audit", "system", "--no-colors"]

# Directorio de salida
BASE_DIR = "/opt/lynis-report"

# Configuración SMTP
SMTP_HOST = "smtp.example.com"
SMTP_PORT = 587
SMTP_USER = "tu-usuario"

# La contraseña se lee desde variable de entorno
SMTP_PASS = os.environ.get("SENDGRID_API_KEY", "")

# Configuración de correo
FROM_ADDR = "security-reports@example.com"
TO_ADDRS = [
    "admin@example.com",
]

SUBJECT_PREFIX = "[SECURITY] Lynis report"

Variables de Entorno

# Configura la API key/password del SMTP
export SENDGRID_API_KEY="tu-api-key-aqui"

# O si usas Gmail/otro proveedor
export SMTP_PASSWORD="tu-password-aqui"

📖 Uso

Ejecución Manual

# Activar entorno virtual
source venv/bin/activate

# Ejecutar el script
python3 lynis_report.py

Ejecución Automática (Cron)

Para ejecutar el reporte semanalmente:

# Editar crontab
crontab -e

# Añadir línea (ejemplo: cada lunes a las 2 AM)
0 2 * * 1 /home/usuario/Security-Reports/lynis/venv/bin/python3 /home/usuario/Security-Reports/lynis/lynis_report.py

📁 Estructura del Proyecto

lynis/
├── config.py              # Configuración del sistema
├── lynis_report.py        # Script principal
├── requirements.txt       # Dependencias Python
├── templates/
│   └── report.html.j2     # Plantilla HTML del reporte
├── venv/                  # Entorno virtual (opcional)
└── # Lynis Security Report Generator

Generador automático de informes de seguridad Lynis con formato HTML/PDF y envío por correo electrónico.

## Instalación

1. Instalar dependencias del sistema:
```bash
sudo apt install lynis wkhtmltopdf
  1. Instalar dependencias de Python:
pip install -r requirements.txt

Configuración

Edita config.py con tus parámetros:

  • Servidor SMTP y credenciales
  • Direcciones de correo
  • Directorio de salida
  • Comando de Lynis

Ejecución Manual

python3 lynis_report.py

Instalación del Cron Semanal

Para ejecutar automáticamente cada semana:

sudo cp lynis-weekly /etc/cron.weekly/
sudo chmod +x /etc/cron.weekly/lynis-weekly

El script se ejecutará automáticamente cada semana y guardará logs en /var/log/lynis-report.log.

Verificar la configuración del cron

# Ver logs de ejecución
sudo tail -f /var/log/lynis-report.log

# Probar ejecución manual del cron
sudo /etc/cron.weekly/lynis-weekly

Características

  • Ejecuta Lynis y genera informes en formato TXT, HTML y PDF
  • Envía informes por correo electrónico con los archivos adjuntos
  • Parsing de métricas clave (Hardening Index, warnings, suggestions)
  • Formato HTML con estilos CSS modernos
  • Limpieza automática de archivos temporales
  • Ejecución semanal automática vía cron # Este archivo

## 📊 Archivos Temporales

Los archivos se generan temporalmente en el directorio configurado (`BASE_DIR`) durante la ejecución:

/opt/lynis-report/ ├── lynis-hostname-20251204-0200.txt # Salida original (temporal) ├── lynis-hostname-20251204-0200.html # Reporte HTML (temporal) └── lynis-hostname-20251204-0200.pdf # Reporte PDF (temporal)


**Nota**: Todos los archivos se eliminan automáticamente después de enviar el correo electrónico. Los reportes solo se conservan en los adjuntos del email.

## 📧 Correo Electrónico

El email incluye:
- **Cuerpo HTML**: Versión completa del reporte con diseño elegante
- **Adjunto TXT**: Salida original de Lynis
- **Adjunto PDF**: Reporte formateado para impresión/distribución

## 🎨 Personalización

### Modificar Diseño

Edita `templates/report.html.j2`:

**Cambiar colores:**
```css
/* Fondo principal */
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);

/* Tarjetas */
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);

Ajustar columnas del resumen:

.summary-grid {
  grid-template-columns: repeat(3, 1fr);  /* 3 columnas iguales */
  gap: 20px;
}

Añadir Secciones

Modifica la plantilla Jinja2 en templates/report.html.j2 y actualiza la función generate_html() en lynis_report.py.

🔧 Solución de Problemas

PDF no se genera

# Verifica qué herramientas están instaladas
which wkhtmltopdf
python3 -c "import weasyprint" 2>/dev/null && echo "weasyprint: installed"
which chromium || which chromium-browser || which google-chrome

# Instala al menos una opción (que genere PDFs con formato visual)
sudo apt install wkhtmltopdf                    # Opción 1 (mejor)
pip install weasyprint                          # Opción 2
sudo apt install chromium-browser              # Opción 3

El script intentará las 3 opciones automáticamente. Todas generan PDFs visuales renderizados.

Error de permisos con Lynis

# Lynis requiere permisos de root/sudo
sudo python3 lynis_report.py

# O configura permisos específicos
sudo visudo
# Añade: usuario ALL=(ALL) NOPASSWD: /usr/bin/lynis

Error de SMTP

# Verifica la variable de entorno
echo $SENDGRID_API_KEY

# Prueba conexión SMTP
telnet smtp.example.com 587

📝 Ejemplo de Salida

Hardening Index

76/100 (Medium)

Componentes de Seguridad

🔥 Firewall: ✅
🛡️ IDS/IPS: ✅
🦠 Malware Scanner: ⚠️

Tests

260 Tests realizados
1 Warning
31 Suggestions

🔐 Seguridad

  • Credenciales: Nunca incluyas contraseñas en config.py, usa variables de entorno
  • Permisos: Protege los archivos de configuración con permisos restrictivos
  • Logs: Revisa regularmente /var/log/lynis.log
  • SMTP: Usa conexiones cifradas (STARTTLS/SSL)
# Asegurar permisos
chmod 600 config.py
chmod 700 lynis_report.py

🤝 Contribución

Para contribuir al proyecto:

  1. Haz fork del repositorio
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📄 Licencia

Este proyecto está bajo tu propia licencia. Lynis es software libre bajo GPLv3.

🔗 Enlaces Útiles

👤 Autor

Eduardo - Sistema de Reportes de Seguridad

📞 Soporte

Para problemas o preguntas:

  • Revisa la sección de solución de problemas
  • Consulta los logs en /var/log/lynis.log
  • Verifica la configuración SMTP y las credenciales

Nota: Este script debe ejecutarse con privilegios suficientes para que Lynis pueda auditar el sistema completamente.