Cómo Instalar Suricata en CentOS 8 Stream

Introducción

Suricata es una herramienta de Monitorización de Seguridad de Red (NSM, por sus siglas en inglés) que utiliza conjuntos de firmas creadas por la comunidad y definidas por el usuario (también denominadas reglas) para examinar y procesar el tráfico de red. Suricata puede generar eventos de registro, activar alertas y bloquear el tráfico cuando detecta paquetes sospechosos o solicitudes a cualquier número de servicios diferentes que se ejecuten en un servidor.

Por defecto, Suricata funciona como un Sistema de Detección de Intrusiones (IDS) pasivo para escanear el tráfico sospechoso en un servidor o red. Generará y registrará alertas para una investigación más detallada. También se puede configurar como un Sistema de Prevención de Intrusiones (IPS) activo para registrar, alertar y bloquear completamente el tráfico de red que coincida con reglas específicas.

Se puede implementar Suricata en un host de puerta de enlace en una red para escanear todo el tráfico de red entrante y saliente de otros sistemas, o se puede ejecutar localmente en máquinas individuales en cualquiera de los modos.

En este tutorial aprenderás cómo instalar Suricata y cómo personalizar algunos de sus ajustes predeterminados en Centos 8 Stream para satisfacer tus necesidades. También aprenderás cómo descargar conjuntos de firmas existentes (normalmente denominados conjuntos de reglas) que Suricata utiliza para escanear el tráfico de red. Finalmente, aprenderás cómo probar si Suricata está funcionando correctamente cuando detecta solicitudes y datos sospechosos en una respuesta.

Requisitos previos

Dependiendo de la configuración de tu red y cómo planeas utilizar Suricata, es posible que necesites más o menos CPU y RAM para tu servidor. En general, cuanto más tráfico planees inspeccionar, más recursos deberías asignar a Suricata. En un entorno de producción, planifica utilizar al menos 2 CPUs y 4 o 8 GB de RAM para empezar. A partir de ahí, puedes aumentar los recursos según el rendimiento de Suricata y la cantidad de tráfico que necesites procesar.

Si planeas usar Suricata para proteger el servidor en el que se ejecuta, necesitarás:

De lo contrario, si planeas usar Suricata en un host de puerta de enlace para monitorear y proteger varios servidores, deberás asegurarte de que la red del host esté configurada correctamente.

Si estás utilizando DigitalOcean, puedes seguir esta guía sobre Cómo Configurar un Droplet como Puerta de Enlace VPC. Esas instrucciones deberían funcionar para la mayoría de los servidores derivados de CentOS, Fedora y otros sistemas basados en RedHat también.

Paso 1 — Instalación de Suricata

Para empezar a instalar Suricata, necesitarás agregar la información del repositorio de software de la Open Information Security Foundation (OISF) a tu sistema CentOS. Puedes usar el comando dnf copr enable para hacer esto. También necesitarás agregar el repositorio Extra Packages for Enterprise Linux (EPEL).

Para habilitar el subcomando de Proyectos Comunitarios (copr) para la herramienta de paquetes dnf, ejecuta lo siguiente:

  1. sudo dnf install 'dnf-command(copr)'

Se te pedirá instalar algunas dependencias adicionales, así como aceptar la clave GPG para la distribución de Linux CentOS. Presiona y y luego ENTER cada vez para terminar de instalar el paquete copr.

A continuación, ejecuta el siguiente comando para agregar el repositorio de OISF a tu sistema y actualizar la lista de paquetes disponibles:

  1. sudo dnf copr enable @oisf/suricata-6.0

Pulsa y y luego ENTER cuando se te pida confirmar que deseas agregar el repositorio.

Ahora agrega el paquete epel-release, lo que hará disponibles algunos paquetes de dependencias adicionales para Suricata:

  1. sudo dnf install epel-release

Cuando se te pida importar la clave GPG, presiona y y luego ENTER para aceptar.

