Logo

Mi Blog con Emacs y Esteroides

Emacs, IA y Linux: Poder y Simplicidad en tu Flujo de Trabajo

mybloggingnotes@gmail.com


16/04/2025

Fortaleciendo la Seguridad Informática con Snort y AIDE: Guía Completa

Introducción

La seguridad informática es un aspecto fundamental para cualquier sistema, especialmente en la era digital actual donde las amenazas evolucionan constantemente. En esta guía detallada, exploraremos dos herramientas esenciales para complementar tu estrategia de seguridad: Snort y AIDE.

  • Snort: Un sistema de detección y prevención de intrusiones (IDS/IPS) basado en red que analiza el tráfico en tiempo real para identificar patrones sospechosos.
  • AIDE (Advanced Intrusion Detection Environment): Una herramienta de detección de intrusiones basada en host que monitorea la integridad de los archivos del sistema.

La combinación de estas herramientas proporciona una defensa en profundidad, permitiéndote detectar tanto intrusiones a nivel de red como modificaciones no autorizadas en tus archivos del sistema.

arquitectura-seguridad.png

Parte 1: Instalación y Configuración de Snort

¿Qué es Snort?

Snort es un sistema de detección y prevención de intrusiones (IDS/IPS) de código abierto, creado por Martin Roesch en 1998. Esta poderosa herramienta analiza el tráfico de red en tiempo real, comparándolo con una base de datos de reglas para identificar posibles ataques, escaneos, exploits y otras actividades maliciosas.

Snort puede funcionar en tres modos principales:

  1. Modo Sniffer: Simplemente lee los paquetes de la red y los muestra en pantalla.
  2. Modo Registro de Paquetes: Guarda los paquetes en el disco para análisis posterior.
  3. Modo NIDS (Network Intrusion Detection System): Analiza el tráfico de red en busca de coincidencias con patrones predefinidos.
  4. Modo NIPS (Network Intrusion Prevention System): Además de detectar, puede bloquear activamente tráfico malicioso.

Requisitos Previos

Antes de instalar Snort, asegúrate de contar con:

  • Sistema operativo Linux (esta guía usa Ubuntu/Debian, pero puede adaptarse)
  • Privilegios de administrador (sudo/root)
  • Conexión a Internet para descargar paquetes
  • Libpcap (biblioteca para captura de paquetes)
  • DAQ (Data Acquisition Library)

Instalación de Snort en Debian/Ubuntu

Primero, instalemos las dependencias necesarias:

sudo apt update
sudo apt install -y build-essential libpcap-dev libpcre3-dev libnet1-dev \
zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev \
openssl libssl-dev libnghttp2-dev libluajit-5.1-dev pkg-config libhwloc-dev \
cmake cpputest

A continuación, instalamos Snort desde los repositorios (aunque también veremos cómo compilarlo desde el código fuente):

sudo apt install -y snort

Durante la instalación, se te pedirá configurar tu red local. Introduce el rango de direcciones de tu red (por ejemplo, 192.168.1.0/24).

Instalación desde el código fuente (alternativa)

Para tener la versión más reciente, puedes compilar Snort desde el código fuente:

# Descargar y compilar DAQ
cd ~/Downloads
wget https://github.com/snort3/libdaq/archive/refs/tags/v3.0.12.tar.gz
tar -xzvf v3.0.12.tar.gz
cd libdaq-3.0.12/
./bootstrap
./configure
make
sudo make install

# Descargar y compilar Snort
cd ~/Downloads
wget https://github.com/snort3/snort3/archive/refs/tags/3.1.76.0.tar.gz
tar -xzvf 3.1.76.0.tar.gz
cd snort3-3.1.76.0/
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
cd build
make
sudo make install
sudo ldconfig

# Verificar la instalación
snort -V

Configuración Básica de Snort

