🛡️ NVD Vulnerability Monitor

📋 Descripción

NVD Vulnerability Monitor es un sistema de monitoreo automatizado de vulnerabilidades críticas y de alto riesgo desde la National Vulnerability Database (NVD). El sistema está diseñado para Ubuntu 24.04+ LTS y proporciona detección en tiempo real de vulnerabilidades, almacenamiento persistente en base de datos, y notificaciones automáticas por correo electrónico.

🎯 Características Principales

  • ✅ Monitoreo Automático 24/7: Consulta NVD API cada 4 horas (configurable)
  • ✅ Descarga Real de Vulnerabilidades: Integración completa con NVD API v2.0
  • ✅ Filtrado Inteligente: Solo vulnerabilidades CRITICAL y HIGH
  • ✅ Base de Datos Persistente: Almacenamiento en MySQL/MariaDB
  • ✅ Notificaciones HTML/Texto: Alertas por email con formato profesional
  • ✅ Soporte Multi-SMTP: Compatible con Gmail, Outlook, Office365 y servidores personalizados
  • ✅ Administración Completa: Suite completa de comandos CLI
  • ✅ Sistema de Permisos: Gestión segura con usuario dedicado
  • ✅ Docker Ready: Contenedores disponibles para despliegue rápido
  • ✅ Instalación/Desinstalación: Scripts automatizados completos

🏗️ Arquitectura del Sistema


📁 Estructura del Sistema


🚀 Instalación

Requisitos del Sistema

ComponenteVersión MínimaNotas
Sistema OperativoUbuntu 20.04+ LTSProbado en 20.04, 22.04, 24.04
Python3.8+Python 3.10+ recomendado
MySQL/MariaDBMySQL 8.0+ / MariaDB 10.3+Se instala automáticamente si no existe
RAM1GB mínimo2GB recomendado
Espacio en Disco500MBPara aplicación y logs
Conexión InternetRequeridaPara NVD API y notificaciones

Recomendaciones

# Validar que la fecha del sistema este correcta y en la zona horaria adecuada
date
# Si fuese necesario configurar zona horaria
sudo timedatectl set-timezone "America/Mexico_City"

Instalación Rápida

# 1. Clonar el repositorio
git clone https://github.com/juanpadiaz/nvd-monitor.git
cd nvd-monitor

# 2. Ejecutar instalación (interactiva)
sudo bash install.sh

# 3. Verificar instalación
sudo /var/lib/nvd-monitor/scripts/test_installation.sh

Instalación con Docker

# 1. Construir imagen
cd docker
docker build -t nvd-monitor:latest .

# 2. Ejecutar contenedor
docker run -d \
  --name nvd-monitor \
  -e NVD_API_KEY="tu-api-key" \
  -e SMTP_SERVER="smtp.gmail.com" \
  -e SMTP_PORT="587" \
  -e SENDER_EMAIL="tu-email@gmail.com" \
  -e SENDER_PASSWORD="tu-contraseña-app" \
  -e RECIPIENT_EMAIL="destino@example.com" \
  -v nvd-monitor-data:/var/lib/mysql \
  -v nvd-monitor-logs:/var/log/nvd-monitor \
  --restart unless-stopped \
  nvd-monitor:latest

# 3. Ver logs
docker logs -f nvd-monitor

Post-Instalación

# 1. Cargar vulnerabilidades iniciales (últimos 7 días)
sudo nvd-monitor --check-recent 7

# 2. Ver vulnerabilidades cargadas
sudo nvd-admin show-vulns --severity HIGH --limit 20

# 3. Probar notificaciones
sudo nvd-admin test-email

# 4. Ver estado del servicio
sudo systemctl status nvd-monitor

⚙️ Configuración

Configuración durante la Instalación

El instalador solicita interactivamente:

  1. API Key de NVD (Opcional pero recomendado)
  2. Servidor SMTP (Ejemplos proporcionados)
    • Gmail: smtp.gmail.com:587
    • Outlook: smtp-mail.outlook.com:587
    • Office 365: smtp.office365.com:587
  3. Credenciales de Email
    • Email remitente
    • Habilitar la verificación de dos pasos (para Gmail)
    • Contraseña (usar contraseña de aplicación para Gmail/Outlook)
    • Emails destinatarios (soporta múltiples separados por comas)

Actualizar Configuración

# Método interactivo
sudo nvd-admin update-config

# Editar directamente
sudo nano /etc/nvd-monitor/config.ini
sudo systemctl restart nvd-monitor

Archivo de Configuración (config.ini)

[database]
host = localhost
port = 3306
database = nvd_monitor
user = nvd_user
password = [auto-generada]