Ahora que tienes los repositorios de software requeridos habilitados, puedes instalar el paquete suricata usando el comando dnf:

  1. sudo dnf install suricata

Cuando se te solicite agregar la clave GPG para el repositorio de OISF, presiona y y ENTER. El paquete y sus dependencias se descargarán e instalarán ahora.

A continuación, habilita el servicio suricata.service para que se ejecute cuando se reinicie tu sistema. Utiliza el comando systemctl para habilitarlo:

  1. sudo systemctl enable suricata.service

Deberías recibir una salida como la siguiente que indica que el servicio está habilitado:

Output
Created symlink /etc/systemd/system/multi-user.target.wants/suricata.service → /usr/lib/systemd/system/suricata.service.

Antes de pasar a la siguiente sección de este tutorial, que explica cómo configurar Suricata, detén el servicio usando systemctl:

  1. sudo systemctl stop suricata.service

Detener Suricata garantiza que cuando edites y pruebes el archivo de configuración, cualquier cambio que realices se validará y se cargará cuando Suricata se inicie nuevamente.

Paso 2 — Configurando Suricata por primera vez

El paquete Suricata de los repositorios de OISF viene con un archivo de configuración que cubre una amplia variedad de casos de uso. El modo predeterminado para Suricata es el modo IDS, por lo que no se eliminará ningún tráfico, solo se registrará. Dejar este modo configurado como predeterminado es una buena idea mientras aprendes Suricata. Una vez que tengas Suricata configurado e integrado en tu entorno, y tengas una buena idea de los tipos de tráfico sobre los que te alertará, puedes optar por activar el modo IPS.

Sin embargo, la configuración predeterminada todavía tiene algunas configuraciones que es posible que necesites cambiar dependiendo de tu entorno y necesidades.

(Opcional) Habilitar el ID de flujo de la comunidad

Suricata puede incluir un campo de ID de comunidad en su salida JSON para facilitar la correspondencia de registros de eventos individuales con registros en conjuntos de datos generados por otras herramientas.

Si planea utilizar Suricata con otras herramientas como Zeek o Elasticsearch, agregar el ID de la comunidad ahora es una buena idea.

Para habilitar la opción, abra /etc/suricata/suricata.yaml utilizando vi o su editor preferido:

  1. sudo vi /etc/suricata/suricata.yaml

Encuentre la línea 120 que dice # ID de flujo de la comunidad. Si está utilizando vi, escriba 120gg para ir directamente a la línea. Debajo de esa línea está la clave community-id. Establézcala en true para habilitar el ajuste:

/etc/suricata/suricata.yaml
. . .
      # ID de flujo de la comunidad
      # Agrega un campo 'community_id' a los registros de EVE. Estos están destinados a proporcionar
      # registros un ID de flujo predecible que se puede utilizar para hacer coincidir registros con
      # la salida de otras herramientas como Zeek (Bro).
      #
      # Toma una 'semilla' que debe ser la misma en todos los sensores y herramientas
      # para hacer que el id sea menos predecible.

      # habilitar/deshabilitar la función de ID de comunidad.
      community-id: true
. . .

Ahora, al examinar los eventos, tendrán un ID como 1:S+3BA2UmrHK0Pk+u3XH78GAFTtQ= que puedes usar para correlacionar registros entre diferentes herramientas NMS.

Guarda y cierra el archivo /etc/suricata/suricata.yaml. Si estás utilizando vi, puedes hacerlo con ESC y luego :x y luego ENTER para guardar y salir del archivo.

Determinando qué interfaz(es) de red utilizar

Puede que necesites anular la interfaz de red predeterminada o las interfaces que te gustaría que Suricata inspeccionara el tráfico en. El archivo de configuración que viene con el paquete OISF Suricata por defecto inspecciona el tráfico en un dispositivo llamado eth0. Si tu sistema utiliza una interfaz de red predeterminada diferente, o si te gustaría inspeccionar el tráfico en más de una interfaz, entonces necesitarás cambiar este valor.

