Instalando Suricata

En este post veremos los pasos que debemos seguir para dejar instalado Suricata en una Debian 10.6. Suricata es un motor de red de alto rendimiento, como IDS (Intrusion Detection System), IPS (Intrusion Prevention System) y usado como sistema de monitorización de red, y por supuesto, ¡Open Source!

Gracias a Suricata podremos conocer qué pasa en nuestra red en tiempo real, podremos aprender qué está pasando, qué máquinas comunican con cuales… entre otros, podremos hacer reglas para notificar del tráfico que nos interese, una pasada. En otro documento veremos cómo exportar los datos recolectados por Suricata a Elasticsearch, y así, con Kibana o Grafana poder visualizar dicho tráfico.

Instalamos Suricata en Debian Buster ejecutando:

echo "deb http://http.debian.net/debian buster-backports main" > /etc/apt/sources.list.d/backports.list
apt-get update
apt-get install suricata -t buster-backports
apt-get install suricata-oinkmaster

 

En el fichero de configuración de Suricata (/etc/suricata/suricata.yaml) al menos debemos escribir correctamente el nombre de la interfaz de red que escuchará el tráfico, podremos definir cuáles son los rangos IP locales y habilitaremos si queremos la salida en vista simple de una línea (como en Snort):

af-packet:
  - interface: ens192

HOME_NET: "[192.168.1.0/24,192.168.0.0/24,192.168.33.0/24]"

outputs:
  - fast:
      enabled: yes
      filename: fast.log
      append: yes

 

Previamente hemos instalado Oinkmaster, lo utilizaremos para gestionar y mantener actualizadas las reglas. En su fichero de configuración (/etc/oinkmaster.conf) añadimos la siguiente URL:

url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz

 

Recargamos y actualizamos las reglas:

systemctl restart suricata
systemctl status suricata
suricata-oinkmaster-updater

 

Como comentábamos, podremos crear ficheros con reglas (/etc/suricata/rules/misreglas.rules), por ejemplo esta primera, que si detecta que hay tráfico ICMP (de cualquier origen a cualquier destino) que nos genere un registro en el fichero de log. Así que si detecta que alguien hace un PING nos lo indicará, añadimos:

alert icmp any any -> any any (msg: "ICMP detectado";)

 

Recordar que debemos indicar en el fichero de configuración de Suricata (/etc/suricata/suricata.yaml) el nombre del fichero con las reglas que acabamos de definir:

rule-files:
  ...
  - misreglas.rules

 

Reiniciamos Suricata para que lea los últimos cambios realizados:

systemctl restart suricata
systemctl status suricata

 

Y podremos hacer un PING a cualquier IP desde cualquier equipo y debería quedar registrado en los outputs que hayamos indicado:

ping 8.8.8.8
tail -f /var/log/suricata/eve.json
tail -f /var/log/suricata/fast.log

 

Por ahora muy chulo para poder ir conociendo posibilidades, podremos ir registrando todo lo que ve nuestro Suricata. Recuerda que si lo has desplegado como máquina virtual, has de habilitar el modo promiscuo, o si tu switch puede, que le redirija todo el tráfico a su puerto. Os dejo unos ejemplos de otras reglas iniciales para darle algo de juego:

alert tcp any any -> any any (content:"gmail"; msg: "detectamos gmail"; sid:1000002;)
alert icmp any any -> any any (msg: "ICMP detectado";)
alert icmp $HOME_NET any -> $EXTERNAL_NET any (msg: "ICMP de salida detectado"; sid:1; rev:1; classtype:icmp-custom-event;)
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg: "ICMP de entrada detectado"; sid:2; rev:1; classtype:icmp-custom-event;)
alert icmp $HOME_NET any -> $HOME_NET any (msg: "ICMP en la red local detectado"; sid:3; rev:1; classtype:icmp-custom-event;)
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "Conexión de Internet a LAN"; sid:5; rev:1;)
alert tcp 192.168.1.254 any -> 192.168.1.XXX any (msg: "Conexión de Internet a Jitsi"; sid:6; rev:1;)
alert tcp 192.168.1.254 any -> 192.168.1.XXX any (msg: "Conexión de Internet a Grafana"; sid:7; rev:1;)
alert tcp 192.168.1.254 any -> 192.168.1.XXX any (msg: "Conexión de Internet a NextCloud"; sid:8; rev:1;)
alert tcp 192.168.1.254 any -> 192.168.1.XXX any (msg: "Conexión de Internet a OTRS"; sid:9; rev:1;)
alert tcp any any -> 192.168.1.XXX any (msg: "Conexión de Internet a Citrix"; sid:10; rev:1;)

Y lo dicho, este es un primer documento donde vemos cómo instalar y montar Suricata, cómo dejarlo plenamente funcional que seguiremos desarrollando con futuros documentos, al menos con la intención de almacenarlo como dijimos en Elasticsearch y visualizarlo con Grafana o Kibana, al gusto.