Monitorización rápida de vulnerabilidades en Ubuntu desde Emacs (i)
Introducción
¿Quieres una forma sencilla y rápida de hacer un chequeo de seguridad a tu sistema desde tu entorno Emacs? Aquí tienes un script en bash que podrás ejecutar desde la terminal o Emacs usando `shell-command`, y que además genera un log y un archivo `.org` con los resultados.
PlantUML Diagram for "scanseguridad.sh" Workflow
This diagram represents the sequence of operations performed by the `scanseguridad.sh` script to monitor system security and generate logs and Org Mode reports.
Herramientas necesarias
Este script usará:
- `nmap` (para escanear puertos locales)
- `netstat` o `ss` (interfaces y conexiones)
- `curl` (para detectar IP pública y posibles amenazas)
- `whois`, `ip`, `free`, `top` o `ps`
- `chkrootkit` o `rkhunter` (si los tienes instalados)
- `fail2ban-client` (opcional)
Si alguna herramienta no está instalada, el script la sugerirá automáticamente.
Puedes instalar las básicas con:
sudo apt update && sudo apt install nmap curl whois net-tools chkrootkit -y
🚀 Script de análisis rápido
Guarda este archivo como scan_seguridad.sh y ejecútalo como superusuario:
#!/bin/bash LOGFILE="$HOME/seguridad/logs/seguridad_$(date +%F_%H%M).log" ORGFILE="$HOME/seguridad/reportes/seguridad_$(date +%F_%H%M).org" mkdir -p "$(dirname "$LOGFILE")" mkdir -p "$(dirname "$ORGFILE")" echo "* Informe de seguridad generado el $(date)" > "$ORGFILE" echo "------------------------------------------" > "$LOGFILE" echo "** 🧠 Memoria y carga del sistema" | tee -a "$ORGFILE" >> "$LOGFILE" free -h | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" uptime | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" echo "** 🌐 Interfaces de red activas" | tee -a "$ORGFILE" >> "$LOGFILE" ip addr show | grep inet | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" echo "** 🔐 Puertos abiertos (localhost)" | tee -a "$ORGFILE" >> "$LOGFILE" nmap -sT -p- 127.0.0.1 | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" echo "** 🕵️ Conexiones activas sospechosas" | tee -a "$ORGFILE" >> "$LOGFILE" ss -tunap | grep -v "127.0.0.1" | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" echo "** 🚨 IP pública y análisis básico" | tee -a "$ORGFILE" >> "$LOGFILE" IP=$(curl -s ifconfig.me) echo "IP pública: $IP" | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" whois "$IP" | grep -iE "org|country|name" | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" echo "** 🔍 Análisis rootkits (chkrootkit si disponible)" | tee -a "$ORGFILE" >> "$LOGFILE" if command -v chkrootkit &> /dev/null; then chkrootkit | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" else echo "chkrootkit no instalado. Instálalo con: sudo apt install chkrootkit" | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" fi echo "** 📊 Procesos sospechosos (más consumo CPU)" | tee -a "$ORGFILE" >> "$LOGFILE" ps aux --sort=-%cpu | head -n 10 | tee -a "$LOGFILE" | sed 's/^/ /' >> "$ORGFILE" echo "** ✅ Recomendaciones generales" >> "$ORGFILE" echo "- Verifica puertos abiertos innecesarios" >> "$ORGFILE" echo "- Usa firewalld o ufw para cerrar conexiones" >> "$ORGFILE" echo "- Revisa procesos con consumo elevado" >> "$ORGFILE" echo "- Instala y configura fail2ban si es un servidor expuesto" >> "$ORGFILE"
✅ Cómo usarlo desde Emacs
Puedes ejecutar el script directamente desde Emacs con:
(shell-command "bash ~/scan_seguridad.sh")
O también añadirlo a una función interactiva personalizada.
📂 Logs generados
- Archivo `.log` con todos los comandos ejecutados.
- Archivo `.org` con formato limpio para visualizar y exportar desde Org Mode.
🚧 Futuras mejoras
- Clasificación automática de amenazas
- Exportación a HTML para informe web
- Envío por correo o Telegram
¡La seguridad también se hace desde Emacs! 😉