Para determinar el nombre del dispositivo de tu interfaz de red predeterminada, puedes usar el comando ip de la siguiente manera:

  1. ip -p -j route show default

La bandera -p formatea la salida para que sea más legible, y la bandera -j imprime la salida como JSON.

Deberías recibir una salida como la siguiente:

Output
[ { "dst": "default", "gateway": "203.0.113.254", "dev": "eth0", "protocol": "static", "metric": 100, "flags": [ ] } ]

La línea dev indica el dispositivo predeterminado. En esta salida de ejemplo, el dispositivo es la interfaz eth0 resaltada. Su salida puede mostrar un nombre de dispositivo como ens... o eno.... Sea cual sea el nombre, tome nota de él.

Ahora puede editar la configuración de Suricata y verificar o cambiar el nombre de la interfaz. Abra el archivo de configuración /etc/suricata/suricata.yaml usando vi o su editor preferido:

  1. sudo vi /etc/suricata/suricata.yaml

Desplácese por el archivo hasta encontrar una línea que diga af-packet: alrededor de la línea 580. Si está utilizando vi, también puede ir directamente a la línea ingresando 580gg. Debajo de esa línea está la interfaz predeterminada que Suricata usará para inspeccionar el tráfico. Edite la línea para que coincida con su interfaz como en el ejemplo resaltado que sigue:

/etc/suriata/suricata.yaml
# Soporte de captura de alta velocidad de Linux
af-packet:
  - interface: eth0
    # Número de hilos de recepción. "auto" usa el número de núcleos
    #threads: auto
    # clusterid predeterminado. AF_PACKET distribuirá equitativamente los paquetes según el flujo.
    cluster-id: 99
. . .

Si desea inspeccionar el tráfico en interfaces adicionales, puede agregar más objetos YAML - interface: eth.... Por ejemplo, para agregar un dispositivo llamado enp0s1, desplácese hacia abajo hasta el final de la sección af-packet alrededor de la línea 650. Para agregar una nueva interfaz, insértela antes de la sección - interface: default como en el siguiente ejemplo resaltado:

/ec/suricata/suricata.yaml
    #  Para la configuración de eBPF y XDP, incluyendo bypass, filtro y balanceo de carga, por favor
    #  consulte el doc/userguide/capture-hardware/ebpf-xdp.rst para obtener más información.

  - interface: enp0s1
cluster-id: 98

  - interface: default
    #threads: auto
    #use-mmap: no
    #tpacket-v3: sí

Asegúrese de elegir un valor único de cluster-id para cada objeto - interface.

Mantenga su editor abierto y continúe a la siguiente sección donde configurará la recarga de reglas en vivo. Si no desea habilitar esa configuración, puede guardar y cerrar el archivo /etc/suricata/suricata.yaml. Si está utilizando vi, puede hacerlo con ESC, luego :x y ENTER para guardar y salir.

Configuración de Recarga de Reglas en Vivo

Suricata admite la recarga de reglas en vivo, lo que significa que puede agregar, eliminar y editar reglas sin necesidad de reiniciar el proceso en ejecución de Suricata. Para habilitar la opción de recarga en vivo, desplácese hasta la parte inferior del archivo de configuración y agregue las siguientes líneas:

/etc/suricata/suricata.yaml
. . .

detect-engine:
  - rule-reload: true

Con esta configuración, podrá enviar la señal del sistema SIGUSR2 al proceso en ejecución, y Suricata recargará cualquier regla modificada en memoria.

A command like the following will notify the Suricata process to reload its rulesets, without restarting the process:

  1. sudo kill -usr2 $(pidof suricata)

La parte $(pidof suricata) del comando invoca un subshell y encuentra el ID del proceso del daemon Suricata en ejecución. La parte inicial sudo kill -usr2 del comando utiliza la utilidad kill para enviar la señal SIGUSR2 al ID del proceso que es reportado por el subshell.

Puedes usar este comando cada vez que ejecutes suricata-update o cuando agregues o edites tus propias reglas personalizadas.