[nvd]
api_key = [tu-api-key]
base_url = https://services.nvd.nist.gov/rest/json/cves/2.0

[email]
smtp_server = smtp.gmail.com
smtp_port = 587
sender_email = alertas@tudominio.com
sender_password = [contraseña-aplicación]
recipient_email = admin@tudominio.com,security@tudominio.com

[monitoring]
check_interval_hours = 4
results_per_page = 200
days_back = 7

[logging]
level = INFO
file = /var/log/nvd-monitor/nvd-monitor.log

🔧 Comandos de Administración

Comandos Principales

# === ESTADO Y VERIFICACIÓN ===
nvd-status                         # Estado rápido del servicio
nvd-admin status                   # Estado detallado con estadísticas
nvd-admin test-db                  # Probar conexión a base de datos
nvd-admin test-nvd-api             # Probar API de NVD
nvd-admin test-email [email]       # Enviar email de prueba

# === MONITOREO MANUAL ===
nvd-monitor --run-once             # Ejecutar ciclo de monitoreo
nvd-monitor --check-recent 7       # Cargar vulnerabilidades de últimos N días
nvd-monitor --test-api             # Solo probar conectividad API

# === CONSULTA DE VULNERABILIDADES ===
nvd-admin show-vulns --limit 10              # Últimas 10 vulnerabilidades
nvd-admin show-vulns --limit 20              # Últimas 20 vulnerabilidades
nvd-admin show-vulns --severity CRITICAL     # Solo críticas
nvd-admin show-vulns --severity HIGH         # Solo altas

# === CONFIGURACIÓN ===
nvd-admin update-config            # Actualizar configuración interactiva

Gestión del Servicio

# Control del servicio
sudo systemctl start nvd-monitor      # Iniciar
sudo systemctl stop nvd-monitor       # Detener
sudo systemctl restart nvd-monitor    # Reiniciar
sudo systemctl status nvd-monitor     # Estado

# Logs del sistema
sudo journalctl -u nvd-monitor -f     # Tiempo real
sudo journalctl -u nvd-monitor -n 100 # Últimas 100 líneas
sudo journalctl -u nvd-monitor --since "1 hour ago"

# Logs de aplicación
tail -f /var/log/nvd-monitor/nvd-monitor.log

📧 Sistema de Notificaciones

Características del Email

  • Formato Dual: HTML y texto plano
  • Clasificación Visual: Críticas en rojo, altas en naranja
  • Información Completa: CVE ID, CVSS score, descripción, fecha
  • Enlaces Directos: A la página de NVD para cada CVE
  • Límite Inteligente: Muestra las 5 más críticas de cada tipo
  • Soporte Multi-destinatario: Envío a múltiples correos

Ejemplo de Notificación

🚨 ALERTA DE VULNERABILIDADES NVD
==================================
Se han detectado 5 vulnerabilidades críticas/altas

⚠️ VULNERABILIDADES CRÍTICAS (2)
- CVE-2025-0001 | CVSS: 9.8 | Publicado: 2025-01-15
- CVE-2025-0002 | CVSS: 9.1 | Publicado: 2025-01-15

⚠️ VULNERABILIDADES ALTAS (3)
- CVE-2025-0003 | CVSS: 8.8 | Publicado: 2025-01-15
- CVE-2025-0004 | CVSS: 8.1 | Publicado: 2025-01-14
- CVE-2025-0005 | CVSS: 7.5 | Publicado: 2025-01-14

Ver detalles completos en NVD

🐳 Docker Support

Dockerfile Incluido

FROM ubuntu:22.04
MAINTAINER Juan Pablo Díaz <jpdiaz.com>