El archivo principal de configuración se encuentra en `/etc/snort/snort.conf` (o en `/usr/local/etc/snort/snort.conf` si compilaste desde el código fuente). Vamos a realizar algunas configuraciones básicas:

sudo cp /etc/snort/snort.conf /etc/snort/snort.conf.bak  # Crear backup
sudo nano /etc/snort/snort.conf

Dentro del archivo, busca y modifica las siguientes secciones:

Configuración de red: Define tu red local para que Snort pueda diferenciar entre tráfico interno y externo.

ipvar HOME_NET 192.168.1.0/24
ipvar EXTERNAL_NET !$HOME_NET

Rutas de reglas: Asegúrate de que las rutas a los archivos de reglas sean correctas.

var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

Preprocesadores: Habilita los preprocesadores necesarios según tus necesidades:

preprocessor frag3_global: max_frags 65536
preprocessor frag3_engine: policy windows detect_anomalies
preprocessor stream5_global: track_tcp yes, track_udp yes

Reglas: Descomenta las reglas que deseas utilizar:

include $RULE_PATH/local.rules
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
# ... otras reglas según necesidades ...

Creación de Reglas Personalizadas

Las reglas de Snort son extremadamente poderosas y flexibles. Vamos a crear algunas reglas personalizadas en el archivo `/etc/snort/rules/local.rules`:

sudo nano /etc/snort/rules/local.rules

Añade estas reglas de ejemplo:

# Alerta por escaneo de puertos
alert tcp any any -> $HOME_NET any (msg:"Posible escaneo de puertos TCP"; flags:S; threshold: type threshold, track by_src, count 50, seconds 60; sid:1000001; rev:1;)
# Alerta por intentos de acceso SSH múltiples
alert tcp any any -> $HOME_NET 22 (msg:"Posible ataque de fuerza bruta SSH"; flow:to_server; threshold: type threshold, track by_src, count 5, seconds 60; sid:1000002; rev:1;)
# Alerta por acceso a la página de administración
alert tcp any any -> $HOME_NET 80 (msg:"Acceso a panel de administración"; content:"GET /admin"; nocase; sid:1000003; rev:1;)

Verificación de la Configuración

Antes de iniciar Snort, verifica que tu configuración no tenga errores:

sudo snort -T -c /etc/snort/snort.conf

Si todo está correcto, deberías ver "Snort successfully validated the configuration!"

Ejecución de Snort

Para ejecutar Snort en modo IDS:

sudo snort -A console -q -c /etc/snort/snort.conf -D

Opciones comunes:

  • `-A console`: Muestra las alertas en la consola
  • `-q`: Modo silencioso
  • `-c`: Ruta al archivo de configuración
  • `-D`: Ejecutar como demonio

Para ejecutar Snort en modo IPS (usando NFQ):

sudo snort -c /etc/snort/snort.conf -Q --daq nfq --daq-var queue=1

Configuración como Servicio

Para que Snort se inicie automáticamente al arrancar el sistema:

sudo nano /etc/systemd/system/snort.service

Añade el siguiente contenido:

[Unit]
Description=Snort NIDS Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/snort -c /etc/snort/snort.conf -D
Restart=on-failure

[Install]
WantedBy=multi-user.target

Habilita e inicia el servicio:

sudo systemctl enable snort.service
sudo systemctl start snort.service
sudo systemctl status snort.service

Visualización con diagrama PlantUML

El flujo de trabajo de Snort puede representarse visualmente:

flujo-snort.png

Parte 2: Instalación y Configuración de AIDE

¿Qué es AIDE?

AIDE (Advanced Intrusion Detection Environment) es una herramienta de detección de intrusiones basada en host que verifica la integridad de los archivos del sistema. Funciona creando una base de datos de los atributos de los archivos y directorios, como permisos, timestamps, checksums y contenido. Posteriormente, puede detectar cualquier cambio no autorizado en estos atributos.

