Bonus: automatizando la auditoría con cron y Telegram

Monitor con terminal de auditoría de seguridad y notificación de Telegram con el resultado del análisis

Una auditoría manual es útil. Pero depende de que te acuerdes de hacerla. Y la experiencia dice que siempre hay algo más urgente hasta que aparece un problema que llevas meses sin ver.

La solución obvia es automatizarla. Un script que se ejecute solo, compruebe lo que importa y te avise si encuentra algo. Sin intervención manual, sin que dependa de tu memoria.

La estructura

Dos scripts con roles distintos:

Mensual — comprobación ligera. Se ejecuta el primer día de cada mes. Comprueba reboot pendiente, paquetes de seguridad sin instalar, servicios caídos, disco por encima del 80% e intentos SSH de la última semana. Te manda un mensaje Telegram con el resumen, haya o no problemas.

Trimestral — auditoría completa. Se ejecuta el primer día de enero, abril, julio y octubre. Ejecuta el script de auditoría completo, pasa Lynis, pasa rkhunter y te manda un informe detallado con la puntuación y los ficheros guardados en el servidor.

Antes de empezar

Los scripts están disponibles en jferrep/jaws-audit, junto con el script de auditoría completo de la primera parte de esta serie. Puedes clonar el repo, adaptarlos a tu stack y usarlos tal cual o como punto de partida.

Una advertencia antes de continuar: la automatización no sustituye la revisión. La hace posible. Un script puede decirte que hay un reboot pendiente o que el disco está al 85%, pero leer el fichero completo de la auditoría trimestral — servicios activos, conexiones establecidas, logs recientes — sigue requiriendo un par de minutos de atención humana cada tres meses. La diferencia es que ahora esos minutos están programados en el calendario, no dependen de que te acuerdes.

Instalación

1. Fichero de configuración

sudo nano /etc/jaws-audit.conf
# /etc/jaws-audit.conf
# Credenciales sensibles — NO añadir a git

TELEGRAM_TOKEN=""
TELEGRAM_CHAT_ID=""

DISK_THRESHOLD=80
SSH_FAIL_THRESHOLD=500

Permisos seguros:

sudo chmod 600 /etc/jaws-audit.conf
sudo chown root:root /etc/jaws-audit.conf

2. Scripts

# Script mensual
sudo cp jaws-audit-check.sh /usr/local/bin/
sudo chmod 750 /usr/local/bin/jaws-audit-check.sh
sudo chown root:root /usr/local/bin/jaws-audit-check.sh

# Script trimestral
sudo cp jaws-audit-full.sh /usr/local/bin/
sudo chmod 750 /usr/local/bin/jaws-audit-full.sh
sudo chown root:root /usr/local/bin/jaws-audit-full.sh

3. Cron

sudo crontab -e

Añade estas dos líneas:

# Auditoría ligera — primer día de cada mes a las 8:00
0 8 1 * * /usr/local/bin/jaws-audit-check.sh

# Auditoría completa — primer día de cada trimestre a las 9:00
0 9 1 1,4,7,10 * /usr/local/bin/jaws-audit-full.sh

4. Prueba manual

Antes de esperar al cron, prueba que funciona:

sudo /usr/local/bin/jaws-audit-check.sh

Deberías recibir un mensaje Telegram en segundos.

Qué recibes por Telegram

Mensaje mensual (sin problemas)

🔍 Auditoría mensual — vps-web
📅 2026-05-01 08:00
✅ Todo OK

Resumen SSH (últimos 7 días):
• Intentos fallidos: 847
• IP más activa: 92 intentos desde 45.148.10.157
• IPs baneadas ahora: 7

Mensaje mensual (con problemas)

🔍 Auditoría mensual — vps-web
📅 2026-05-01 08:00
⚠️ 2 issue(s) encontrados

Problemas detectados:
• ⚠️ Reboot pendiente
• ⚠️ 3 paquetes de seguridad sin instalar

Resumen SSH (últimos 7 días):
• Intentos fallidos: 1203
• IP más activa: 412 intentos desde 89.185.81.112
• IPs baneadas ahora: 12

Mensaje trimestral

📊 Auditoría trimestral completa — vps-web
📅 2026-07-01 09:00

Lynis:
• Hardening index: 78/100
• Warnings: 1
• Suggestions: 37

rkhunter: ✅ Limpio

SSH (últimos 30 días):
• Intentos fallidos: 3421

Estado general: ✅ Sin problemas críticos

Ficheros guardados:
• Auditoría: /var/log/audits/audit_vps-web_20260701.txt (45K)
• Lynis: /var/log/audits/lynis_vps-web_20260701.txt (28K)

Los ficheros guardados

Los resultados de cada auditoría se guardan en /var/log/audits/. El script trimestral mantiene automáticamente los últimos 4 trimestres y borra los más antiguos — no se acumula indefinidamente.

Para revisar una auditoría anterior:

ls /var/log/audits/
less /var/log/audits/audit_vps-web_20260701.txt

Y para comparar la puntuación de Lynis entre trimestres:

grep "Hardening index" /var/log/audits/lynis_*.txt

Lo que no automatizo

La revisión del output completo sigue siendo manual. Los scripts detectan las señales de alerta más comunes, pero leer el fichero completo de la auditoría trimestral — servicios activos, conexiones establecidas, logs recientes — sigue requiriendo un par de minutos de atención humana cada tres meses.

Jaume Ferré

Jaume Ferré

Tengo un trabajo que no tiene nada que ver con esto. Pero me gusta cacharrear con webs, Linux y el homelab. De vez en cuando alguien me paga por ello, lo cual siempre sorprende. Canon R7 en mano y Arch Linux de fondo.

¿Te ha sido útil?

Ayúdame a mejorar con tu puntuación.

0.0 (0 votos)
Comentarios