Guarda y cierra el archivo /etc/suricata/suricata.yaml. Si estás utilizando vi, puedes hacerlo con ESC, luego :x y ENTER para confirmar.

Paso 3 — Actualización de conjuntos de reglas de Suricata

En este punto del tutorial, si intentaras iniciar Suricata, recibirías un mensaje de advertencia como el siguiente en los registros de que no hay reglas cargadas:

Output
<Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/suricata.rules

Por defecto, el paquete de Suricata incluye un conjunto limitado de reglas de detección (en el directorio /etc/suricata/rules), por lo que activar Suricata en este momento solo detectaría una cantidad limitada de tráfico malicioso.

Suricata incluye una herramienta llamada suricata-update que puede obtener conjuntos de reglas de proveedores externos. Ejecútalo de la siguiente manera para descargar un conjunto de reglas actualizado para tu servidor de Suricata:

  1. sudo suricata-update

Deberías recibir una salida como la siguiente:

Output
19/10/2021 -- 19:31:03 - <Info> -- Using data-directory /var/lib/suricata. 19/10/2021 -- 19:31:03 - <Info> -- Using Suricata configuration /etc/suricata/suricata.yaml 19/10/2021 -- 19:31:03 - <Info> -- Using /usr/share/suricata/rules for Suricata provided rules. . . . 19/10/2021 -- 19:31:03 - <Info> -- No sources configured, will use Emerging Threats Open 19/10/2021 -- 19:31:03 - <Info> -- Fetching https://rules.emergingthreats.net/open/suricata-6.0.3/emerging.rules.tar.gz. 100% - 3062850/3062850 . . . 19/10/2021 -- 19:31:06 - <Info> -- Writing rules to /var/lib/suricata/rules/suricata.rules: total: 31011; enabled: 23649; added: 31011; removed 0; modified: 0 19/10/2021 -- 19:31:07 - <Info> -- Writing /var/lib/suricata/rules/classification.config 19/10/2021 -- 19:31:07 - <Info> -- Testing with suricata -T. 19/10/2021 -- 19:31:32 - <Info> -- Done.

Las líneas resaltadas indican que suricata-update ha obtenido las reglas gratuitas de Amenazas Emergentes ET Open Rules, y las ha guardado en el archivo /var/lib/suricata/rules/suricata.rules de Suricata. También indica la cantidad de reglas que fueron procesadas, en este ejemplo, se agregaron 31011 y de esas 23649 estaban habilitadas.

Agregando Proveedores de Conjuntos de Reglas

La herramienta suricata-update puede obtener reglas de una variedad de proveedores de conjuntos de reglas gratuitos y comerciales. Algunos conjuntos de reglas, como el conjunto ET Open que ya agregaste, están disponibles de forma gratuita, mientras que otros requieren una suscripción paga.

Puedes listar el conjunto predeterminado de proveedores de reglas usando la bandera list-sources con suricata-update de la siguiente manera:

  1. sudo suricata-update list-sources

Recibirás una lista de fuentes como la siguiente:

Output
. . . 19/10/2021 -- 19:27:34 - <Info> -- Adding all sources 19/10/2021 -- 19:27:34 - <Info> -- Saved /var/lib/suricata/update/cache/index.yaml Name: et/open Vendor: Proofpoint Summary: Emerging Threats Open Ruleset License: MIT . . .

Por ejemplo, si deseas incluir el conjunto de reglas tgreen/hunting, podrías habilitarlo usando el siguiente comando:

  1. sudo suricata-update enable-source tgreen/hunting

Luego ejecuta suricata-update nuevamente y se agregarán el nuevo conjunto de reglas, además de las reglas ET Open existentes y cualquier otra que hayas descargado.

Paso 4 — Validación de la Configuración de Suricata

Ahora que has editado el archivo de configuración de Suricata para incluir el ID de Comunidad opcional, especificar la interfaz de red predeterminada y habilitar la recarga de reglas en vivo, es una buena idea probar la configuración.

