SNORT (https://www.snort.org/) es un software que puede configurarse como NIDS (Instrusion Detection System) y NIPS (Intrusion Prevention System) y está escrito en lenguaje C. Al ser open source es ideal para realizar pruebas de detección de intrusos en técnicas de escaneo de hosts y puertos. Puede instalarse para diferentes Sistemas Operativos y en diferentes dispositivos. Su funcionamiento está basado en la monitorización de paquetes de red y detección de intrusiones por firma de ataque. Se pueden incorporar reglas de detección estándares y gratuitas (comunitarias) o de pago, y también crear reglas simples para generar avisos o bloquear comunicaciones sospechosas, ya sea actuando en una red o en el dispositivo local, almacenando la información en logs.
Su instalación y configuración debe realizarse por pasos (se recomienda no instalar a través de la librería apt). En el siguiente ejemplo se va a instalar SNORT en una imagen del Sistema Operativo Debian11 en VirtualBox, resumiendo los pasos que se muestran en la web de SNORT y en otros sitios. Puede descargarse una imagen de Debian en su web (https://www.debian.org/distrib/) y seguir las instrucciones como en la virtualización de Kali Linux. Una vez realizada la virtualización, se recomienda instalar las Guest Additions para mejorar la experiencia de usuario con VirtualBox. Puede hacerse fácilmente con las siguientes indicaciones: https://linuxize.com/post/how-to-install-virtualbox-guest-additions-on-debian-10/
En entornos reales, se recomienda ejecutar SNORT con un usuario que no sea root. No obstante, para su instalación se puede hacer empleando el comando sudo o bien con su y posteriormente añadiendo la contraseña de root, obteniendo así una consola de comandos con privilegios de forma constante. A continuación los pasos para la instalación, configuración y ejecución de pruebas de funcionamiento.
3.6.2.1. Instalación de SNORT
La instalación de SNORT debe realizarse en dos partes: software SNORT y DAQ. La siglas de DAQ son en la traducción en español: Biblioteca de Adquisición de Datos para hacer llamadas abstractas a las bibliotecas de captura de paquetes, o lo que es lo mismo, una librería para sniffing de paquetes de red. Las siguientes líneas de comandos se pueden copiar y pegar en la consola para realizar de forma rápida la instalación, sin entrar en detalles:
1. Instalación de librerías generales y creación de directorio (~/snort_src) para la ubicación de ficheros de código fuente en directorio usuario:
2. DAQ (versión 2.0.7): Descarga de paquete de código fuente y descomprimir:
wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
tar -xvzf daq-2.0.7.tar.gz
cd daq-2.0.7
3. DAQ: Paso de reconfiguración previa y compilación e instalación (desde fichero descomprimido daq-2.0.7):
apt-get install autoconf libtool
autoreconf -f –i
./configure && make && sudo make install
4. SNORT (versión 2.9.20): Regreso a dependencia de ficheros de código, descarga, descomprimir e instalación:
cd ~/snort_src
wget https://www.snort.org/downloads/snort/snort-2.9.20.tar.gz
tar -xvzf snort-2.9.20.tar.gz && cd snort-2.9.20
./configure --enable-sourcefire && make && sudo make install
3.6.2.2. Configuración de SNORT
Ahora la configuración de SNORT. Se pueden copiar directamente las líneas de comando en la consola:
1. (Optativo-Recomendable) Actualización de librería de funciones y creación de enlace simbólico entre directorios:
3. Creación de estructura de directorios para almacenar ficheros de configuración y logs, añadiendo permisos, creación de listas de reglas, copiar la configuración de SNORT desde repositorio de código:
Nota: El directorio que sigue a «etc» hay añadido un espacio adicional tanto delante como detrás. Recordar de adjuntar si se copian y pegan las instrucciones.
5. (Recomendable) Descomentar reglas de forma general (Snort en Debian espera encontrar varios archivos de reglas diferentes que no están incluidos en las reglas de la comunidad):
sed -i 's/include $RULE_PATH/#include $RULE_PATH/' / etc /snort/snort.conf
6. Comprobación de los parámetros del fichero de configuración general que se halla en / etc /snort/snort.conf (ir haciendo scroll para verlas). Modificar con algún software de edición de texto:
Parámetros de red: Incorporar el tipo de red para el cual se va a usar SNORT en notación CIDR donde se indica o el servidor a implementar SNORT (también añadiendo dato de máscara de red).
ipvar HOME_NET [CIRD | SERVER_IP_PUBLIC]
Configuración de estructura de directorios de reglas: De acuerdo a la instalación, dejar como se muestra:
var RULE_PATH / etc /snort/rules
var SO_RULE_PATH / etc /snort/so_rules
var PREPROC_RULE_PATH / etc /snort/preproc_rules
var WHITE_LIST_PATH / etc /snort/rules
var BLACK_LIST_PATH / etc /snort/rules
Configuración de formato de ficheros de log: De acuerdo a la instalación indicar como se muestra:
output unified2: filename snort.log, limit 128
Configuración de fichero de reglas equipo local y añadir línea uso de reglas comunitarias: Descomentar la regla para activar el uso de reglas en el dispositivo local (y así realizar pruebas) y añadir la siguiente línea como se muestra.
include $RULE_PATH/local.rules
include $RULE_PATH/community.rules
7. Para validar la configuración deberá ejecutarse la siguiente línea de comando. Al terminar, deberá salir un aviso de que todo es correcto.
snort -T -c / etc /snort/snort.conf
3.6.2.3. Testing y prueba de funcionamiento SNORT
Una vez instalado y configurado SNORT, se debe realizar una prueba de funcionamiento. La típica prueba consiste en añadir una regla local para advertir de un PING contra el dispositivo.
1. Configuración de regla local en etc /snort/rules/local.rules con algún editor de texto. Añadir regla mostrada para comprobación de PING:
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)
Nota: Como se muestra, las reglas locales están compuestas por una línea con una determinada sintaxis. De forma resumida constaría de las siguientes partes:
Acción a realizar: alertar, bloqueo, etc. (alert).
Protocolo a monitorizar (icmp)
Dirección de red o IP y puerto a monitorizar externo (any any en el ejemplo para indicar cualquiera).
Dirección y puerto de destino configurado en variable en el fichero snort.conf ($HOME_NET any).
Log del mensaje (msg…).
Identificador único de regla. Para reglas locales debe ser superior a 1000001.
Versión de la regla (rev:001)
2. Activar el modo monitoreo con la siguiente línea de comando. Para el parámetro –i debe indicarse la interfaz de red activa. Si no se sabe, se puede emplear el comando ifconfig o ip addr tal y como se muestra en el ejemplo. Como se ve, el modo monitoreo invoca la configuración de SNORT del fichero (snort.conf):
3. Efectuar una prueba PING con otro equipo, comprobando que se registra correctamente la alerta y el mensaje:
4. Por defecto, y de acuerdo a las reglas, la monitorización quedará almacenada como log en el directorio /var/log/snort en diferentes ficheros. Puede consultarse la información de los logs con el siguiente comando, donde log* indica el nombre del fichero:
snort -r /var/log/snort/snort.log*
Ahora ya se pueden añadir otras reglas para efectuar comprobaciones de detección de intrusos en escaneo de puertos y hosts. Esto solo ha sido un primer paso para comprender el funcionamiento y configuración de SNORT, pero sin embargo es un software con muchas más posibilidades. En la página oficial del proyecto existe documentación al respecto. Comentar que también puede ejecutarse SNORT como servicio en segunda instancia, sin tener que poner en modo monitoreo (que al final resulta útil solo para realizar pruebas…).
Usamos cookies para asegurar que te damos la mejor experiencia en nuestra web. Si continúas usando este sitio, asumiremos que estás de acuerdo con ello.Aceptar