Cómo instalar Suricata en Ubuntu para proteger tu red

El sistema de detección de intrusos (IDS) y el sistema de prevención de intrusos (IPS) ayudan a impedir que los ciberdelincuentes se infiltren en tu servidor. Estas herramientas de seguridad de red interrumpen automáticamente el tráfico y activan alertas al detectar una actividad maliciosa.

En un servidor privado virtual (VPS) Ubuntu, Suricata es una popular solución IDS e IPS. Además de ser de código abierto, esta monitorización del tráfico de red está disponible para varios sistemas operativos, incluidos Windows y Linux.

En este artículo, te explicaremos cómo instalar Suricata en servidores Ubuntu para ayudar a mejorar la seguridad de tu red. También aprenderás a modificar la configuración predeterminada y a establecer nuevas reglas de detección para adaptarlas a tus prácticas de seguridad en VPS.

Requisitos previos

Aunque Suricata no menciona sus requisitos mínimos de hardware, recomendamos un mínimo de 2 núcleos de CPU y 4 GB de RAM para garantizar un rendimiento óptimo.

Si no tienes un plan de hosting VPS, te recomendamos que empieces con el plan KVM 2 de Hostinger y lo actualices cuando lo necesites.

Este plan es ideal, ya que sus 2 núcleos vCPU y 8 GB de RAM proporcionan suficiente margen para alojar otras aplicaciones, sin dejar de ser asequible, al costar AR$ 10129.00 al mes.

En cuanto al sistema operativo, asegúrate de que tu VPS es compatible con Ubuntu 22.04 o posterior. Las versiones anteriores pueden ser incompatibles con la última versión de Suricata.

Los usuarios de Hostinger pueden utilizar el instalador de un clic de hPanel para cambiar a otros sistemas operativos. Para ello, navega a la barra lateral de tu Vista general Sistema operativo y panelSistema Operativo. Selecciona la última versión de Ubuntu y haz clic en Cambiar SO.

Cambiar sistema operativo en hPanel

La instalación de Suricata también requiere privilegios de root o superusuario para ejecutar comandos de Linux. Para evitar problemas de permisos y garantizar un proceso de instalación de línea de comandos sin problemas, elige un proveedor de alojamiento VPS con acceso total al servidor, como Hostinger.

Además de una amplia compatibilidad, los mejores proveedores de alojamiento VPS deben ofrecer un tiempo de actividad fiable y diversas funciones. Por ejemplo, Hostinger ofrece a Kodee, el asistente con IA, que te permite simplificar las tareas introduciendo distintas indicaciones para la gestión del VPS.

También proporcionamos un terminal de navegador que te permite conectarte a tu sistema Ubuntu sin utilizar un cliente SSH como PuTTY. Para acceder a tu VPS de forma remota, utiliza las credenciales de acceso de la pestaña Acceso SSH del menú Vista general.

¡Importante! Por defecto, iniciarás sesión como usuario root. Te recomendamos que cambies a otra cuenta con privilegios de superusuario para evitar ejecutar accidentalmente comandos destructivos.

Todos nuestros planes de alojamiento VPS ofrecen garantía de tiempo de actividad del 99.9% y una garantía de devolución del dinero de 30 días.

Cómo instalar Suricata en Ubuntu

En esta sección, explicaremos los pasos para instalar Suricata en un VPS que ejecute Ubuntu 22.04. Si quieres instalarlo en un host gateway para escanear el tráfico de red entrante y saliente, puede que necesites pasos adicionales, como modificar las reglas del cortafuegos.

1. Actualiza los paquetes de Ubuntu

Antes de instalar Suricata, actualiza APT para asegurarte de que recibes la última versión local. Este paso también aplica los parches más recientes a otros paquetes del sistema para ayudar a mejorar la seguridad y evitar problemas de incompatibilidad.

Para listar las actualizaciones de paquetes del sistema disponibles en tu repositorio APT, ejecuta el siguiente comando:

sudo apt update

Instala actualizaciones para todos los paquetes del sistema utilizando este comando:

sudo apt upgrade

El proceso puede tardar minutos u horas, dependiendo del tamaño total de la actualización y de tu velocidad de Internet.

2. Instala Suricata

Existen varios métodos para instalar Suricata en Ubuntu. En esta sección, explicaremos las tres formas más comunes, empezando por la más sencilla.

Instalar Suricata con APT

Utiliza este comando para instalar Suricata en Ubuntu utilizando el repositorio local de APT:

sudo apt install -y suricata

Para comprobar si Suricata está instalado correctamente, comprueba su número de versión utilizando este comando:

suricata -V
Verificación de versión de Suricata

¡Importante! Asegúrate de escribir correctamente las mayúsculas al introducir los comandos, ya que distinguen entre mayúsculas y minúsculas.

