Red de conocimiento informático - Material del sitio web - Cómo instalar el sistema de detección de intrusos Suricata en Linux

Cómo instalar el sistema de detección de intrusos Suricata en Linux

Instalación de Suricata IDS en Linux

Puede que valga la pena compilar Suricata desde el código fuente, primero instalando algunas de las dependencias requeridas como se muestra a continuación.

Instalar dependencias en Debian, Ubuntu o Linux Mint

$ sudo apt-get install wget build-essential libpcre3-dev libpcre3-dbg automake autoconf libtool libpcap-dev libnet1-dev libyaml -dev zlib1g-dev libcap-ng-dev libjansson-dev

Instalar paquetes de dependencia en CentOS, Fedora o RHEL

$ sudo yum install wget libpcap-devel libnet-devel pcre -devel gcc -c automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel

Después de instalar todos los paquetes de software necesarios, puede seguir los pasos a continuación para instalar Suricata.

Primero, instale la última instantánea del conjunto de reglas de la comunidad disponible en (https://www.bro.org) y guárdela en /etc/suricata/rules.

Configurando Suricata IDS por primera vez

Ahora estás listo para configurar Suricata. El archivo de configuración se encuentra en /etc/suricata/suricata.yml. Abra el archivo para editarlo usando una herramienta de edición de texto.

$ sudo vi /etc/suricata/suricata.yaml

Aquí hay algunas configuraciones básicas para comenzar.

La palabra clave "default-log-dir" debe apuntar a la ubicación del archivo de registro de Suricata.

default-log-dir:/var/log/suricata/

En la sección "vars", encontrará varias variables importantes utilizadas por Suricata. "HOME_NET" debería apuntar a la red local que Suricata verifica. "$HOME_NET" (asignado a EXTERNAL_NET) se refiere a cualquier red que no sea la red local. "XXX_PORTS" representa uno o más números de puerto utilizados por diferentes servicios. Tenga en cuenta: Suricata detecta automáticamente el tráfico HTTP independientemente del puerto utilizado. Por lo tanto, no es importante especificar correctamente la variable HTTP_PORTS.

vars:

HOME_NET: "[192.168.122.0/24]"

EXTERNAL_NET: "!$HOME_NET"

HTTP_PORTS: "80"

SHELLCODE_PORTS: "!80"

SSH_PORTS: 22

Esta parte de la "host-os-policy" se utiliza para evitar que ciertas redes helicóptero explota el sistema operativo. Como contramedida, los IDS modernos proponen la llamada detección "basada en objetivos", en la que el motor de detección ajusta el algoritmo de detección en función del sistema operativo de destino del tráfico.

Entonces, si sabe qué sistema operativo ejecuta cada host local, puede proporcionarle a Suricata esa información, lo que con suerte acelerará su detección. Aquí es donde entra en juego la parte "host-os-policy" (política del sistema operativo host). En este ejemplo, la política IDS predeterminada es Linux, si no se conoce la información del sistema operativo para la dirección IP, Suricata aplicará una política de detección basada en Linux; Si se captura el tráfico para 192.168.122.0/28 y 192.168.122.155, Suricata aplicará políticas de inspección basadas en Windows.

host-os-policy:

# Estas son máquinas con Windows.

ventanas: [192.168.122.0/28, 192.168.122.155]

bsd: []

bsd-right: []

old-linux: []

# Establecer Linux como política predeterminada.

linux: [0.0.0.0/0]

antiguo-solaris: []

solaris: ["::1"]

hpux10: []

hpux11: []

irix: []

macos: [

vista: []

windows2k3: []

En la sección "Subprocesos", puede especificar la afinidad de CPU para diferentes subprocesos de Suricata. De forma predeterminada, la afinidad de la CPU está deshabilitada ("set-cpu-affinity: no"), lo que significa que los subprocesos de Suricata se programarán en cualquier núcleo de CPU disponible. De forma predeterminada, Suricata crea un subproceso de "instrumentación" por núcleo de CPU. Puede hacer esto especificando "detect-thread-ratio: N". Esto crea N x M subprocesos de detección, donde M es el número total de núcleos de CPU en el host.

Subprocesos:

set-cpu-affinity: no

detect-thread-ratio: 1.5

Para la configuración de subprocesos anterior, Se crearán subprocesos de instrumentación Suricata 1.5 x M, donde M es el número total de núcleos de CPU en el sistema.

Para obtener más información sobre la configuración de Suricata, puede leer el archivo de configuración predeterminado, que está muy comentado para facilitar su comprensión.

Realización de detección de intrusiones usando Suricata

Ahora es el momento de intentar ejecutar Suricata. Antes del lanzamiento, hay un paso más que debe completarse.

Si está utilizando el modo de captura pcap, se recomienda encarecidamente desactivar cualquier función de descarga de paquetes (como LRO/GRO) en la NIC en la que Suricata está escuchando, ya que estas funciones pueden interferir con el tiempo real. captura de paquetes.

A continuación se explica cómo desactivar LRO/GRO en la interfaz de red eth0:

$ sudo ethtool -K eth0 gro off lro off

Tenga en cuenta: Dependiendo de la tarjeta de red, es posible que vea el siguiente mensaje de advertencia; ignórelo. Esto simplemente significa que su tarjeta de red no es compatible con LRO.

No se pueden cambiar grandes descargas de recepción

Suricata admite múltiples modos de operación. El modo de ejecución determina cómo IDS utiliza diferentes subprocesos. El siguiente comando enumera todos los modos de ejecución disponibles.

$ sudo /usr/local/bin/suricata --list-runmodes

El modo de ejecución predeterminado utilizado por Suricata es autofp (es decir, "modo de equilibrio de carga de enlace automático de tráfico"). En este modo, los paquetes para cada flujo se asignan a un hilo de inspección. Los flujos se asignan al hilo con la menor cantidad de paquetes pendientes.

Finalmente, vale la pena encender Suricata y ver cómo va.

$ sudo /usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --init-errors-fatal

En este ejemplo, realizamos Se monitoreará la interfaz eth0 en un sistema de 8 núcleos. Suricata crea 13 subprocesos de procesamiento de paquetes y 3 subprocesos de gestión. Los subprocesos de procesamiento de paquetes incluyen 1 subproceso de captura de paquetes PCAP y 12 subprocesos de inspección (equivalente a 8 x 1,5). Esto significa que los paquetes capturados por el subproceso de captura tienen carga equilibrada y se procesan entre los 12 subprocesos de inspección frente al IDS. Los subprocesos de administración incluyen un administrador de tráfico y dos subprocesos relacionados con contadores/estadísticas.

La siguiente es una vista del hilo del proceso de Suricata (dibujado por htop).

Los registros de verificación de Suricata se almacenan en el directorio /var/log/suricata.

$ tail -f /var/log/suricata/fast.log

01/04/2015-15:47:12.559075 [**] [1:2200074:1] SURICATA TCPv4 suma de comprobación no válida [**] [Clasificación: (nula)] [Prioridad: 3] {TCP} 172.16.253.158:22-gt; 172.16.253.1:46997

01/04/ 2015-15 :49:06.565901 [**] [1:2200074:1] Suma de comprobación SURICATA TCPv4 no válida [**] [Clasificación: (nula)] [Prioridad: 3] {TCP} 172.16.253.158:22 - gt; 46317

01/04/2015-15:49:06.566759 [**] [1:2200074:1] Suma de comprobación SURICATA TCPv4 no válida [**] [Categoría: ( Vacío)] [Prioridad: 3] {TCP} 172.16.253.158:22-gt; 172.16.253.1:46317

Para facilitar la importación, también hay registros en formato JSON:

$ tail -f /var/ log/suricata/eve.json

{"timestamp":"2015-04-01T15:49:.06.565901","event_type":"alert","src_ip" : "172.16.253.158", "src_port": 22, "dest_ip": "172.16.253.1", "dest_port": 46317, "proto": "TCP", "alert": { "action": "permitido", "gid": 1, " Signature_id": 2200074, "rev": 1, "signature": "SURICATA TCPv4 Suma de comprobación no válida", "category": "", "severity": 3}}

{"timestamp": "2015 -04-01T15:49:06.566759", "event_type": "alert", "src_ip": "172.16.253.158", "src_port": 22, "dest_ip": "172.16.253.1", "dest_port": 46317, "proto": "TCP", "alert": {"action": "allowed", "gid": 1, "signature_id": 2200074, "rev": 1 , "signature". "SURICATA TCPv4 Suma de comprobación no válida", "categoría": "", "gravedad": 3}}