GNU/Linux >> Tutoriales Linux >  >> Linux

Configuración de Suricata como un sistema de prevención de intrusiones (IPS)

Con la creciente popularidad del delito cibernético, existe una necesidad urgente de que las empresas tengan una mejor protección contra los piratas informáticos. Un Sistema de prevención de intrusiones (IPS) es una de las mejores formas de defenderse de los ataques informáticos. Pero antes de buscar en Internet un IPS, pruebe Suricata.

En este tutorial, aprenderá cómo configurar un Suricata IPS completamente funcional en un servidor Linux para proteger su red contra las amenazas en línea.

¿Listo? ¡Siga leyendo y comience a proteger su red!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente:

  • Un servidor Linux:esta demostración usa Ubuntu 20.04 LTS, pero cualquier distribución de Linux funcionará.
  • Un usuario no root con privilegios sudo.
  • Dependiendo de la configuración de su red y de cómo pretenda usar Suricata, es posible que necesite más o menos CPU y RAM para su servidor. En general, cuanto más tráfico planee inspeccionar, más recursos asignará a Suricata. En un entorno de desarrollador, planee usar al menos 2 CPU y 8 GB de RAM para comenzar, de modo que Suricata pueda realizar sus tareas sin comprometer la calidad del servicio para todos los usuarios.

Instalar Suricata y agregar Repositorio PPA

Suricata no viene instalado de forma predeterminada en Ubuntu, pero instalar Suricata es similar a cómo instala otros paquetes en su sistema.

1. Ejecute el apt update comando para actualizar los paquetes disponibles en su sistema.

sudo apt update -y

2. A continuación, ejecute el add-apt-repository Comando para agregar el repositorio PPA mantenido por Open Information Security Foundation (OISF). Al agregar el repositorio PPA, obtendrá la versión más reciente y estable de Suricata (ppa:oisf/suricata-stable ).

sudo add-apt-repository ppa:oisf/suricata-stable

3. Vuelva a ejecutar el sudo apt update Comando para cargar el repositorio de Suricata recién agregado al índice de paquetes de su sistema.

sudo apt update -y

4. Ahora, ejecuta el sudo apt policy comando para verificar que ha agregado el PPA de Suricata correctamente. Asegúrese de ver Suricata PPA en la lista como se muestra a continuación antes de instalar Suricata

sudo apt policy

5. Ejecute el siguiente comando para install suricata en su sistema.

sudo apt install suricata -y

6. Una vez que se complete la instalación, ejecute el systemctl status comando a continuación para verificar el suricata servicio status .

sudo systemctl status suricata

A continuación, puede ver que el servicio de Suricata está activo (en ejecución).

Configuración de Suricata

El paquete Suricata se envía con un archivo de configuración llamado suricata.yaml ubicado en /etc/suricata directorio. Este archivo de configuración tiene muchas configuraciones diferentes para muchos otros casos de uso. Pero tenga en cuenta que hay algunas configuraciones en el archivo de configuración predeterminado que debe modificar antes de usar Suricata.

El modo predeterminado para Suricata es el modo de detección de intrusos (IDS), que registra, pero no elimina el tráfico. Este modo se utiliza al configurar y familiarizarse con Suricata. Una vez que se sienta más cómodo con Suricata y comprenda mejor los tipos de tráfico sobre los que Suricata le alertará, puede optar por activar el modo IPS.

Suricata agrega un campo en su formato JSON (ID de flujo comunitario). El ID de flujo de la comunidad es un campo de 8 bytes que le permite correlacionar registros generados por otras herramientas. Esta característica es útil cuando se usa Suricata junto con otras herramientas como Bro o Elasticsearch.

1. Abra el /etc/suricata/suricata.yaml archivo en su editor de texto favorito.

2. Busque una línea que diga community-id:false y cámbielo a community-id:true . Guarde los cambios y salga del editor de texto.

Cada vez que examine eventos, verá el ID de flujo de la comunidad en su salida JSON.

Luego, ejecute el siguiente comando para encontrar un dispositivo con una ruta predeterminada en su sistema (route show default ). El -p bandera le dice al ip comando para imprimir el dispositivo de una manera legible por humanos, mientras que el -j flag imprime la salida JSON.

Suricata está configurado para detectar paquetes desde cualquier interfaz de red disponible de forma predeterminada. Pero puede cambiar este comportamiento y especificar una interfaz para que Suricata escuche cuando se inicia.

 ip -p -j route show default

Como puede ver a continuación, el dev El parámetro especifica la interfaz que Suricata utilizará para rastrear paquetes. En esta demostración, la interfaz es eth0 , pero su interfaz puede ser diferente, como tun0, wlan0, etc.

