Logo

Mi Blog con Emacs y Esteroides

Emacs, IA y Linux: Poder y Simplicidad en tu Flujo de Trabajo

mybloggingnotes@gmail.com


09/06/2025

Sistema Completo de Monitoreo de Integridad en Linux con Hashes

Introducción

Sistema completo para detectar modificaciones no autorizadas en sistemas Linux mediante hashes criptográficos, con almacenamiento seguro y control de versiones.

Diagrama del Sistema Completo:

sistema-completo.png


Fase 1: Creación del Script Base

Script de Generación de Hashes (`monitorintegridad.sh`):

#!/bin/bash
# Generación inicial de hashes

# Configuración básica
TARGETS=(
    /bin
    /sbin
    /usr/bin
    /usr/sbin
    /etc
    /lib/modules
    /etc/init.d
)

generate_hashes() {
    local output_file=$1
    echo "# Hashes de Integridad - $(date)" > "$output_file"
    echo "# Sistema: $(uname -a)" >> "$output_file"

    for target in "${TARGETS[@]}"; do
        if [ -e "$target" ]; then
            echo -e "\n# Directorio: $target" >> "$output_file"
            find "$target" -type f -exec sha256sum {} \; >> "$output_file"
        fi
    done
}

# Uso básico
OUTPUT_FILE="hashes_base.sha256"
generate_hashes "$OUTPUT_FILE"
echo "Hashes generados en $OUTPUT_FILE"

Fase 2: Almacenamiento Seguro con Control de Versiones

Estructura de Directorios:

estructura-almacenamiento.png


Script Mejorado con Almacenamiento Seguro:

#!/bin/bash
# Configuración de almacenamiento seguro
VAULT_DIR="/var/log/integridad/vault"
CONFIG_DIR="/var/log/integridad/config"
LOG_FILE="/var/log/integridad/logs/integridad.log"

# Inicialización
mkdir -p {$VAULT_DIR/hashes,$VAULT_DIR/firmas,$VAULT_DIR/backups,$CONFIG_DIR}
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
HASH_FILE="$VAULT_DIR/hashes/$TIMESTAMP.sha256"
SIG_FILE="$VAULT_DIR/firmas/$TIMESTAMP.sig"

# Función de generación mejorada
generate_hashes() {
    # ... (función anterior mejorada)
    # Añade metadatos adicionales
    echo "# Metadata:" >> "$HASH_FILE"
    echo "# Generated: $(date --iso-8601=seconds)" >> "$HASH_FILE"
    echo "# Hostname: $(hostname -f)" >> "$HASH_FILE"
}

# Firmado y backup
gpg --batch --yes --detach-sign --armor \
    -o "$SIG_FILE" "$HASH_FILE"

tar czf - "$HASH_FILE" "$SIG_FILE" | \
gpg --batch --encrypt --recipient "security@example.com" \
> "$VAULT_DIR/backups/$TIMESTAMP.tar.gpg"

# Control de versiones
git -C "/var/log/integridad" add vault/
git -C "/var/log/integridad" commit -m "Update $TIMESTAMP" \
>> "$LOG_FILE"

# Rotación (conservar 30 días)
find "$VAULT_DIR/hashes" -mtime +30 -delete
find "$VAULT_DIR/firmas" -mtime +30 -delete

Fase 3: Verificación y Monitoreo

Script de Verificación (`verificarintegridad.sh`):

#!/bin/bash
# Parámetros configurables
REFERENCE="${1:-$(ls -t /var/log/integridad/vault/hashes/*.sha256 | head -2 | tail -1)}"
CURRENT="/tmp/current_hashes.$$.sha256"

# Generar hashes actuales
monitor_integridad.sh --quick "$CURRENT"

# Comparación avanzada
diff_output="/var/log/integridad/diff_$(date +%s).diff"
diff -u <(sort "$REFERENCE") <(sort "$CURRENT") > "$diff_output"

if [ -s "$diff_output" ]; then
    echo "ALERTA: Cambios detectados" >&2
    echo "Detalles en $diff_output" >&2
    # Opcional: Enviar email de alerta
else
    echo "OK: No se detectaron cambios"
    rm "$diff_output"
fi

rm "$CURRENT"

Fase 4: Automatización con Cron

Configuración recomendada:

# Ejemplo crontab para root
0 3 * * * /usr/local/bin/monitor_integridad.sh >> /var/log/integridad/cron.log 2>&1
0 4 * * 0 /usr/local/bin/verificar_integridad.sh /var/log/integridad/vault/hashes/last_known_good.sha256

Tablas de Referencia Rápida

Comparación de Estrategias de Almacenamiento:

Estrategia Ventajas Desventajas Uso Recomendado
Local plano Simple Sin versionado Pruebas iniciales
Git Historial completo Requiere mantenimiento Entornos desarrollo
GPG + Backup Máxima seguridad Complejidad configuración Producción crítica


Política de Retención:

Tipo Archivo Retención Compresión Encriptación Ejemplo
Hashes brutos 30 días No No hashes20231115.sha256
Firmas GPG 30 días No No hashes20231115.sig
Backups 1 año backup20231115.tar.gpg
Logs 6 meses No integridad.log.1.gz

Integración con Emacs

Para gestión desde Emacs:

(defun integrity-monitor-run ()
  "Ejecutar monitor de integridad"
  (interactive)
  (async-shell-command "monitor_integridad.sh" "*Integrity Monitor*"))

(defun integrity-verify (&optional ref-file)
  "Verificar integridad contra referencia"
  (interactive "fArchivo de referencia: ")
  (let ((cmd (format "verificar_integridad.sh %s" (or ref-file ""))))
  (compile cmd))

Conclusión

Este sistema completo proporciona:

  1. Generación segura de hashes
  2. Almacenamiento con control de versiones
  3. Verificación automatizada
  4. Historial auditado

Próximos pasos:

  • Implementar notificaciones por email
  • Configurar almacenamiento remoto
  • Integrar con sistemas SIEM
workflow-final.png
Categoría: linux seguridad hashes integridad monitoreo deteccion-cambios gpg git almacenamiento-seguro

Suscribirse al Feed RSS | Mapa del Sitio

© 2025 M.Castillo | Hecho con ❤️ en Emacs y org-static-blog

📊 Estadísticas Visit counter For Websites