domingo, 1 de febrero de 2026

🛡️ Crea tu propio Centinela: Reportes de Seguridad Automáticos con Bash

¿Sabías que un servidor conectado a internet recibe intentos de intrusión casi cada minuto? Revisar los logs manualmente es imposible. Por eso, hoy vamos a construir un Script de Auditoría de Seguridad utilizando el poder de grep y awk.

Este script escaneará tus registros del sistema y te entregará un informe limpio con los puntos críticos. ¡Manos a la obra!


El Script: security_report.sh

Copia el siguiente código en un archivo de texto en tu Linux o Mac:

Bash
#!/bin/bash

# Configuración
LOG_FILE="/var/log/auth.log"  # En Ubuntu/Debian. Usa /var/log/secure en CentOS/RHEL.
REPORT_FILE="reporte_seguridad_$(date +%F).txt"

echo "==================================================" > $REPORT_FILE
echo "   REPORTE DE SEGURIDAD AUTOMÁTICO - $(date)" >> $REPORT_FILE
echo "==================================================" >> $REPORT_FILE

# 1. Detectar intentos fallidos de SSH (Brute Force)
echo -e "\n[!] Top 5 IPs con más intentos fallidos:" >> $REPORT_FILE
grep "Failed password" $LOG_FILE | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -5 >> $REPORT_FILE

# 2. Usuarios inexistentes detectados
echo -e "\n[!] Intentos de acceso con usuarios que NO existen:" >> $REPORT_FILE
grep "Invalid user" $LOG_FILE | awk '{print $8}' | sort | uniq -c | sort -nr >> $REPORT_FILE

# 3. Usuarios con privilegios de Root (UID 0)
echo -e "\n[!] Verificando usuarios con privilegios de administrador (UID 0):" >> $REPORT_FILE
awk -F: '($3 == "0") {print "Usuario: "$1" (UID: "$3")"}' /etc/passwd >> $REPORT_FILE

# 4. Archivos con permisos de escritura para todos (Peligro)
echo -e "\n[!] Archivos críticos con permisos de escritura mundial (Muestra los 5 primeros):" >> $REPORT_FILE
find /etc -type f -perm -o+w 2>/dev/null | head -5 >> $REPORT_FILE

echo -e "\n--------------------------------------------------" >> $REPORT_FILE
echo "Reporte finalizado. Guardado en: $REPORT_FILE"

Cómo ejecutar tu nuevo "Centinela"

  1. Dale permisos de ejecución: chmod +x security_report.sh

  2. Ejecútalo con privilegios de administrador (necesarios para leer los logs del sistema):

    sudo ./security_report.sh

  3. Lee los resultados: cat reporte_seguridad_*.txt


Análisis: ¿Qué está pasando bajo el capó?

  • grep "Failed password": Busca todas las líneas donde alguien falló la contraseña.

  • awk '{print $(NF-3)}': Es una técnica brillante. NF es el número de campos en una línea; $(NF-3) suele ser la posición donde aparece la dirección IP en los logs de autenticación.

  • sort | uniq -c | sort -nr: Este es el "combo mortal" de la terminal. Ordena las IPs, cuenta cuántas veces aparece cada una y vuelve a ordenar para mostrar la más frecuente arriba.

  • awk -F: '($3 == "0")': Aquí usamos : como separador de campos para revisar el archivo de usuarios del sistema y filtrar aquellos cuyo ID de usuario sea igual a cero (los "súper usuarios").


Conclusión: La Automatización es Seguridad

Tener este script es como tener un guardia de seguridad que nunca duerme. Podrías incluso programarlo para que se ejecute solo cada noche usando un Cron Job y te envíe los resultados por correo electrónico.

Dominar grep y awk no solo te ahorra tiempo, sino que te permite detectar patrones de ataque que el ojo humano ignoraría. ¡Felicidades! Has pasado de ser un usuario de terminal a ser un administrador proactivo.



No hay comentarios:

Publicar un comentario

🎨 Dale estilo a tu Terminal: Guía de Zsh + Oh My Zsh + Powerlevel10k

Si pasas horas frente a la línea de comandos, ¿por qué no hacerla visualmente atractiva y funcional? La mayoría de los sistemas vienen con B...