Suricata tiene un modo de prueba incorporado que verificará el archivo de configuración y cualquier regla incluida para su validez. Valida tus cambios de la sección anterior usando la bandera -T para ejecutar Suricata en modo de prueba. La bandera -v imprimirá información adicional, y la bandera -c le indica a Suricata dónde encontrar su archivo de configuración:

  1. sudo suricata -T -c /etc/suricata/suricata.yaml -v

La prueba puede llevar algún tiempo dependiendo de la cantidad de CPU que hayas asignado a Suricata y el número de reglas que hayas agregado, así que prepárate para esperar uno o dos minutos para que se complete.

Con el conjunto de reglas predeterminado ET Open deberías recibir una salida como la siguiente:

Output
21/10/2021 -- 15:00:40 - <Info> - Running suricata under test mode 21/10/2021 -- 15:00:40 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode 21/10/2021 -- 15:00:40 - <Info> - CPUs/cores online: 2 21/10/2021 -- 15:00:40 - <Info> - fast output device (regular) initialized: fast.log 21/10/2021 -- 15:00:40 - <Info> - eve-log output device (regular) initialized: eve.json 21/10/2021 -- 15:00:40 - <Info> - stats output device (regular) initialized: stats.log 21/10/2021 -- 15:00:46 - <Info> - 1 rule files processed. 23879 rules successfully loaded, 0 rules failed 21/10/2021 -- 15:00:46 - <Info> - Threshold config parsed: 0 rule(s) found 21/10/2021 -- 15:00:47 - <Info> - 23882 signatures processed. 1183 are IP-only rules, 4043 are inspecting packet payload, 18453 inspect application layer, 107 are decoder event only 21/10/2021 -- 15:01:13 - <Notice> - Configuration provided was successfully loaded. Exiting. 21/10/2021 -- 15:01:13 - <Info> - cleaning up signature grouping structure... complete

Si hay un error en tu archivo de configuración, entonces el modo de prueba generará un código de error específico y un mensaje que puedes utilizar para ayudar a solucionarlo. Por ejemplo, incluir un archivo de reglas que no existe llamado test.rules generaría un error como el siguiente:

Output
21/10/2021 -- 15:10:15 - <Info> - Running suricata under test mode 21/10/2021 -- 15:10:15 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode 21/10/2021 -- 15:10:15 - <Info> - CPUs/cores online: 2 21/10/2021 -- 15:10:15 - <Info> - eve-log output device (regular) initialized: eve.json 21/10/2021 -- 15:10:15 - <Info> - stats output device (regular) initialized: stats.log 21/10/2021 -- 15:10:21 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/test.rules

Con ese error podrías editar tu archivo de configuración para incluir la ruta correcta, o corregir variables inválidas y opciones de configuración.

Una vez que se completa con éxito la ejecución en modo de prueba de Suricata, puede pasar al siguiente paso, que es iniciar Suricata en modo daemon.

Paso 5 — Ejecutar Suricata

Ahora que tiene una configuración de Suricata válida y un conjunto de reglas, puede iniciar el servidor Suricata. Ejecute el siguiente comando systemctl:

  1. sudo systemctl start suricata.service

Puede examinar el estado del servicio usando el comando systemctl status:

  1. sudo systemctl status suricata.service

Debería recibir una salida como la siguiente:

Output
● suricata.service - Suricata Intrusion Detection Service Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2021-10-21 18:22:56 UTC; 1min 57s ago Docs: man:suricata(1) Process: 24588 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS) Main PID: 24590 (Suricata-Main) Tasks: 1 (limit: 23473) Memory: 80.2M CGroup: /system.slice/suricata.service └─24590 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid -i eth0 --user suricata Oct 21 18:22:56 suricata systemd[1]: Starting Suricata Intrusion Detection Service.. Oct 21 18:22:56 suricata systemd[1]: Started Suricata Intrusion Detection Service. . . .

