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:
- Un servidor Centos 8 Stream con 2 o más CPUs, un usuario no root con privilegios de sudo y un firewall habilitado. Para configurar esto, puedes seguir nuestro tutorial Configuración Inicial del Servidor con CentOS Linux 8.
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:
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:
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:
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
:
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:
Deberías recibir una salida como la siguiente que indica que el servicio está habilitado:
OutputCreated 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
:
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:
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:
. . .
# 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:
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:
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:
# 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:
# 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:
. . .
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:
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:
Deberías recibir una salida como la siguiente:
Output19/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:
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:
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:
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:
Output21/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:
Output21/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
:
Puede examinar el estado del servicio usando el comando systemctl status
:
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:
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:
Output19/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:
El comando curl
devolverá una respuesta como la siguiente:
Outputuid=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:
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:
Output10/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:
Output10/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
:
Una vez que tengas jq
instalado, puedes filtrar los eventos en el registro EVE buscando la firma 2100498
con el siguiente comando:
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