Alternativamente, haz una lista de los paquetes instalados en Ubuntu utilizando el comando apt list y filtra Suricata utilizando grep como se indica a continuación:

sudo apt list --installed | grep suricata

Ten en cuenta que este método puede instalar una versión anterior, ya que estás utilizando el repositorio local del gestor de paquetes APT.

Instalar Suricata a través de paquetes binarios

Para instalar la última versión estable, importa el repositorio de la Open Information Security Foundation (OISF) desde el servidor Suricata. Para ello, ejecuta estos comandos:

sudo apt install software-properties-common
sudo add-apt-repository ppa:oisf/suricata-stable

Pulsa Intro si el terminal te pide confirmación. Después de importar el repositorio, actualiza APT y desempaqueta el software con este comando:

sudo apt install suricata

Si utilizas otros derivados de Debian, utiliza el repositorio de retroinstalaciones para obtener la última versión estable.

Instalar Suricata utilizando archivos de distribución de origen

Configurar Suricata a partir de los archivos fuente de distribución te permite configurar los ajustes de instalación. Sin embargo, tendrás que instalar varias dependencias y diversas cabeceras de desarrollo.

Tras instalar las dependencias de Suricata, ejecuta a continuación los siguientes comandos:

tar xzvf suricata-6.0.0.tar.gz
cd suricata-6.0.0
./configure
make
make install

3. Configura Suricata

El paquete Suricata incluye un archivo de configuración YAML para ajustar la configuración y el comportamiento de la herramienta. Puedes editarlo con un editor de texto como nano:

sudo nano /etc/suricata/suricata.yaml

El archivo suricata.yaml tiene varios parámetros que puedes ajustar. Éstos son los más comunes:

  • Configuración de la interfaz: Determina el método y la interfaz de red para capturar el paquete. Algunas de las configuraciones son af;-packets, af-xdp y pcap.
  • Registro: modifica dónde registra Suricata la detección de red, su formato y el nivel de alerta. Puedes cambiar la configuración mediante el parámetro outputs.
  • Archivo PID: establece el archivo de identificación del proceso (PID) para ejecutar Suricata como daemon o servicio. Determina su nombre y directorio en el parámetro pid-files.
  • Reglas de detección: define los archivos que contienen las reglas de filtrado de paquetes y sus ubicaciones. Los parámetros son default-rule-path y rule-files, respectivamente.
  • Tamaño de los paquetes: cambia el tamaño máximo de paquete que procesará Suricata y transmitirá tu red. Especifica el valor en bytes en los parámetros max-pending-packet y default-packet-size.
  • ID de flujo comunitario: identifica el flujo de red Suricata para permitir la integración con otra herramienta como Zeek. El parámetro community-id está establecido en false por defecto.

Edita las configuraciones y pulsa Ctrl + X, Y e Intro para guardar los cambios. Para buscar rápidamente un parámetro concreto, utiliza el atajo de teclado Ctrl + W para activar la función de búsqueda.