Al igual que con el comando de modo de prueba, Suricata tomará uno o dos minutos para cargar y analizar todas las reglas. Puede usar el comando tail para observar un mensaje específico en los registros de Suricata que indique que ha terminado de iniciar:

  1. sudo tail -f /var/log/suricata/suricata.log

Recibirá varias líneas de salida, y la terminal puede parecer estar atascada mientras Suricata carga. Continúe esperando la salida hasta que reciba una línea como la siguiente:

Output
19/10/2021 -- 19:22:39 - <Info> - All AFP capture threads are running.

Esta línea indica que Suricata está en ejecución y listo para inspeccionar el tráfico. Puede salir del comando tail usando CTRL+C.

Ahora que ha verificado que Suricata está en funcionamiento, el siguiente paso en este tutorial es verificar si Suricata detecta una solicitud a una URL de prueba diseñada para generar una alerta.

Paso 6 — Prueba de Reglas de Suricata

El conjunto de reglas ET Open que descargaste contiene más de 30000 reglas. Una explicación completa de cómo funcionan las reglas de Suricata y cómo construirlas está más allá del alcance de este tutorial introductorio. Un tutorial posterior en esta serie explicará cómo funcionan las reglas y cómo construir las tuyas propias.

Para los propósitos de este tutorial, es suficiente probar si Suricata está detectando tráfico sospechoso con la configuración que generaste. El Inicio rápido de Suricata recomienda probar la regla ET Open con el número 2100498 usando el comando curl.

Ejecuta lo siguiente para generar una solicitud HTTP, que devolverá una respuesta que coincida con la regla de alerta de Suricata:

  1. curl http://testmynids.org/uid/index.html

El comando curl devolverá una respuesta como la siguiente:

Output
uid=0(root) gid=0(root) groups=0(root)

Estos datos de respuesta de ejemplo están diseñados para desencadenar una alerta, simulando devolver la salida de un comando como id que podría ejecutarse en un sistema remoto comprometido a través de un shell web.

Ahora puedes verificar los registros de Suricata en busca de una alerta correspondiente. Hay dos registros que están habilitados con la configuración predeterminada de Suricata. El primero está en /var/log/suricata/fast.log y el segundo es un registro legible por máquina en /var/log/suricata/eve.log.

Examinando /var/log/suricata/fast.log

Para verificar una entrada de registro en /var/log/suricata/fast.log que corresponda a tu solicitud curl, utiliza el comando grep. Usando el identificador de regla 2100498 de la documentación de inicio rápido, busca entradas que coincidan con él utilizando el siguiente comando:

  1. grep 2100498 /var/log/suricata/fast.log

Si tu solicitud utilizó IPv6, entonces deberías recibir una salida como la siguiente, donde 2001:DB8::1 es la dirección IPv6 pública de tu sistema:

Output
10/21/2021-18:35:54.950106 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 2600:9000:2000:4400:0018:30b3:e400:93a1:80 -> 2001:DB8::1:34628

Si tu solicitud utilizó IPv4, entonces tu registro debería tener un mensaje como este, donde 203.0.113.1 es la dirección IPv4 pública de tu sistema:

Output
10/21/2021-18:35:57.247239 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 204.246.178.81:80 -> 203.0.113.1:36364

Observa el valor resaltado 2100498 en la salida, que es el ID de firma (sid) que Suricata utiliza para identificar una regla.

Examinando /var/log/suricata/eve.log

Suricata también registra eventos en /var/log/suricata/eve.log (apodado el registro EVE) utilizando JSON para formatear las entradas.

La documentación de Suricata recomienda usar la utilidad jq para leer y filtrar las entradas en este archivo. Instala jq si no lo tienes en tu sistema usando el siguiente comando dnf:

  1. sudo dnf install jq

Una vez que tengas jq instalado, puedes filtrar los eventos en el registro EVE buscando la firma 2100498 con el siguiente comando:

  1. jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

El comando examina cada entrada JSON e imprime aquellas que tienen un objeto alert, con una clave signature_id que coincida con el valor 2100498 que estás buscando. La salida se parecerá a lo siguiente:

