HLab

Julien Hautefeuille

Suricata sur Ubuntu 16.04 LTS

Cette documentation est destinée à configurer Suricata en mode IDS (Intrusion Detection System).

Mise à jour du système Ubuntu serveur 16.04 LTS

sudo apt-get update
sudo apt-get upgrade

Installation des différentes dépendances Suricata

sudo apt-get install libpcre3-dbg libpcre3-dev autoconf automake libtool libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libmagic-dev libjansson-dev libjansson4 ethtool

Installation des dépendances si utilisation en mode IPS (Intrusion Prevention System)

sudo apt-get install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev

Compilation de Suricata

Récupération du paquet :

wget https://www.openinfosecfoundation.org/download/suricata-3.2.tar.gz
tar -xvf suricata-3.2.tar.gz
cd suricata-3.2/

Compilation :

sudo ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
sudo make
sudo make install

Installation de la configuration par défaut :

sudo make install-conf

Installation des règles :

sudo make install-rules

Visualisation des règles installées :

ls /etc/suricata/rules

Configuration de Suricata

Éditez le fichier sudo nano /etc/suricata/suricata.yaml et configurez vos interfaces et la redirection des logs (vers Graylog dans mon cas).

HOME_NET: "[10.8.0.0/24]"
    EXTERNAL_NET: "VOTRE IP PUBLIQUE"

    HTTP_SERVERS: "VOTRE IP PUBLIQUE"

outputs:
# a line based alerts log similar to Snort's fast.log
    - fast:
            enabled: yes
            filename: fast.log
            append: yes
    #filetype: regular # 'regular', 'unix_stream' or 'unix_dgram'

# Extensible Event Format (nicknamed EVE) event log in JSON format
- eve-log:
        enabled: yes
        filetype: syslog #regular|syslog|unix_dgram|unix_stream|redis
        filename: eve.json
        prefix: "@cee: " # prefix to prepend to each log entry
        # the following are valid when type: syslog above
        identity: "suricata"
        facility: local5
        level: Info ## possible levels: Emergency, Alert, Critical,
               ## Error, Warning, Notice, Info, Debug

Démarrage de Suricata

Désactivation de certaines fonctionnalités réseau d’accélération de réception :

sudo ethtool -K enp0s20f0 gro off lro off

Liste des modules disponibles :

sudo /usr/bin/suricata --list-runmodes

Démarrage de Suricata en mode capture live :

sudo /usr/bin/suricata -c /etc/suricata/suricata.yaml -i enp0s20f0 --init-errors-fatal

Mise en place du service Suricata pour systemd en créant /lib/systemd/system/suricata.service :

[Unit]
Description=Suricata Intrusion Detection Service
After=syslog.target network.target

[Service]
ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml -i enp0s20f0 --init-errors-fatal
ExecReload=/bin/kill -HUP $MAINPID
ExecStopPost=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

Puis on configure Suricata afin qu’il démarre au boot de la machine :

sudo systemctl enable suricata.service

Installation de Oinkmaster pour la récupération des règles

On installe le paquet :

sudo apt-get install oinkmaster

On édite le fichier /etc/oinkmaster.conf :

sudo nano /etc/oinkmaster.conf

Puis ajouter :

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

Mise à jour des règles :

cd /etc && sudo oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules

Dans le fichier /etc/suricata/suricata.yaml, on modifie :

classification-file: /etc/suricata/rules/classification.config
reference-config-file: /etc/suricata/rules/reference.config

On crée une tâche cron pour mettre à jour les règles automatiquement chaque jour :

@daily /usr/sbin/oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules