Scripts de Bash para Ciberseguridad en Linux: Detección y Automatización
1. Introducción
En el ámbito de la ciberseguridad, la automatización de tareas mediante scripts es una habilidad crucial. Los scripts de Bash en Linux ofrecen una poderosa herramienta para realizar análisis de seguridad, detección de amenazas y auditorías de sistemas. En este post, exploraremos varios scripts de Bash diseñados para mejorar la seguridad y automatizar procesos de detección en entornos Linux.
2. Script 1: Detección Básica de Ciberataques
Este script realiza una serie de comprobaciones básicas para detectar posibles indicios de un ciberataque en un sistema Linux.
#!/bin/bash echo "Iniciando detección básica de ciberataques..." # Verificar intentos de acceso no válidos echo "Comprobando intentos de acceso no válidos..." invalid_attempts=$(grep "Invalid user" /var/log/auth.log | wc -l) echo "Se han detectado $invalid_attempts intentos de acceso no válidos." # Verificar conexiones de red sospechosas echo "Comprobando conexiones de red sospechosas..." suspicious_connections=$(netstat -tuln | grep ESTABLISHED | wc -l) echo "Hay $suspicious_connections conexiones de red establecidas." # Buscar archivos modificados recientemente echo "Buscando archivos modificados en las últimas 24 horas..." modified_files=$(find /etc -mtime -1 -type f | wc -l) echo "Se han modificado $modified_files archivos en /etc en las últimas 24 horas." # Verificar procesos sospechosos echo "Comprobando procesos sospechosos..." suspicious_processes=$(ps aux | grep -E '(nc|netcat|nmap)' | grep -v grep | wc -l) echo "Se han encontrado $suspicious_processes procesos potencialmente sospechosos." # Verificar cambios en archivos críticos del sistema echo "Verificando integridad de archivos críticos..." if [ -f /etc/passwd.bak ] && ! cmp -s /etc/passwd /etc/passwd.bak; then echo "¡Alerta! El archivo /etc/passwd ha sido modificado." else echo "El archivo /etc/passwd no muestra cambios." fi echo "Detección básica completada. Revise los resultados para identificar posibles amenazas."
Este script realiza las siguientes comprobaciones:
- Busca intentos de acceso no válidos en el archivo de registro auth.log.
- Verifica el número de conexiones de red establecidas.
- Busca archivos modificados en el directorio /etc en las últimas 24 horas.
- Comprueba la presencia de procesos potencialmente sospechosos.
- Verifica si ha habido cambios en el archivo crítico /etc/passwd.
3. Script 2: Análisis de Intentos de Acceso No Válidos
Este script se enfoca en analizar los intentos de acceso no válidos en un archivo de registro específico.
#!/bin/bash echo -n "¿Qué archivo deseas consultar?: " read -e LOG if [ -e $LOG ] ; then grep -E 'Invalid user' $LOG | tee invalid_users.log COUNT=$(wc -l invalid_users.log | cut -d" " -f1) echo "Hay un total de $COUNT intentos desde usuarios no válidos." else echo "No se ha encontrado el fichero de log." fi
Este script:
- Solicita al usuario el nombre del archivo de registro a analizar.
- Verifica la existencia del archivo.
- Busca líneas que contienen "Invalid user" y las guarda en un archivo separado.
- Cuenta y reporta el número total de intentos de acceso no válidos.
4. Script 3: Detección de Equipos en la Red Local
Este script utiliza el comando ping para detectar equipos activos en la red local.
#!/bin/bash echo "Detectando equipos en la red local..." # Obtener la dirección IP base ip_base=$(ip addr | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1 | sed 's/\.[0-9]*$/./') for i in {1..254} do ping -c 1 $ip_base$i | grep "64 bytes" | cut -d " " -f 4 | tr -d ":" & done echo "Escaneo completado."
Este script:
- Determina automáticamente la dirección IP base de la red local.
- Realiza un ping a todas las posibles direcciones IP en esa red.
- Muestra las direcciones IP de los equipos que responden al ping.
5. Consideraciones de Seguridad
Al utilizar estos scripts, es importante tener en cuenta:
- Permisos: Asegúrate de tener los permisos necesarios para ejecutar estos scripts y acceder a los archivos de sistema.
- Uso Ético: Utiliza estos scripts solo en sistemas y redes sobre los que tengas autorización explícita.
- Falsos Positivos: Los resultados pueden incluir falsos positivos. Siempre verifica manualmente los hallazgos importantes.
- Actualizaciones: Mantén los scripts actualizados para adaptarse a nuevas amenazas y cambios en el sistema.
6. Conclusión
Los scripts de Bash son herramientas poderosas para la automatización de tareas de seguridad en Linux. Desde la detección básica de amenazas hasta el análisis de redes, estos scripts pueden mejorar significativamente la eficiencia de las auditorías de seguridad y la respuesta a incidentes. Sin embargo, es crucial utilizarlos de manera responsable y en conjunto con otras prácticas de seguridad robustas.
7. Referencias
- Centro de Investigaciones Sociológicas (CIS). (2024). Barómetro mensual. https://www.cis.es/
- RedesZone. (2017). Security Bash Scripts, un repositorio con scripts de seguridad y pentesting. https://www.redeszone.net/2017/02/20/security-bash-scripts-un-repositorio-con-scripts-de-seguridad-y-pentesting/
- iEspai. (2023). Explorando la Seguridad: Un Script Bash para Analizar Intentos de Acceso No Válidos en Archivos de Registro. https://www.iespai.com/2023/10/10/explorando-la-seguridad-un-script-bash-para-analizar-intentos-de-acceso-no-validos-en-archivos-de-registro/
- LinkedIn Learning. (2024). Seguridad ofensiva: Bash para pentesting. https://es.linkedin.com/learning/seguridad-ofensiva-bash-para-pentesting/creacion-de-scripts-de-bash-para-la-explotacion-de-vulnerabilidades-especificas