Output
{ "timestamp": "2021-10-21T19:42:47.368856+0000", "flow_id": 775889108832281, "in_iface": "eth0", "event_type": "alert", "src_ip": "203.0.113.1", "src_port": 80, "dest_ip": "147.182.148.159", "dest_port": 38920, "proto": "TCP", "community_id": "1:vuSfAFyy7oUq0LQC5+KNTBSuPxg=", "alert": { "action": "allowed", "gid": 1, "signature_id": 2100498, "rev": 7, "signature": "GPL ATTACK_RESPONSE id check returned root", "category": "Potentially Bad Traffic", . . . }

Observa la línea resaltada "signature_id": 2100498,, que es la clave que busca jq. También observa la línea resaltada "community_id": "1:vuSfAFyy7oUq0LQC5+KNTBSuPxg=", en la salida JSON. Esta clave es el Identificador de Flujo de Comunidad generado que habilitaste en el archivo de configuración de Suricata.

Cada alerta generará un Identificador de Flujo de Comunidad único. Otras herramientas de NMS también pueden generar el mismo identificador para permitir el cruce de referencias entre una alerta de Suricata y la salida de otras herramientas.

A matching log entry in either log file means that Suricata successfully inspected the network traffic, matched it against a detection rule, and generated an alert for subsequent analysis or logging. A future tutorial in this series will explore how to send Suricata alerts to a Security Information Event Management (SIEM) system for further processing.

Paso 7 — Manejo de Alertas de Suricata

Una vez que hayas configurado y probado las alertas, puedes elegir cómo quieres manejarlas. Para algunos casos de uso, registrar las alertas con fines de auditoría puede ser suficiente; o puedes preferir tomar un enfoque más activo para bloquear el tráfico de sistemas que generan alertas repetidas.

Si deseas bloquear el tráfico basado en las alertas que Suricata genera, un enfoque es utilizar entradas del registro EVE y luego agregar reglas de firewall para restringir el acceso a tu sistema o sistemas. Puedes usar la herramienta jq para extraer campos específicos de una alerta, y luego agregar reglas UFW o IPtables para bloquear solicitudes.

Nuevamente, este ejemplo es un escenario hipotético que utiliza datos de solicitud y respuesta deliberadamente elaborados. Tu conocimiento de los sistemas y protocolos a los que tu entorno debe poder acceder es esencial para determinar qué tráfico es legítimo y qué se puede bloquear.

Conclusión

En este tutorial, instalaste Suricata desde los repositorios de software de OISF. Al instalar Suricata de esta manera, te aseguras de poder recibir actualizaciones cada vez que se lance una nueva versión de Suricata. Después de instalar Suricata, editaste la configuración predeterminada para agregar un ID de flujo comunitario para usar con otras herramientas de seguridad. También habilitaste la recarga de reglas en vivo y descargaste un conjunto inicial de reglas.

Una vez que hayas validado la configuración de Suricata, inicia el proceso y genera un tráfico HTTP de prueba. Verifica que Suricata pueda detectar tráfico sospechoso examinando ambos registros predeterminados para asegurarte de que contengan una alerta correspondiente a la regla que estás probando.

Para obtener más información sobre Suricata, visita el sitio oficial de Suricata. Para más detalles sobre cualquiera de las opciones de configuración que hayas configurado en este tutorial, consulta la Guía del Usuario de Suricata.

Ahora que tienes Suricata instalado y configurado, puedes continuar con el siguiente tutorial de esta serie Comprendiendo las Firmas de Suricata donde explorarás cómo escribir tus propias reglas personalizadas de Suricata. Aprenderás sobre diferentes formas de crear alertas, o incluso cómo eliminar el tráfico por completo, basado en criterios como paquetes TCP/IP inválidos, el contenido de las consultas DNS, las solicitudes y respuestas HTTP, e incluso los apretones de manos TLS.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-suricata-on-centos-8-stream