Logo

Mi Blog con Emacs y Esteroides

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

mybloggingnotes@gmail.com


18/06/2025

Ciberseguridad al arranque: informes y alertas automáticas

Introducción

En este post explicamos cómo configurar tu sistema Linux para que, al arrancar, se ejecute un script que analiza el estado de ciberseguridad del equipo. El resultado se guarda en un archivo diario en formato Org y HTML, se generan alertas clasificadas (CRÍTICO, ALTO, MODERADO) y se actualiza automáticamente un index.html con un historial completo.

Este enfoque es ideal para:

  • Profesionales que monitorizan seguridad de sistemas.
  • Usuarios de Emacs que desean informes legibles en Org Mode.
  • Automatización de auditorías de seguridad en entornos personales o laborales.

Paso 1: Crear la carpeta para informes

Todos los informes se guardarán en ~/cyberreports.

mkdir -p ~/cyberreports

Paso 2: Script principal de análisis de seguridad

Guarda el siguiente script como ~/cybercheck_alerts.sh y dale permisos de ejecución:

#!/bin/bash

DATE=$(date +%F)
BASE_DIR=~/cyberreports
mkdir -p "$BASE_DIR"
OUTPUT="$BASE_DIR/cyberreport-${DATE}.org"
HTML_OUTPUT="${OUTPUT%.org}.html"
INDEX_HTML="$BASE_DIR/index.html"
ALERTS=()

echo "* 🔐 Informe de Seguridad del Sistema" > "$OUTPUT"
echo "Fecha: $DATE" >> "$OUTPUT"
echo "Host: $(hostname)" >> "$OUTPUT"
echo "" >> "$OUTPUT"

# Ejemplo: Verificar actualizaciones de seguridad pendientes
echo "** 🔄 Actualizaciones de seguridad" >> "$OUTPUT"
if command -v apt >/dev/null; then
  UPDATES=$(apt list --upgradable 2>/dev/null | grep -c security)
  echo "- Hay $UPDATES actualizaciones de seguridad." >> "$OUTPUT"
  [ "$UPDATES" -gt 0 ] && ALERTS+=("updates: $UPDATES pendientes")
fi

# (Añadir aquí más chequeos si se desea, como rootkits, puertos abiertos...)

# === HTML con alertas ===
cat <<EOF > "$HTML_OUTPUT"
<html>
<head><meta charset="utf-8">
<title>Informe de Seguridad - $DATE</title>
<style>
body { font-family: monospace; background: #111; color: #eee; padding: 1em; }
.critico { color: red; } .alto { color: orange; } .moderado { color: yellow; }
</style></head><body>
<h1>🚨 Informe de Seguridad de $(hostname)</h1>
<h2>Fecha: $DATE</h2>
EOF

for alert in "${ALERTS[@]}"; do
    echo "<p class='critico'>🚨 $alert</p>" >> "$HTML_OUTPUT"
done

echo "<pre>" >> "$HTML_OUTPUT"
cat "$OUTPUT" >> "$HTML_OUTPUT"
echo "</pre></body></html>" >> "$HTML_OUTPUT"

# === Generar índice HTML ===
REPORT_FILES=($(ls -1t "$BASE_DIR"/cyberreport-*.html))

cat <<EOF > "$INDEX_HTML"
<html><head><meta charset='utf-8'><title>Historial</title>
<style>body { font-family: sans-serif; padding: 2em; }
.critico { color: red; } .alto { color: orange; } .moderado { color: #cc0; }
</style></head><body>
<h1>Historial de Informes de Seguridad</h1><ul>
EOF

for report in "${REPORT_FILES[@]}"; do
  filename=$(basename "$report")
  fecha=$(echo "$filename" | sed -E 's/^cyberreport-([0-9]{4}-[0-9]{2}-[0-9]{2})\.html/\1/')
  crit=$(grep -c "🚨" "$report")
  echo "<li><b>$fecha:</b> <a href='$filename'>Ver</a> — <span class='critico'>🚨 $crit alertas</span></li>" >> "$INDEX_HTML"
done

echo "</ul></body></html>" >> "$INDEX_HTML"

Paso 3: Hacer ejecutable el script

chmod +x ~/cybercheck_alerts.sh

Paso 4: Ejecutarlo al inicio del sistema

Puedes añadirlo a tu crontab para que se ejecute automáticamente al arrancar:

crontab -e

Y añade la línea:

@reboot ~/cybercheck_alerts.sh

Paso 5: Visualización desde Emacs

Puedes crear una función para abrir los informes fácilmente:

(defun my/open-latest-cyberreport ()
  (interactive)
  (let* ((dir "~/cyberreports/")
         (latest (car (last (directory-files dir t "cyberreport-.*\\.org")))))
    (if latest
        (find-file latest)
      (message "No hay informes disponibles."))))

También puedes navegar por todos los informes con Dired:

(defun my/browse-cyberreports ()
  (interactive)
  (dired "~/cyberreports"))

Resultados esperados

Cada día, al arrancar el sistema:

  • Se genera un archivo cyberreport-YYYY-MM-DD.org y su versión HTML.
  • Las alertas se clasifican visualmente.
  • El historial completo queda disponible en ~/cyberreports/index.html.
  • Desde Emacs puedes revisar, comparar o compartir.

Futuras mejoras (opcional)

  • Exportación a PDF o RSS.
  • Envío por correo de alertas críticas.
  • Integración con notificaciones de escritorio.
  • Reportes centralizados en red para múltiples equipos.

Conclusión

Este sistema proporciona una base sólida y automatizada para monitorizar la ciberseguridad de tu equipo Linux. Gracias a la estructura en Org Mode y la generación de HTML, es ideal para usuarios técnicos y bloggers que usan Emacs.

¿Tienes ideas para integrarlo con tu blog o alertas en Telegram? Escríbelo en los comentarios o forkéalo en GitHub.

Categoría: linux ciberseguridad bash emacs automatizacion informes tutoriales

Suscribirse al Feed RSS | Mapa del Sitio

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

📊 Estadísticas Visit counter For Websites