AIDE es especialmente útil para:

  • Detectar modificaciones no autorizadas en archivos críticos del sistema
  • Identificar instalaciones de rootkits o backdoors
  • Verificar la integridad del sistema tras un incidente de seguridad
  • Cumplir con requisitos de auditoría y conformidad

Instalación de AIDE

En sistemas Debian/Ubuntu:

sudo apt update
sudo apt install -y aide

En sistemas basados en Red Hat (RHEL, CentOS, Fedora):

sudo yum install -y aide
# o con dnf
sudo dnf install -y aide

Configuración Básica de AIDE

El archivo principal de configuración se encuentra en `/etc/aide/aide.conf`. Vamos a realizar una configuración básica:

sudo cp /etc/aide/aide.conf /etc/aide/aide.conf.bak  # Crear backup
sudo nano /etc/aide/aide.conf

El archivo contiene definiciones de grupos de reglas y los directorios/archivos a los que aplicarlas. Aquí hay algunos ejemplos importantes:

# Definición de grupos de reglas
# NORMAL = checksums + atributos de archivo + permisos
# DATAONLY = solo checksums
# LOGS = como NORMAL pero permitiendo cambios en el tamaño
# ...

# Directorios/archivos a monitorear
/etc NORMAL
/bin NORMAL
/sbin NORMAL
/usr NORMAL
/boot NORMAL
/root NORMAL
!/var/log/.*  # Excluir logs - pueden cambiar frecuentemente
!/var/spool/.* # Excluir spool
!/var/tmp/.* # Excluir temporales

Personalización de la Configuración

Vamos a personalizar la configuración para adaptarla a nuestras necesidades:

sudo nano /etc/aide/aide.conf

Añade o modifica estas líneas según tus necesidades:

# Definición personalizada de grupos de reglas
MyGroup = sha256+ftype+p+u+g+n+acl+xattrs

# Directorios específicos a monitorear con mayor atención
/etc/ssh MyGroup
/etc/pam.d MyGroup
/etc/sudoers MyGroup
/etc/shadow MyGroup

# Archivos de configuración de Snort
/etc/snort MyGroup

# Excluir directorios que cambian frecuentemente
!/var/lib/mysql/.*
!/home/usuario/descargas/.*

Inicialización de la Base de Datos de AIDE

Antes de usar AIDE, necesitamos inicializar su base de datos:

sudo aideinit
# o alternativamente
sudo aide --init

Esto puede tomar tiempo dependiendo del tamaño de tu sistema. Una vez completado, la base de datos se creará en un archivo temporal (generalmente `/var/lib/aide/aide.db.new`). Necesitamos moverla al lugar correcto:

sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Ejecución Manual de Verificaciones

Para ejecutar una verificación manualmente:

sudo aide --check

Este comando comparará el estado actual del sistema con la base de datos almacenada y mostrará cualquier discrepancia.

Actualización de la Base de Datos

Después de realizar cambios legítimos en el sistema (como actualizaciones de software), debemos actualizar la base de datos de AIDE:

sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Automatización con Cron

Para automatizar las verificaciones regulares, configuremos una tarea cron:

sudo nano /etc/cron.daily/aide-check

Añade este contenido:

bash

#!/bin/bash
# Verificación diaria con AIDE

# Ruta para almacenar informes
REPORT_DIR="/var/log/aide"
REPORT_FILE="$REPORT_DIR/aide-$(date +%Y%m%d-%H%M%S).log"

# Crear directorio si no existe
mkdir -p $REPORT_DIR

# Ejecutar verificación
/usr/bin/aide --check > $REPORT_FILE 2>&1

# Si hay cambios, enviar por correo (opcional)
if [ $? -ne 0 ]; then
    echo "Se detectaron cambios en el sistema. Ver $REPORT_FILE para detalles." | \
    mail -s "Alerta de AIDE: cambios detectados" admin@example.com
fi

exit 0

Haz el script ejecutable:

sudo chmod +x /etc/cron.daily/aide-check

