🛡️ 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

Wazuh IP Reputation Checker

📋 Descripción

Wazuh IP Reputation Checker es un sistema avanzado de análisis de reputación de IPs que se integra con Wazuh SIEM para enriquecer automáticamente los eventos de seguridad con información de inteligencia de amenazas de múltiples fuentes.


Características Principales

  • 🔍 Integración con Wazuh API: Extracción automática de IPs desde alertas de Wazuh
  • 🌐 Múltiples fuentes de inteligencia:
    • VirusTotal
    • AbuseIPDB
    • Shodan
  • 📊 Sistema de puntuación de riesgo: Clasificación automática de IPs (CRITICAL, HIGH, MEDIUM, LOW, SAFE)
  • 📧 Notificaciones inteligentes: Alertas por email con formato HTML enriquecido
  • 💾 Base de datos MariaDB/MySQL: Almacenamiento persistente con estadísticas históricas
  • 🔄 Monitoreo continuo: Análisis automático con intervalos configurables
  • 🛡️ Cache inteligente: Evita consultas repetidas a las APIs
  • 📈 Estadísticas y reportes: Métricas detalladas del sistema
  • 🔧 Herramientas de administración: CLI completa para gestión

🏗️ Diagrama Conceptual


🔓 Arquitectura del Sistema


📁 Estructura de archivos


🚀 Instalación

Requisitos del Sistema

  • Ubuntu 22.04 LTS
  • Python 3.10+
  • Acceso a Wazuh Manager API
  • Conexión a internet para APIs externas
  • Privilegios de administrador para instalación

Recomendaciones

Instalación Rápida

# Descargar el script de instalación
wget https://raw.githubusercontent.com/juanpadiaz/wazuh-ip-reputation/main/wazuh_ip_reputation_install.sh

# Dar permisos de ejecución
chmod +x wazuh_ip_reputation_install.sh

# Ejecutar instalación
sudo bash wazuh_ip_reputation_install.sh

⚙️ Configuración

Configuración durante la Instalación

El instalador solicitará interactivamente:

  1. Configuración de Wazuh:
    • Host/IP del Wazuh Manager
    • Puerto de la API (default: 55000)
    • Usuario y contraseña de la API
  2. API Keys de Reputación:
    • VirusTotal API Key
    • AbuseIPDB API Key
    • Shodan API Key (opcional)
  3. Notificaciones por Email:
    • Servidor SMTP y puerto
    • Email remitente y contraseña
    • Emails destinatarios (separados por comas)

Actualizar Configuración

# Editar configuración manualmente
sudo wazuh-reputation config

# O usar el editor directamente
sudo nano /etc/wazuh-ip-reputation/config.ini

Archivo de Configuración (config.ini)

[general]
log_level = INFO
log_file = /var/log/wazuh-ip-reputation/wazuh-ip-reputation.log
check_interval = 300        # Segundos entre análisis
cache_duration = 3600       # Segundos de cache por IP

[database]
host = localhost
port = 3306
database = wazuh_ip_reputation
user = wazuh_ip_user
password = ****************

[wazuh]
host = 192.168.1.100       # IP del Wazuh Manager
port = 55000
username = admin
password = ****************
verify_ssl = false

[apis]
virustotal_key = ********************************
abuseipdb_key = ********************************
shodan_key = ********************************

[email]
enabled = true
smtp_server = smtp.gmail.com
smtp_port = 587
sender_email = alerts@example.com
sender_password = ****************
recipient_emails = security@example.com,admin@example.com

[thresholds]
critical = 90              # Score >= 90 = CRITICAL
high = 70                  # Score >= 70 = HIGH
medium = 40                # Score >= 40 = MEDIUM
low = 20                   # Score >= 20 = LOW

Archivo de campos utilizados para la evualuación (network_fields.yml)

# Campos estándar
standard_fields:
  - field: data.srcip
    description: "IP de origen estándar"

