¿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:
#!/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"
Dale permisos de ejecución:
chmod +x security_report.shEjecútalo con privilegios de administrador (necesarios para leer los logs del sistema):
sudo ./security_report.sh
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.NFes 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