4. Finalmente, abra el /etc/suricata/suricata.yaml archivo de configuración, busque la interfaz parámetro bajo el af-packet sección y modifíquela en consecuencia. En esta demostración, eth0 se utiliza como interfaz para rastrear paquetes.

Guarde los cambios, pero mantenga su editor de texto abierto por ahora.

Configuración de la función de recarga de reglas en vivo

Ya configuró Suricata, pero eso es solo el comienzo de la protección de su red. Por lo general, le gustaría agregar reglas en el acto y recargar automáticamente las reglas. ¿Cómo? La función de recarga de reglas en vivo de Suricata le permite actualizar las reglas sobre la marcha. Como resultado, no es necesario que reinicie Suricata manualmente para que las nuevas reglas surtan efecto.

Abra el /etc/suricata/suricata.yaml archivo, copie/pegue las siguientes directivas al final del contenido del archivo y guarde los cambios. Estas directivas le permiten habilitar la función de recarga de reglas en vivo.

Con esta configuración en su lugar, cuando edite/actualice sus conjuntos de reglas, los cambios surtirán efecto sin reiniciar su servicio de Suricata.

detect-engine:
  - rule-reload: true

Ahora ejecuta el kill comando a continuación para notificar su proceso de Suricata ($(pidof suricata) ) para actualizar las reglas sin reiniciar.

El comando envía una señal definida por el usuario (-usr2 ) al ID de proceso especificado, luego Suricata realiza lo siguiente automáticamente:

  • Cargar nueva configuración para actualizar las variables y valores de las reglas.
  • Cargar reglas nuevas
  • Construir un nuevo motor de detección
  • Intercambiar motores de detección antiguos y nuevos
  • Asegúrese de que todos los hilos estén actualizados
  • Libere el antiguo motor de detección
sudo kill -usr2 $(pidof suricata)

Actualización de los conjuntos de reglas de Suricata

La función de recarga de reglas en vivo está lista, pero no servirá de nada a menos que actualice sus conjuntos de reglas. De forma predeterminada, el paquete Suricata tiene un conjunto de reglas limitado que solo detecta los protocolos de Internet más comunes ubicados en /etc/suricata/rules directorio.

En este punto, obtendrá un Ningún archivo de reglas coincide con el patrón mensaje de error, como el siguiente, cada vez que intenta iniciar y utilizar su servicio de Suricata. Este mensaje de error indica que no hay conjuntos de reglas para que los use Suricata.

Para corregir este error, proporcione archivos de conjunto de reglas a su instancia de Suricata. Afortunadamente, Suricata tiene una herramienta llamada suricata-update eso lo ayudará a obtener más conjuntos de reglas de proveedores externos.

1. Ejecute el siguiente comando para obtener una actualización para su instancia de Suricata.

sudo suricata-update

Como puede ver a continuación, el resultado indica que suricata-update El comando obtuvo las reglas conectándose a https://rules.emergingthreats.net/open/. Luego, el comando guarda las nuevas reglas en el directorio /var/lib/suricata/rules/ .

La salida también imprime lo siguiente:

  • El número total (31737 ) de conjuntos de reglas
  • El número de reglas que están habilitadas (24355 )
  • El número de cuántos se suman (31737 )/eliminado(0 ).

A continuación, ejecute el siguiente comando para enumerar todos los proveedores de conjuntos de reglas (list-sources ).

El suricata-update El comando obtiene conjuntos de reglas de muchos proveedores, incluidos proveedores gratuitos y comerciales.

sudo suricata-update list-sources

A continuación, puedes ver una pequeña parte de la lista. Tenga en cuenta el nombre del conjunto de reglas del que desea que Suricata obtenga específicamente los conjuntos de reglas. Este tutorial obtiene et/open conjuntos de reglas para la demostración (paso tres).

3. Ejecute el siguiente comando para obtener e incluir (enable-source ) el et/open conjuntos de reglas a sus reglas de Suricata.

sudo suricata-update enable-source et/open

Finalmente, vuelva a ejecutar el suricata-update comando para cargar el conjunto de reglas recién seleccionado.

sudo suricata-update

Validación de la configuración de Suricata

Configuró Suricata e incluso agregó conjuntos de reglas, por lo que es hora de validar sus cambios y asegurarse de que todo funcione como se esperaba. El paquete de Suricata tiene un servicio de validación incorporado que le permite ver cualquier desviación de la configuración actual.

Ejecute el suricata comando a continuación para validar los cambios en el archivo de configuración de Suricata (-c /etc/suricata/suricata.yaml ). El comando también muestra todos los mensajes de validación (-v ).