# Campos de Suricata
suricata_fields:
  - field: data.flow.src_ip
    description: "IP origen de Suricata"

# Campos personalizados
custom_fields:
  - field: data.mi_integracion.ip_field
    description: "Mi campo personalizado"

# Estructuras anidadas a explorar
nested_structures:
  - data.flow
  - data.network

# Campos a ignorar
ignore_fields:
  - data.hostname

🛠️ Comandos de Administración

# Gestión del servicio
sudo wazuh-reputation start              # Iniciar servicio
sudo wazuh-reputation stop               # Detener servicio
sudo wazuh-reputation restart            # Reiniciar servicio
sudo wazuh-reputation status             # Ver estado y estadísticas

# Operaciones
sudo wazuh-reputation check-once         # Ejecutar análisis manual
sudo wazuh-reputation test-apis          # Probar conexión con APIs
sudo wazuh-reputation clear-cache        # Limpiar cache de IPs
sudo wazuh-reputation test-email    # Probar el envío de notificaciones por correo electrónico

# Consultas
sudo wazuh-reputation show-stats         # Mostrar estadísticas detalladas
sudo wazuh-reputation show-ips [N]       # Mostrar últimas N IPs analizadas
sudo wazuh-reputation show-alerts [N]    # Mostrar últimas N alertas enviadas

# Mantenimiento
sudo wazuh-reputation logs               # Ver logs en tiempo real
sudo wazuh-reputation backup             # Crear backup manual
sudo wazuh-reputation config             # Editar configuración
sudo wazuh-reputation test-email         # Probar configuración de email
sudo wazuh-reputation show-fields        # Ver campos de red configurados
sudo wazuh-reputation edit-fields        # Editar campos para evaluación personalizados
sudo wazuh-reputation check-once         # ejecutar la aplicación completa, útil si se habilita el modo de prueba

📊 Gestión del Servicio

Estado del Servicio

# Ver estado completo
sudo systemctl status wazuh-ip-reputation

# Ver logs del servicio
sudo journalctl -u wazuh-ip-reputation -f

# Habilitar inicio automático
sudo systemctl enable wazuh-ip-reputation

Activar/Desactivar modo de prueba

# Activar modo de prueba
sudo wazuh-reputation test-mode-on

# Desactivar modo de prueba
sudo wazuh-reputation test-mode-off

# Reiniciar para aplicar cambios
sudo wazuh-reputation restart

Editando la configuración:

# Editar configuración
sudo nano /etc/wazuh-ip-reputation/config.ini

# En la sección [general], agregar o modificar:
test_mode = true   # o false para desactivar

# Reiniciar el servicio
sudo systemctl restart wazuh-ip-reputation

Verificación:

bash
# 1. Verificar el estado del servicio
sudo wazuh-reputation status

# 2. Probar la extracción de IPs
sudo wazuh-reputation check-once

# 3. Ver los logs en tiempo real
sudo wazuh-reputation logs

# 4. Si activaste el modo de prueba, deberías ver:
# "Modo de prueba activado - generando IPs de ejemplo"
# Y 3 IPs de prueba serán procesadas

Agregar campos personalizados para su evaluación

1.- Editar el archivo:

sudo wazuh-reputation edit-fields

2.- Agregar campos en la sección apropiada:

custom_fields:
  - field: data.mi_campo.ip_origen
    description: "IP de mi sistema personalizado"

3.- Reiniciar el servicio:

sudo wazuh-reputation restart

Sistema de Notificaciones

El sistema envía notificaciones automáticas cuando detecta IPs con niveles de riesgo CRITICAL, HIGH o MEDIUM.

Características de las Notificaciones:

  • 📧 Formato HTML enriquecido con información detallada
  • 🔔 Deduplicación: No repite alertas de la misma IP en 24 horas
  • 📊 Agrupación por severidad: Organiza IPs por nivel de riesgo
  • 🌍 Información contextual: País, ISP, puertos abiertos, detecciones