También es buena práctica actualizar la base de datos periódicamente:

sudo nano /etc/cron.weekly/aide-update

Añade este contenido:

bash

#!/bin/bash
# Actualización semanal de la base de datos de AIDE

# Ejecutar actualización
/usr/bin/aide --update

# Mover la nueva base de datos
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

exit 0

Haz el script ejecutable:

sudo chmod +x /etc/cron.weekly/aide-update

Visualización con diagrama PlantUML

El flujo de trabajo de AIDE puede representarse visualmente:

flujo-aide.png

Parte 3: Integración de Snort y AIDE para una Defensa Completa

Estrategia de Defensa en Profundidad

La combinación de Snort y AIDE proporciona una defensa en profundidad para tu sistema:

  1. Snort actúa como primera línea de defensa, monitoreando el tráfico de red y detectando posibles intentos de intrusión antes de que lleguen a comprometer el sistema.
  2. AIDE funciona como última línea de defensa, verificando si algún archivo del sistema ha sido modificado, lo que indicaría una posible intrusión exitosa.

Esta estrategia aplica el principio de defensa en profundidad: múltiples capas de seguridad que se complementan para proteger tus sistemas.

Integración a Nivel de Alertas

Podemos integrar las alertas de ambas herramientas para tener una vista unificada de posibles incidentes de seguridad:

sudo nano /etc/aide/aide.sh

Crea un script que combine los resultados:

bash

#!/bin/bash
# Script para integrar las alertas de Snort y AIDE

# Directorios de logs
SNORT_LOG="/var/log/snort/alert"
AIDE_LOG="/var/log/aide/aide-$(date +%Y%m%d).log"
COMBINED_LOG="/var/log/security/combined-$(date +%Y%m%d).log"

# Crear directorio si no existe
mkdir -p /var/log/security

# Ejecutar verificación de AIDE
echo "Ejecutando verificación de AIDE..." > $COMBINED_LOG
/usr/bin/aide --check >> $COMBINED_LOG 2>&1
echo "" >> $COMBINED_LOG

# Añadir últimas alertas de Snort
echo "Últimas alertas de Snort:" >> $COMBINED_LOG
tail -n 50 $SNORT_LOG >> $COMBINED_LOG
echo "" >> $COMBINED_LOG

# Analizar para detectar correlaciones
echo "Análisis de correlación:" >> $COMBINED_LOG
grep -i "modified" $AIDE_LOG > /tmp/aide_modified.tmp
while read line; do
    file=$(echo $line | awk '{print $2}')
    grep -i "$file" $SNORT_LOG >> $COMBINED_LOG
done < /tmp/aide_modified.tmp

# Enviar informe (opcional)
cat $COMBINED_LOG | mail -s "Informe de Seguridad Diario" admin@example.com

exit 0

Haz el script ejecutable y configúralo como tarea cron diaria:

sudo chmod +x /etc/aide/aide.sh
sudo nano /etc/cron.daily/security-check

Añade este contenido:

bash

#!/bin/bash
/etc/aide/aide.sh

Haz el script ejecutable:

sudo chmod +x /etc/cron.daily/security-check

Visualización con diagrama PlantUML

La integración entre Snort y AIDE puede representarse visualmente:

integracion-snort-aide.png

Parte 4: Mejores Prácticas y Mantenimiento

Actualización de Reglas de Snort

Las reglas de Snort deben actualizarse regularmente para detectar las últimas amenazas:

  1. Suscripción a Reglas: Considera una suscripción a Snort VRT para obtener las últimas reglas comerciales.
  2. Reglas de la Comunidad: Alternativamente, puedes usar reglas gratuitas de la comunidad.
  3. Actualización Automática: Configura un script para actualizar las reglas periódicamente:
sudo nano /etc/cron.daily/update-snort-rules

bash

#!/bin/bash
# Actualización diaria de reglas de Snort