# Instalar dependencias
RUN apt-get update && apt-get install -y \
    python3 python3-pip python3-venv \
    mariadb-server supervisor \
    && rm -rf /var/lib/apt/lists/*

# Copiar aplicación
COPY . /opt/nvd-monitor/

# Instalar NVD Monitor
RUN cd /opt/nvd-monitor && \
    bash install_docker.sh

# Exponer volúmenes
VOLUME ["/var/lib/mysql", "/var/log/nvd-monitor", "/etc/nvd-monitor"]

# Iniciar servicios
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/nvd-monitor.conf"]

Docker Compose

version: '3.8'
services:
  nvd-monitor:
    build: .
    container_name: nvd-monitor
    restart: unless-stopped
    environment:
      - NVD_API_KEY=${NVD_API_KEY}
      - SMTP_SERVER=${SMTP_SERVER}
      - SENDER_EMAIL=${SENDER_EMAIL}
      - SENDER_PASSWORD=${SENDER_PASSWORD}
      - RECIPIENT_EMAIL=${RECIPIENT_EMAIL}
    volumes:
      - nvd-db:/var/lib/mysql
      - nvd-logs:/var/log/nvd-monitor
      - nvd-config:/etc/nvd-monitor
    healthcheck:
      test: ["CMD", "nvd-admin", "test-db"]
      interval: 5m
      timeout: 10s
      retries: 3

volumes:
  nvd-db:
  nvd-logs:
  nvd-config:

🗑️ Desinstalación

Desinstalación Interactiva

# Ejecutar script de desinstalación
sudo bash uninstall.sh

# El script preguntará qué componentes eliminar:
# - Base de datos (con opción de respaldo)
# - Usuario del sistema
# - Logs del sistema
# - Archivos de configuración

Desinstalación Completa (Forzada)

# Eliminar todo sin confirmación
sudo bash uninstall.sh --force

🔒 Seguridad

Medidas Implementadas

  • Usuario Dedicado: Ejecuta como nvd-monitor sin privilegios
  • Permisos Restrictivos: Configuración con permisos 640
  • HTTPS Only: Todas las conexiones externas encriptadas
  • Validación de Datos: Sanitización de entrada de APIs
  • Contraseñas Seguras: Auto-generadas de 16 caracteres
  • Sin Exposición: Contraseñas nunca en logs o salidas

Recomendaciones de Seguridad

  1. Use API Key de NVD: Mejora los límites y la confiabilidad
  2. Contraseñas de Aplicación: Para Gmail/Outlook con 2FA
  3. Firewall: Solo permitir salida HTTPS (443) y SMTP (587/465)
  4. Actualizaciones: Mantener el sistema operativo actualizado
  5. Monitoreo: Revisar logs regularmente por anomalías

🐛 Solución de Problemas

Problemas Comunes

Error: «font-family» al enviar emails

# Este error fue corregido en v1.0.9
# Si persiste, verificar versión:
grep "Versión" /opt/nvd-monitor/nvd_monitor.py

# Actualizar si es necesario:
cd nvd-monitor
git pull
sudo bash install_final.sh

No llegan las notificaciones

# 1. Verificar configuración
sudo nvd-admin test-email

# 2. Para Gmail, verificar:
# - Usar contraseña de aplicación (no la normal)
# - 2FA debe estar activo
# - Generar en: https://myaccount.google.com/apppasswords

# 3. Ver logs detallados
sudo journalctl -u nvd-monitor | grep -i email

Base de datos no conecta

# 1. Verificar servicio MySQL/MariaDB
sudo systemctl status mysql
sudo systemctl status mariadb

# 2. Probar conexión
sudo nvd-admin test-db

# 3. Ver configuración
sudo cat /etc/nvd-monitor/config.ini | grep -A5 database

📊 Métricas del Proyecto

MétricaValor
📈 Líneas de Código~4,000 líneas
🐍 Versión Python3.8+ compatible
📦 Dependencias7 packages Python
🔄 Versión Actual1.0.9
🧪 Sistemas ProbadosUbuntu 20.04, 22.04, 24.04
📝 Documentación100% completa
🐳 DockerIncluido
🛡️ Vulnerabilidades0 conocidas

👨‍💻 Autor y Licencia

  • Desarrollador: Juan Pablo Díaz Ezcurdia
  • Websitejpdiaz.com
  • Licencia: MIT License
  • Versión: 1.0.9
  • Última actualización: Julio 2025

🤝 Contribuciones

Las contribuciones son bienvenidas! Por favor:

  1. Fork el proyecto
  2. Crea tu feature branch (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la branch (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📝 Changelog

v1.0.9 (Julio 2025)

  • ✅ Implementación completa de descarga de vulnerabilidades
  • ✅ Corrección del error «font-family» en emails
  • ✅ Soporte para múltiples servidores SMTP
  • ✅ Mejoras en permisos y seguridad
  • ✅ Script de desinstalación interactivo
  • ✅ Soporte Docker completo
  • ✅ Documentación actualizada

v1.0.1 (Mayo 2024)

  • 🎉 Release inicial
  • 📧 Sistema básico de notificaciones
  • 🗄️ Integración con base de datos
  • ⚙️ Servicio systemd

Instalar Compiz Fusion en Ubuntu 8.04

Lo primero que necesitamos es tener aceleración gráfica, entonces lo que haremos es instalar los últimos drivers de nuestra tarjeta de video.

Para que la instalación sea mas fácil usaremos envy, un excelente programa que nos instala automáticamente los últimos drivers disponibles para nuestra tarjeta gráfica, sea modelo de ATI o Nvidia.

Entonces ingresamos en un terminal lo siguiente.

“sudo aptitude install envyng-core envyng-gtk” (o envyng-gt si usamos kubuntu)

Una vez que nos instala. vamos al menú Aplicaciones/herramientas del sistema/EnvyNG, abrimos y elegimos el fabricante de la tarjeta que tengamos. (en mi caso Nvidia..) y le damos instalar.

Aceptamos todo y cuando nos termina de instalar los paquetes reiniciamos, si todo fue bien cuando nos vuelva a iniciar el sistema nos saltara el logotipo de nvidia y ya tendremos aceleración gráfica.

Ahora instalamos algunas cositas mas que nos permitirán configurar compiz fusión a nuestro antojo. tecleando o copiando lo siguiente en el terminal.

sudo aptitude install compizconfig-settings-manager emerald fusion-icon

y listo, ya tenemos todo lo necesario para iniciar compiz.

Vamos al menú Aplicaciones / Herramientas del sistema / Compiz Fusion icon. y lo abrimos. si no nos cargo el gestor de ventanas vamos a la parte superior derecha en la bandeja de sistema y hacemos boton derecho sobre el icono de compiz y lo seleccionamos como gestor de ventanas.

Desde ese iconito tenemos acceso a todos lo relacionado a compiz, las configuraciones ( setting manager) y el decorador de ventanas (emerald themes manager).. y un par de opciones mas que ahí las verán.

Esta seria la ventana de configuración de compiz fusion…

Desde aquí activaremos todos los efectos.

Por ej: para activar el cubo abrimos esa venta, vamos a la parte derecha donde dice escritorio. y seleccionamos el icono de (descktop cube) y nos abrira una ventana para desactivar otro efecto que no es compatible con el cubo. le damos que desactive, después ahí mismo seleccionamos la opciones (rotate cube), ahora vamos otra vez a la parte derecha de las categorías donde dice efectos la seleccionamos y buscamos donde dice (reflejo del cubo) y lo activamos. y listo ahora manteniendo las teclas crtl+alt presionadas y con el mouse presionamos en cualquier parte de la pantalla y giramos nuestro escritorio
también podemos ir a la categoría utilidades y buscar la opcion (cube caps) y activarla para que nos muestre una imagen en la parte superior e inferior del cubo.

Dentro de cada una de estas opciones, descktope cube, rotate cube, reflejos del cubo, cube caps y las demás, pueden modificar parámetros referidos solo a ese efecto en particular, logrando configurar y ajustar todo a nuestro gusto.

Ahora bien, no se si notaron que en el cubo y en cualquier efecto que apliquen, se notan los bordes dentados. aquí lo pueden ver bien.

Esto es porque no tienen ningún efecto de antialiasing aplicado, para poder aplicar antialiasing con las placas de video nvidia podemos ingresar al panel de configuración de nvidia que se encuentra en el menú Sistema / Administración / NVIDIA X Server Settings; una vez abierto vamos al submenu X screen 0 / Antialiasing setting y modificamos los valores según la gráfica que tengamos. en la imagen esta todo al máximo como pueden ver.

Con ese nivel de antialiasing al máximo y de filtros anisotropicos el cubo quedaría de esta manera.

Mucho mejor no? bueno en mi caso no puedo tenerlo al maximo porq con una 7300gt se cuelga un poco. asi que lo tengo a 4x como mucho y anda muy bien. Nota: cada vez que cambiemos un valor de antialiasing tendremos que recargar el gestor de ventanas haciendo boton derecho en el icono de compiz y haciendo clic en (reload windows manager) o tambien cuando estamos por cambiar un valor desde select windows manager nos pasamos a metacity(gestor de ventanas de gnome). cambiamos el valor y volvemos a elegir compiz.

Otra manera de mejorar la calidad de imagen en algunos efectos es si en su configuración encontramos la opción mipmaps para activar. obviamente la activamos porque mejora muchisimo la imagen. En el siguiente efecto (expo plugin) se puede notar la diferencia.

(sin mipmaps activado..)

(Con mipmaps activado..)

Otra forma de mejorar la calidad general de las texturas de los efectos es dentro de las configuraciones de compiz en (general Options) la primera de todas. ingresamos y vamos a la solapa (display settings), ahi veremos la posibilidad de cambiar la opcion de filtrado de las texturas. tambien le dejo dos imagenes que saque con el efecto que te permite hacer zoom sobre el escritorio para que noten la diferencia entre seleccionar (fast) o (Best) en el filtrado de las texturas.

(Fast… sin mucho tratamiento de la imagen..)

(Best.. con un mejor tratamiento..)

Como ultimo consejo. Antes de ponerse a jugar con las configuraciones de antialiasing y de los efectos, guarden lo que están haciendo porque se puede colgar el servidor gráfico y tendran que reiniciar la maquina.