Ejemplo de Notificación

🚨 Alerta de Seguridad Wazuh
IPs Maliciosas Detectadas

⚠️ CRÍTICAS (2)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IP: 192.168.1.100
Score de Riesgo: 95/100
Nivel: CRITICAL
País: CN
ISP: China Telecom
VT Detecciones: 15/87
Puertos: 22, 80, 443, 3389

⚠️ ALTAS (3)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IP: 10.0.0.50
Score de Riesgo: 75/100
Nivel: HIGH
País: RU
ISP: Petersburg Internet Network
VT Detecciones: 8/87

🗑️ Desinstalación

# Descargar script de desinstalación
wget https://raw.githubusercontent.com/juanpadiaz/wazuh-ip-reputation/main/wazuh_ip_reputation_uninstall.sh

# Ejecutar desinstalación
sudo bash wazuh_ip_reputation_uninstall.sh

# Desinstalación sin confirmaciones
sudo bash wazuh_ip_reputation_uninstall.sh --force

# Desinstalar pero mantener la base de datos
sudo bash wazuh_ip_reputation_uninstall.sh --keep-database

# Desinstalar sin crear backup
sudo wazuh_ip_reputation_uninstall.sh --no-backup

# Ver ayuda
sudo bash wazuh_ip_reputation_uninstall.sh --help

El script de desinstalación permite:

  • 🗑️ Elimina usuario del sistema
  • 🗑️ Elimina grupo del sistema
  • 📝 Verifica archivos remanentes
  • ✅ Crear backup antes de desinstalar
  • ❓ Eliminar base de datos (opcional)
  • 📝 Conservar logs (opcional)
  • 💾 Conservar datos históricos (opcional)

🔐 Seguridad

Mejores Prácticas Implementadas

  1. Permisos del Sistema:
    • Usuario dedicado sin shell (wazuh-reputation)
    • Archivos de configuración con permisos 640
    • Separación de privilegios
  2. Base de Datos:
    • Usuario dedicado con permisos mínimos
    • Contraseñas generadas aleatoriamente
    • Conexiones solo desde localhost
  3. API Keys:
    • Almacenadas en archivo protegido
    • No se muestran en logs
    • Rotación recomendada cada 90 días
  4. Comunicaciones:
    • HTTPS para todas las APIs externas
    • TLS/STARTTLS para email
    • Verificación SSL configurable

🔧 Solución de Problemas

Problemas Comunes

El servicio no inicia

# Verificar logs
sudo journalctl -u wazuh-ip-reputation -n 50

# Verificar configuración
sudo wazuh-reputation test-apis

# Verificar permisos
ls -la /etc/wazuh-ip-reputation/config.ini

No se reciben emails

# Probar configuración de email
sudo -u wazuh-reputation /opt/wazuh-ip-reputation/venv/bin/python << EOF
import smtplib
# Verificar conexión SMTP
EOF

# Para Gmail: verificar contraseña de aplicación
# Para otros: verificar puerto y autenticación

Error de API rate limit

# VirusTotal: Límite 4 requests/minuto (sin API key)
# AbuseIPDB: Límite 1000 requests/día
# Shodan: Límite según plan

# Solución: Aumentar cache_duration en config.ini

Base de datos llena

# Ver tamaño de tablas
mysql -u root -p -e "
SELECT table_name, ROUND(data_length/1024/1024, 2) AS 'Size MB'
FROM information_schema.tables
WHERE table_schema = 'wazuh_ip_reputation';"

# Limpiar datos antiguos (>90 días)
mysql -u root -p wazuh_ip_reputation -e "
DELETE FROM processed_ips WHERE processed_at < DATE_SUB(NOW(), INTERVAL 90 DAY);
DELETE FROM sent_alerts WHERE sent_at < DATE_SUB(NOW(), INTERVAL 90 DAY);"