Además de leer las instrucciones proporcionadas, consulta la documentación del archivo de configuración de Suricata para saber más sobre los ajustes. En el caso de parámetros comentados como community-id, elimina el símbolo de almohadilla (#) al principio para activarlos.

4. Habilita interfaces de red

Para procesar el tráfico de red y evitar que los paquetes maliciosos dañen tu sistema, Suricata debe supervisar una interfaz.

Por defecto, Suricata no rastrea ninguna conectividad desde y hacia tu servidor. Los usuarios deben especificar qué interfaz de red supervisar y determinar el método de captura de paquetes mediante el archivo YAML.

Por ejemplo, queremos utilizar el método de captura de paquetes af y supervisar la interfaz de red venet0. Éste es el aspecto de la configuración:

af-packet:
   - interface: venet0

Introduce este comando para mostrar la interfaz por defecto y otra información de enrutamiento:

ip -p -j route show

Establece el método de captura de paquetes en función de tus necesidades. Por ejemplo, af-packet es adecuado para el seguimiento en directo de la red, mientras que pcap es ideal para el análisis fuera de línea.

Para supervisar varias interfaces de red, añade estas nuevas líneas en la parte inferior de la sección del método de captura. Asegúrate de que cluster-ID es único:

-  interface: interface name
   cluster-id: 29

5. Inicia Suricata

Habilita el servicio Suricata mediante el comando systemctl para ejecutarlo en segundo plano:

sudo systemctl start suricata

Para comprobar si funciona correctamente, ejecuta lo siguiente:

sudo systemctl status suricata

Si el servicio Suricata se está ejecutando, terminal debería mostrar los estados cargado y activo como los siguientes.

Terminal mostrando los estados de Suricata

Recuerda, reinicia siempre el servicio Suricata después de modificar el archivo de configuración para asegurarte de que los nuevos ajustes se aplican correctamente. Este es el comando:

sudo systemctl restart suricata

Alternativamente, detén Suricata y vuelve a ejecutarlo utilizando el comando systemctl start. Para terminar el daemon, introduce lo siguiente:

sudo systemctl stop suricata

6. Automatiza el inicio de Suricata

Automatizar el inicio de Suricata ayuda a mantener una seguridad óptima del VPS, ya que no necesitas reactivarlo manualmente tras reiniciar el sistema. Esto ayuda a mejorar la eficiencia de la gestión del servidor.

Para ello, crea un nuevo archivo de unidad de servicio systemd para desplegar Suricata automáticamente cuando se inicie el servidor mediante el siguiente comando:

sudo nano /etc/systemd/system/suricata.service

Dentro del archivo de la unidad de servicio, introduce las siguientes líneas:

# Define the Suricata systemd unit
[Unit]
Description=Suricata IDS/IPS
After=network.target

# Specify the Suricata binary path, the configuration files location, and the network interface
[Service]
ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml -i venet0
[Install]

WantedBy=default.target

Pulsa Ctrl + X, Y y Enter para guardar los cambios. Ejecuta el siguiente comando para que Suricata se cargue automáticamente al arrancar el sistema:

sudo systemctl enable suricata

A continuación, ejecuta el comando systemctl start para iniciar Suricata. Comprueba el estado para asegurarte de que el servicio se está ejecutando.

Si terminal devuelve el error “No coinciden los archivos de reglas“, es posible que Suricata no pueda cargar las reglas de monitorización de red. Para solucionarlo, ejecuta suricata-update para actualizar la ruta del directorio.

A continuación, abre el archivo suricata.yaml y modifica las reglas de configuración, como se indica a continuación:

default-rule-path: /var/lib/suricata/rules
rule-files:
   - suricata.rules

Guarda el archivo y reinicia el servicio para aplicar los cambios.

7. Prueba la funcionalidad de Suricata

Después de iniciar Suricata, valida su archivo de configuración para asegurarte de que la herramienta funciona. La forma más sencilla de hacerlo es utilizando el comando de prueba incorporado:

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

La opción -T te permite ejecutar el modo de prueba Suricata y -c te permite encontrar el archivo de configuración en la ruta especificada. Además, la opción -v activa el modo verbose, que proporciona detalles sobre la ejecución del comando, incluidos los errores.

Si tienes numerosas reglas e hilos de CPU limitados, el proceso se ejecutará durante más tiempo, pero no debería superar unos minutos. El terminal imprimirá los registros de la prueba como los siguientes.

Terminal imprimiendo registros de prueba

Durante este paso, busca el mensaje de advertencia que indica una configuración incorrecta en tu archivo YAML. Para simplificar la resolución de problemas, te recomendamos que le preguntes a Kodee para encontrar soluciones.

A continuación, comprueba las reglas de Suricata para asegurarte de que detectan correctamente el tráfico malicioso. La guía de inicio rápido de Suricata recomienda utilizar la regla ET Open número 2100498 y conectarse a una URL de prueba mediante el comando curl:

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

El comando enviará una petición HTTP para activar la regla de alerta. A continuación, Suricata generará eventos de registro en el archivo eve.json y fast.log sobre el tráfico detectado.

Comprueba si Suricata etiqueta la petición HTTP como tráfico potencialmente malicioso en el archivo fast.log. Para ello, ejecuta la utilidad grep para filtrar el número de ID de la regla:

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

La salida debería mostrar un registro etiquetando el paquete como “Tráfico potencialmente malo“.

Como el registro eve formatea sus entradas como JSON, analizarlo requiere la utilidad jq. Omite este paso si tienes instalada la utilidad. En caso contrario, ejecuta lo siguiente:

sudo apt install jq

A continuación, introduce el siguiente comando para filtrar las entradas del archivo de registro en función del ID de firma y del tipo de alerta:

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

Deberías ver el ID de la regla y la misma categoría “Tráfico potencialmente malo“. Significa que Suricata ha emparejado el tráfico de tu red con la regla de detección correcta.

Estos registros son útiles para la gestión de alertas y la supervisión de la seguridad de la red. Por ejemplo, puedes bloquear fuentes de tráfico sospechosas en el Cortafuegos sin complicaciones (UFW) de Ubuntu o en iptables.

8. Actualiza las normas de Suricata

Suricata detecta los paquetes sospechosos mediante firmas o reglas definidas por el usuario. Incluye algunas por defecto, pero pueden ser insuficientes si tu servidor recibe tráfico de muchas fuentes.

Para añadir nuevas reglas, obtén conjuntos de reglas adicionales de varios proveedores externos. Aunque algunos de ellos son gratuitos, otros pueden cobrar una cuota de suscripción. Para listarlos, ejecuta el siguiente comando:

sudo suricata-update list-sources
Nuevas reglas en Suricata

Verás los proveedores, resúmenes, licencias e información de suscripción de los proveedores. Para importar un conjunto de reglas, ejecuta el siguiente comando:

sudo suricata-update enable-source nombre-del-proveedor

Sustituye el marcador de posición nombre-del-proveedor por la fuente del conjunto de reglas que desees. Por ejemplo, ejecuta esto para recuperar sslbl/ja3-fingerprints:

sudo suricata-update enable-source sslbl/ja3-fingerprints

A continuación, vuelve a ejecutar el comando suricata-update para actualizar y validar los archivos de reglas del directorio /etc/suricata/rules. Si no añades una fuente externa, la actualización de Suricata recuperará las reglas por defecto de ET OPEN.

Después de actualizar la fuente ET OPEN por defecto, verás que Suricata ha procesado la inspección de la firma de la carga útil del paquete y las reglas ip-only.

El mensaje de actualización debería terminar con la herramienta limpiando la estructura de agrupación de firmas. Si estás actualizado, terminal imprimirá “No se han detectado cambios, saliendo“.

Mensaje de actualización en Suricata

Te recomendamos que ejecutes la herramienta de actualización Suricata con regularidad para asegurarte de que tu sistema recibe la regla más reciente. Aplicar el método de detección más reciente ayuda a mantener una seguridad óptima del servidor Ubuntu.

Opcionalmente, utiliza herramientas de gestión de reglas Suricata como Pulledpork y Oinkmaster para afinar el método de detección. Utiliza nano para modificar el archivo:

sudo nano /etc/suricata/rules/rule_name.rules

La sintaxis de la regla Suricata es la siguiente:

action protocol source-ip/port -> destination-ip/port (options; options; ... )

Aquí lo que significa cada parámetro y sus valores aceptados:

  • action: la acción a realizar cuando se cumpla la condición de la regla. Entre los valores posibles se incluyen drop, alert y log
  • Protocol: el protocolo de red supervisado, incluyendo TCP, UDP, ICMP o IP.
  • source-ip/port: la IP y el puerto desde los que se origina el tráfico.
  • destination-ip/port: la IP y el puerto en los que se aplica la regla.
  • (options; options; …): palabras clave que determinan ajustes o condiciones adicionales.

Para saber más sobre estos parámetros y las posibles opciones, consulta la documentación sobre las reglas de Suricata

Conclusión

Suricata es un sistema IDS e IPS de código abierto que ayuda a evitar que el tráfico malicioso se infiltre en tu servidor para mejorar la seguridad de tu sistema. Funciona detectando y descartando el tráfico sospechoso basándose en una regla.

En este artículo, hemos explicado la configuración de Suricata en Ubuntu 22.04 o posterior. Tras instalar la distribución y obtener acceso root a tu servidor mediante SSH, sigue estos pasos:

  • Actualiza los paquetes de Ubuntu: ejecuta el comando apt update y apt upgrade para instalar la última versión de todos los paquetes.
  • Instala Suricata: a través de APT o del repositorio OISF si quieres la versión más reciente de Suricata.
  • Configura Suricata: utiliza un editor de texto como nano para editar el archivo suricata.yaml y modificar la configuración por defecto.
  • Habilita interfaces de red: cambia el método de captura de paquetes y el parámetro de interfaz de red para que Suricata pueda monitorizar el tráfico de tu servidor.
  • Inicia Suricata: ejecuta el comando systemctl para iniciar Suricata como demonio.
  • Automatiza el inicio de Suricata: crea un archivo de unidad de servicio Suricata systemd y utiliza systemctl para activar la herramienta durante el arranque del sistema.
  • Prueba la funcionalidad de Suricata: valida el archivo de configuración de Suricata utilizando la función de prueba incorporada y comprueba las reglas enviando una solicitud HTTP simulada.
  • Actualiza las reglas de Suricata: ejecuta suricata-update con la bandera enable-source para recuperar un conjunto de reglas de una fuente externa. Actualiza Suricata para aplicar y validar las nuevas reglas.

Esperamos que esta guía te haya sido de utilidad. Si tienes algún comentario o pregunta, escríbela en la sección de abajo. ¡Buena suerte! 

Author
El autor

Diego Vargas

Diego es comunicador social, especialista en publicidad digital que trabaja constantemente en mejorar sus conocimientos de marketing digital, enfocándose en contenido y SEO. Idiomas, series, libros y cursos en internet son sus hobbies principales, además de los deportes. Este es su perfil de LinkedIn.