El -T La bandera le dice a Suricata que se ejecute en "modo de prueba" y en modo "de arriba hacia abajo". Ambos modos tienen reglas más estrictas para la coincidencia de paquetes y es menos probable que produzcan un falso positivo.

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

Dado que Suricata es un cortafuegos altamente configurable, la prueba puede tardar varios minutos en completarse. Si no hay errores, verá un resultado similar al siguiente que muestra un completo mensaje.

Si su archivo de configuración tiene errores similares al siguiente, Suricata imprimirá cada error, indicando las líneas específicas que causan problemas. Si obtiene estos errores, corrija cada problema de configuración uno por uno hasta que la validación sea exitosa.

Probando las Reglas de Suricata

Ahora que sus archivos de configuración de Suricata están validados, puede ejecutar Suricata para ver si funcionan correctamente. Usarás Suricata para probar el ET Open (2100498) con el curl comando para detectar actividad/tráfico sospechoso.

En este momento, su instancia de Suricata tiene más de 30 000 reglas que Suricata obtuvo de varios conjuntos de reglas. Por lo tanto, una prueba completa de todas las reglas con su explicación no cabrá en este tutorial.

1. Ejecute el curl Comando a continuación para generar tráfico/solicitudes HTTP/actividades desde el sitio web de TestMyNIDS. TestMyNIDS es un proyecto de aprendizaje electrónico dedicado a respaldar las pruebas, la validación y la comparación de NIDS. El sitio web proporciona una plataforma única para el análisis comparativo de NIDS y herramientas relacionadas.

Puede usar este sitio web para probar cualquier actividad/tráfico sospechoso para ver si su conjunto de reglas configurado funciona como se esperaba.

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

Los datos de respuesta están diseñados para activar una alerta falsa que finge ser un raíz de Linux/Unix. usuario. Y esta raíz el usuario está en un sistema que podría estar comprometido.

A continuación, ejecute el grep comando a continuación para examinar el fast.log archivo en el /var/log/suricata/ directorio para un mensaje de alerta coincidente 2100498 . Este comando verifica el archivo de registro en busca de alertas de usuario.

Además del archivo fast.log, otro archivo de registro a tener en cuenta es eve.log en el mismo directorio.

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

Verá un resultado similar al siguiente que muestra la dirección IPv4 pública de su sistema.

3. Ahora, ejecuta el jq Comando a continuación para examinar el eve.log expediente. El eve.log El archivo también se usa para registrar eventos pero en formato JSON (/var/log/suricata/eve.json ). Es el eve.json y rápido.log archivos a los que hará referencia en busca de tráfico sospechoso e intentos bloqueados. Una vez encontrado, tome las medidas necesarias.

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

A continuación, puede ver “signature_id”:2100498 en el resultado, que es el ID de firma de alerta que especificó en el comando.

También puede ver el “community_id”:“1:ETRbv54GHTVCayHTUR5OIovK4gh2=” en el resultado, que es el ID de Community Flow que configuró en /etc/suricata/suricata.yaml expediente.

Este community_id es útil cuando usa Suricata junto con otras herramientas como Elasticsearch para obtener una "pila de monitoreo de seguridad" completa a un costo razonablemente bajo.

Conclusión

A lo largo de este tutorial, aprendió cómo instalar y configurar Suricata con conjuntos de reglas para proteger su red. También ha probado si los conjuntos de reglas funcionan generando tráfico en su red.

En este punto, Suricata funciona perfectamente con su conjunto de reglas personalizado para detectar actividades/tráfico sospechoso en su red.

Ahora, ¿por qué no aprovechar este nuevo conocimiento? ¿Quizás comenzar con la instalación y configuración de Suricata, Zeek, la pila de Elasticsearch para configurar una "pila de monitoreo de seguridad" completa?


Linux
  1. Instalación y configuración de php 7x en Centos 8

  2. Cómo instalar denyhosts en Ubuntu Linux 17.04 (herramienta de seguridad de prevención de intrusiones para SSH y más)

  3. ¿El subwoofer del sistema de sonido envolvente 5.1 no funciona?

  4. Otorgar acceso a sudo en Debian y el sistema operativo Ubuntu

  5. Configuración de sudo para habilitar comandos para usuarios no root en Linux

Cómo instalar el escritorio Xfce en AlmaLinux 8

Cómo instalar Suricata en CentOS 8

Cómo instalar Suricata en Ubuntu 20.04 LTS

Tutorial de Tripwire:Sistema de detección de intrusos basado en host Linux

Cómo agregar o crear un usuario sudo en el sistema Linux [inicio rápido]

¿El único usuario de un sistema *nix debe tener dos cuentas?