📊 Métricas del Proyecto

  • Líneas de código: ~2,800
  • Archivos Python: 2
  • Scripts Bash: 2
  • Tablas de BD: 5
  • APIs integradas: 4 (Wazuh + 3 threat intel)
  • Tiempo promedio de análisis por IP: 3-5 segundos
  • Uso de memoria: ~100-200 MB
  • Almacenamiento requerido: ~1GB inicial + crecimiento según uso

📝 Changelog

Versión 3.0.0 (2024-07-28)

  • ✅Soporte mejorado para integraciones:
    • Suricata: data.flow.src_ip, data.flow.dest_ip
    • pfSense: Campos de firewall
    • IDS/IPS: Campos genéricos
    • Aplicaciones web: Headers y campos específicos
  • 📋Comando para probar email
  • ✨Archivo de campos personalizables
  • ✨Soporte mejorado para integraciones
  • ✨Método de extracción mejorado

Versión 2.0.2 (2024-07-12)

  • 📋Busca en múltiples endpoints de Wazuh
  • ✅Incluye vulnerabilidades y eventos de integridad
  • ✅Modo de prueba para generar IPs de ejemplo
  • ✅Mejor logging y manejo de errores

Versión 2.0.1 (2024-06-08)

  • 📋 Cambios principales en la versión 2.0.1:
  • ✅ Corrección de VirusTotal API:
  • ✨URL correcta: https://www.virustotal.com/api/v3/ip-addresses/{ip}
  • ✨Headers apropiados: ‘x-apikey’ y ‘Accept: application/json’
  • ✨Mejor manejo de respuestas 404 (IP no encontrada)
  • ✨Navegación correcta en la estructura JSON de respuesta
  • ✨Solo busca en endpoint /alerts
  • ✨Requiere alertas activas para encontrar IPs
  • ✅ Otras mejoras:
    • ✨Actualizada la versión a 2.0.1 en todo el código
    • ✨Mejor manejo de errores en todas las APIs
    • ✨Logging mejorado para diagnóstico

Versión 2.0.0 (2024-06-02)

  • 🎉 Release inicial completo
  • ✨ Integración con Wazuh API
  • ✨ Soporte para VirusTotal, AbuseIPDB y Shodan
  • ✨ Sistema de puntuación de riesgo
  • ✨ Notificaciones por email HTML
  • ✨ Base de datos MariaDB/MySQL
  • ✨ Herramientas de administración CLI
  • ✨ Sistema de cache inteligente
  • ✨ Backup automático
  • ✨ Instalador y desinstalador interactivos

Roadmap Futuro

  • 📅 v3.1.0: Integración con más APIs (AlienVault OTX, ThreatCrowd)
  • 📅 v3.2.0: Dashboard web para visualización
  • 📅 v3.3.0: Integración con Elastic Stack
  • 📅 v4.0.0: Machine Learning para detección de anomalías

👨‍💻 Autor y Licencia

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

Acceso a SQLServer desde Ubuntu

Para acceder a una base de datos SQLServer o Sybase la mejor opción es instalar los drivers TDS (Tabular Data Stream) http://en.wikipedia.org/wiki/Tabular_Data_Stream.

Hay que recordar que SQLServer de Microsoft es una versión propia de la base de datos de Sybase, por lo que comparte algunas de sus características, entre las cuales se encuentra la posibilidad de acceder a ellas mediante el driver TDS de ODBC.

Instalación de paquetes

Instalamos tdsodbc y también sqsh, que es un shell de consultas SQL pensado para sustituir al antiguo isql que se usaba originalmente para hacer querys a las bases de datos de Sybase.

$ sudo apt-get install libsybdb5 freetds-common php5-sybase sqsh unixodbc unixodbc-bin tdsodbc
/etc/init.d/apache2 restart

Ficheros de configuración

/etc/odbcinst.ini

