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