cd /etc/snort/rules
wget -q https://www.snort.org/rules/community -O community.tar.gz
tar -xzf community.tar.gz
rm community.tar.gz

# Reiniciar Snort para aplicar las nuevas reglas
systemctl restart snort.service

Haz el script ejecutable:

sudo chmod +x /etc/cron.daily/update-snort-rules

Ajuste y Optimización de Rendimiento

Para optimizar el rendimiento de Snort:

Ajusta los preprocesadores: Habilita solo los preprocesadores necesarios para tu entorno.

Optimiza la memoria: Ajusta los parámetros de memoria según tus recursos disponibles.

config detection: search-method ac-bnfa
config detection: max_queue_events 5

Filtra tráfico irrelevante: Usa BPF (Berkeley Packet Filter) para filtrar tráfico que no necesitas analizar:

config bpf_file: /etc/snort/bpf.conf


En `/etc/snort/bpf.conf`:

not port 53 and not port 80

Copia de Seguridad y Recuperación

Realizar copias de seguridad regulares de tus configuraciones:

sudo nano /etc/cron.weekly/security-backup

bash

#!/bin/bash
# Copia de seguridad semanal de configuraciones de seguridad

BACKUP_DIR="/backup/security/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# Backup de configuración de Snort
tar -czf $BACKUP_DIR/snort-config.tar.gz /etc/snort

# Backup de configuración de AIDE
cp /etc/aide/aide.conf $BACKUP_DIR/
cp /var/lib/aide/aide.db $BACKUP_DIR/

# Backup de logs (opcional)
tar -czf $BACKUP_DIR/security-logs.tar.gz /var/log/snort /var/log/aide

exit 0

Haz el script ejecutable:

sudo chmod +x /etc/cron.weekly/security-backup

Pruebas de Efectividad

Es importante probar regularmente la efectividad de tu configuración:

  1. Para Snort: Utiliza herramientas como `nmap` o `hping3` para generar tráfico sospechoso de forma controlada y verifica que Snort lo detecte.
# Desde otra máquina (¡NO desde producción!)
sudo nmap -sS -p 1-1000 [IP-objetivo]
  1. Para AIDE: Realiza cambios controlados en archivos monitoreados y verifica que AIDE los detecte.
# Modificar un archivo monitoreado
sudo touch /etc/test-file
sudo aide --check  # Debería mostrar el cambio

Plan de Respuesta a Incidentes

Desarrolla un plan simple de respuesta a incidentes:

  1. Detección: Monitoreo constante de logs y alertas.
  2. Contención: Procedimientos para aislar sistemas comprometidos.
  3. Erradicación: Eliminación de amenazas identificadas.
  4. Recuperación: Restauración de sistemas a un estado seguro.
  5. Lecciones aprendidas: Documentación y mejora continua.

Conclusión

La combinación de Snort (IDS/IPS basado en red) y AIDE (verificación de integridad basada en host) proporciona una estrategia de defensa en profundidad para proteger tus sistemas informáticos. Mientras Snort vigila el perímetro y detecta intentos de intrusión, AIDE verifica que ningún archivo crítico haya sido modificado sin autorización.

La configuración e integración adecuada de estas herramientas, junto con un mantenimiento regular y pruebas periódicas, te permitirá mantener un nivel de seguridad robusto frente a las constantes amenazas del entorno digital.

Recuerda que la seguridad informática es un proceso continuo, no un producto. Mantente actualizado sobre las últimas amenazas y técnicas de protección, y adapta tu estrategia de seguridad en consecuencia.

Referencias y Recursos Adicionales

Notas para el Editor de Emacs

Categoría: seguridad informática nort AIDE IDS IPS detección intrusiones monitoreo integridad emacs linux tutoriales

Suscribirse al Feed RSS | Mapa del Sitio

© 2025 M.Castillo | Hecho con ❤️ en Emacs y org-static-blog

📊 Estadísticas Visit counter For Websites