[ODBC Drivers]
     TDS = Installed

[TDS]
     Driver = /usr/lib/odbc/libtdsodbc.so
     Setup = /usr/lib/odbc/libtdsS.so

/etc/odbc.ini

[ODBC Data Sources]
     SQLSERVER_ODBC = TDS

[SQLSERVER_ODBC]
     Driver = /usr/lib/odbc/libtdsodbc.so
     Description = Test ODBC
     Host = localhost
     ServerType = SQLServer
     FetchBufferSize = 00
     Username = UserHM
     UID = UserHM
     Password = HMuser8520
     Database = HostMonitor
     ServerOptions =
     ConnectOptions =
     Options =
     ReadOnly = no

/etc/freetds/freetds.conf

[global]
     # TDS protocol version
     tds version = 4.2

[SQLSERVER_TDS]
     # Version 8.0 para SQL Server 2000
     # Version 7.0 para SQL Server 7
     # Version 6.0 para SQL Server 6
     host = 194.179.23.1
     port = 1433
     tds version = 8.0

Prueba de conectividad TDS

$ sqsh -S 194.179.23.1 -U usuario -P password -D database
sqsh-2.1 Copyright (C) 1995-2001 Scott C. Gray
This is free software with ABSOLUTELY NO WARRANTY
For more information type 'warranty'
1>

Prueba de conectividad ODBC

$ isql -v SQLSERVER_ODBC usuario password
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

Acceso desde PHP

$sock=mssql_connect("SQLSERVER_TDS","usuario","password");
mssql_select_db("database",$sock);
$SQL = "select * from tabla";
$result= mssql_query($SQL);
while ($row = mssql_fetch_array($result)) {
        echo $row['id_tabla'] . " " . $row['campo1'] . " " . $row['campo2'] . "n";
}

Procesos Zombie en Linux

Para empezar echemos un vistazo a los principales estados de los procesos en Linux:

  • Sleeping (S): Procesos que están esperando su turno para ejecutarse.
  • Running (R):Procesos que están en ejecución.
  • Waiting (D): Procesos esperando a que se finalice alguna operación de Entrada/Salida.
  • Zombie (Z): Procesos que han terminado pero que siguen apareciendo en la tabla de procesos.

Se pueden deber a errores de programación y pueden ser el síntoma de un sistema lento o que provoca problemas. En la Wikipedia se puede leer más acerca de estos procesos. Ejecutando el comando ‘top’ podemos ver en tiempo real los procesos que se están ejecutando en el sistema. En la parte superior derecha se puede ver que hay un proceso zombie: Desde ‘top’ podemos ver que hay procesos zombie, pero no podemos ver cuál es.

Para ello debemos listar los procesos del sistema con ‘ps’ y buscando los que tienen estado Z (que es el descriptor de este tipo de procesos como vimos anteriormente):

ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’

Este proceso debe desaparecer de la tabla de procesos, pero no responderá a un ‘kill’ «corriente». ¿Cómo lo podemos matar? Pues así:

kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk ‘{print $2}’`

Enjoy the power

Salu2

¿Cómo comprobar si mi servidor está en una lista de spam?

Regularmente podemos necesitar saber si nuestro servidor de correo, o nuestra propia IP de la conexión de acceso a Internet se encuentran en las listas internacionales de spam.

A. En primer lugar debemos estar seguros que no somos una fuente de spam:

1)Debemos tener una resolución de DNS inversa para nuestra dirección IP.

2) Nuestro servidor de correo no está abierto a los spammers.

Existe un sitio que ofrece la posibilidad de verificar la dirección IP en las múltiples listas de spam, a través de 147 listas de spam basadas en DNS (llamadas comúnmente como listas negras en tiempo real, blocklists, DNSBLs o RBLs).

Si tu servidor de correo se encuentra en una lista negra, algunos de los correos electrónicos enviados por este no serán entregados al destinatario. Las listas negras de spam son un camino viable para reducir drásticamente la incidencia del spam o correo masivo no solicitado.

Paso # 1: Encontrar la dirección IP de tu servidor de correo electrónico Por ejemplo si tienes el dominio cuyo nombre es pruebas.com

$ host -t mx pruebas.com

Salida: pruebas mail is handled by 10 ASPMX.L.GOOGLE.com.

Obtenemos la dirección IP de este servidor:

$ host -t a ASPMX.L.GOOGLE.com.

Salida: ASPMX.L.GOOGLE.com has address 74.14.200.100

Paso # 2: Ahora debemos visitar el sitio web de mxtoolbox e ingresar la dirección IP del servidor de correo 74.14.200.100 para  verificar los resultados obtenidos de su dirección IP en las listas de spam.

Cómo arreglar Plymouth en Ubuntu 10.10

Tras la instalación del driver de video en Ubuntu 10.10, el plymouth sufre una desagradable modificación, perdiendo su adecuada y debida resolución cambiando la animación original por texto o imágenes de otros temas. Según tengo entendido, esto es un bug que “no tuvieron tiempo de solucionar”. Así que a continuación les dejo 6 pasos para solucionarlo.

Ejecutamos en una terminal los siguientes comandos y modificaciones:

sudo apt-get install v86d

sudo gedit /etc/default/grub

Reemplazamos la línea 9

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

Por esto

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash nomodeset video=uvesafb:mode_option=1280×1024-24,mtrr=3,scroll=ywrap”

Reemplazamos la línea 18

#GRUB_GFXMODE=640×480

Por esto

GRUB_GFXMODE=1280×1024

sudo gedit /etc/initramfs-tools/modules

Agregamos al final y guardamos los cambios

uvesafb mode_option=1280×1024-24 mtrr=3 scroll=ywrap

echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash

sudo update-grub2

sudo update-initramfs -u

Reiniciamos y listo! ahora nuestro plymouth debe verse con la configuración original

Se puede “jugar” con la resolución (poner la misma en todos los archivos) hasta elegir la más adecuada para tu hardware.

Ahora si de lo que se trata es cambiar el tema con el que inicia el plymouth lo que debemos hacer es instalar los temas disponibles en el repositorio.

sudo apt-get install plymouth-theme*

A continuación debemos elegir el tema que vamos a utilizar:

sudo update-alternatives –config default.plymouth

Guardamos el cambio para el inicio del sistema

sudo update-initramfs -u

Reiniciamos y listo!

Generar y cargar respaldo de cliente de correo Evolution

Les quiero compartir como realizar un respaldo de nuestro cliente de correo Evolution, esto es muy util cuando necesitamos cambiar nuestro equipo o distribucion, a fin de no perder nuestros mails, tareas, contactos, calendarios y de mas.

Anteriormente solo con copiar la carpeta .evolution de nuestro home bastaba, pero ahora ya no es así, les dejo la receta:

Sistema origen:

Versión de Ubuntu: 10.10 32 bits

Versión de evolution: 2.32.2

Sistema destino

Versión de Ubuntu: 11.04 64 bits

Versión de evolution: 2.26.1

Procedimiento

Desde una linea de comandos en nuestro directorio home:

$evolution –force-shutdown
$tar -cvzf evolution.tar.gz .evolution .gconf/apps/evolution

Con esto hemos respaldado la carpeta .evolution de nuestro home, asi como las configuraciones personales, tales como firmas y contactos.

Ahora en nuestro equipo destino dentro de nuestro directorio home solo bastara realizar:

$evolution –force-shutdown

$gconftool-2 –shutdown

$tar -xvzf evolution.tar.gz

Abrimos evolution y pues todo esta ahi.

Espero ayude a quien necesite ó requiera probar otra distro y/o va a cambiar de equipo.

Instalar soporte para BD Informix en Ubuntu Server 10.04 y XAMPP 1.7.4 usando conexion como PDO

A continuación detallo los pasos necesarios para habilitar las funciones de Informix para PHP en un equipo con Ubuntu 10.04 y XAMPP 1.7.4

  1. Instalar CSDK 3.00.UC1 (o posterior)
  2. Descargar y extraer el paquete XAMPP 1.7.4
  3. Descargar y extraer PDO_INFORMIX 1.1.0
  4. Configurar PDO_INFORMIX
  5. Actualizar el archivo de configuración de PHP
  6. Validar Y PROBAR el soporte de INFORMIX en PHP

1.Instalación de Informix Client SDK

Si no está instalado, debemos instalar el Client SDK de INFORMIX y establecer INFORMIXDIR como variable de entorno que apunte a la ruta donde se encuentra instalado el CSDK.

Para instalar Informix CSDK, debemos extraer los archivos del producto y ejecutar como root installclientsdk. Siguiendo las instrucciones en pantalla.

Importante: Este tutorial solo funciona en instalaciones Linux-x86 es decir Linux de 32 bits ya que no existen versiones de XAMPP para 64 bits.

2.Descargar XAMPP y extraer los archivos.

Debemos instalar tanto la versión de servidor como la versión de desarrollo

Importante: El paquete de desarrollo es necesario para poder compilar el driver PDO_INFORMIX.

Para instalar, solo debemos descomprimir los paquetes de XAMPP en el directorio /opt utilizando el comando

       tar xvfz xvfz xampp-linux-1.7.4.tar.gz -C /opt
       tar xvfz xampp-linux-DEVEl-1.7.4.tar.gz -C /opt

 

  • Nuestro servidor XAMPP se encuentra ahora instalado en el directorio /opt/lampp

3.Descargar y extraer PDO_INFORMIX

  • Descomprimimos el archivo PDO_INFORMIX en el directorio /opt/lampp/lib/php/extensions
     tar xvfz PDO_INFORMIX-1.1.0.tgz -C /opt/lampp/lib/php/extensions/

4.Configurar PDO_INFORMIX

  • Establecer INFORMIXDIR como variable de entorno apuntando a la ruta donde el Informix Client SDK está instalado.
  • Asegúrense de que los archivos ejecutables PHP y phpize se encuentran en la ruta /opt/lampp/bin
  • Para configurar el módulo PDO_INFORMIX,  debemos ejecutar los siguientes comandos:
      cd/opt/lampp/lib/php/extensions/PDO_INFORMIX-1.1.0
      /opt/lampp/bin/phpize
      ./configure --with-php-config=/opt/lampp/bin/php-config
      make
      make install

Los comandos nos deben mostrar estas pantallas de salida

/opt/lampp/bin/phpize

Esta ilustración es una captura de pantalla después de ejecutar el directorio / opt / lampp / bin / phpize.

./configure

Esta ilustración es una captura de pantalla después de ejecutar el comando. / Configure.

make y make install

Esta ilustración es una captura de pantalla después de ejecutar los comandos de hacer.

  • Después de ejecutar «make install«, debemos verificar que se genero el archivo pdo_informix.so en el directorio /opt/ lampp/lib/php/extensións/no-Debug-nen-zTS-20060613 /

Nota: Mas información acerca del desarrollo del controlador PDO_INFORMIX en la pagina DeveloperWorks.

5.Actualizar el archivo de configuración de PHP (Php.ini)

Debemos ir ala ruta /opt /lampp/etc y abrimos el archivo php.ini con un editor de texto para habilitar el controlador Informix PDO:

    1. Buscamos la sección «Dynamic Extensions» dentro del archivo php.ini y agregamos la información de la extensión PDO_INFORMIX.

extension = «pdo_informix.so»

    1. Debemos también modificar el parámetro memory_limit e incrementarlo a por lo menos 256 MB.

Memory_limit = 256M