Mise à jour juillet 2016 pour la version 3 (3.0.1 pour être précis).
Il faut maintenant installer des choses sérieuses : "make", "wget" et "git" si ce n'est déjà fait ainsi que la triplette "mysql-client","mysql-server" ainsi que "libmysqld-dev" , je fonctionne actuellement avec MariaDB.
J'ai créé un utilisateur "suricata" avec un mot de passe du même métal pour faire tourner le tout sans droits "root".
Ensuite télécharger le tar.gz (1.4.1 lors des premiers tests 3.0.1 à ce jour) dans un répertoire tranquille :
wget http://www.openinfosecfoundation.org/download/suricata-3.0.1.tar.gz ou plus récent visible sur https://oisf.net/
suivi d'un : tar -xvf suricata-3.0.1.tar.gz
Il faut charger quelques dépendances spécifiques :
- pkg-config
- libpcap-dev
- libpcre3-dev
- libyaml-dev
- libnet1-dev
- libcap-ng-dev
- libmagic-dev
- libhtp-dev
- zlib1g-dev
- libjansson4 libjansson-dev
- libnfnetlink0 libnfnetlink-dev
- libnetfilter-queue-1 libnetfilter-queue-dev
Un apt-get install de toute la liste suffit.
Ensuite le "./configure" magique permet de commencer le travail et le récap en fin d'exécution permet de vérifier si toutes les options nous conviennent :
Suricata Configuration:
AF_PACKET support: yes
PF_RING support: no
NFQueue support: no
IPFW support: no
DAG enabled: no
Napatech enabled: no
Unix socket enabled: no
libnss support: no
libnspr support: no
libjansson support: no
Prelude support: no
PCRE jit: no
libluajit: no
libgeoip: no
Non-bundled htp: no
Old barnyard2 support: no
CUDA enabled: no
Suricatasc install: yes
Unit tests enabled: no
Debug output enabled: no
Debug validation enabled: no
Profiling enabled: no
Profiling locks enabled: no
Generic build parameters:
Installation prefix (--prefix): /usr/local
Configuration directory (--sysconfdir): /usr/local/etc/suricata/
Log directory (--localstatedir) : /usr/local/var/log/suricata/
Host: i686-pc-linux-gnu
GCC binary: gcc
GCC Protect enabled: no
GCC march native enabled: yes
GCC Profile enabled: no
To build and install run 'make' and 'make install'.
You can run 'make install-conf' if you want to install initial configuration
files to /usr/local/etc/suricata/. Running 'make install-full' will install configuration
and rules and provide you a ready-to-run suricata.
To install Suricata into /usr/bin/suricata, have the config in
/etc/suricata and use /var/log/suricata as log dir, use:
./configure --prefix=/usr/ --sysconfdir=/etc/ --localstatedir=/var/
Pour plus de sécurité (isolation dans un répertoire spécifique) je vais lancer la configuration avec les options suivantes :
./configure --prefix=/opt/suricata \
--sysconfdir=/opt/suricata/ \
--localstatedir=/opt/suricata/
Le log final contient :
Generic build parameters:
Installation prefix (--prefix): /opt/suricata
Configuration directory (--sysconfdir): /opt/suricata/suricata/
Log directory (--localstatedir) : /opt/suricata/log/suricata/
Ce n'est pas tout à fait ce que je voulais et je corrige "un peu" le Makefile (aux environs de la ligne 245) pour obtenir un "arbre" de répertoires sous /opt/suricata :
e_localstatedir = /opt/suricata/run
e_logdir = /opt/suricata/log
e_logfilesdir = /opt/suricata/log/files
e_magic_file = /usr/share/file/magic
e_rundir = /opt/suricata/run/
e_sysconfdir = /opt/suricata/etc
e_sysconfrulesdir = /opt/suricata/etc/rules
Je lance enfin le "make" qui se déroule sans ennuis ... de même pour le "make install" ... qui m'installe un arbre de répertoires "convenable", enfin qui me convient, "make install-conf" installe la config de base puis "make install-full" télécharge et installe un jeu de règles standard.
Image de mon arbre de répertoires :
drwxrwsr-x 9 root suricata 4096 2013-05-06 14:39 .
drwxrwsr-x 18 root staff 4096 2013-05-06 13:40 ..
drwxr-xr-x 2 root suricata 4096 2013-05-07 16:29 bin
drwxr-xr-x 3 root suricata 4096 2013-05-07 17:09 etc
drwxr-xr-x 3 root suricata 4096 2013-05-06 14:37 include
drwxr-xr-x 4 root suricata 4096 2013-05-06 15:10 lib
drwxrwxr-x 3 root suricata 4096 2013-05-07 17:14 log
drwxrwxr-x 2 root suricata 4096 2013-05-07 16:07 run
drwxr-sr-x 3 root suricata 4096 2013-05-06 14:37 share
J'ai donné au user "suricata" les droits "group" sur l'ensemble des répertoires de /opt/suricata et les droits d'écriture sur les répertoires "log" et "run".
Il faut ensuite réaliser un script de démarrage car je n'en ai pas trouvé de disponible (mon exemplaire est disponible par le lien en bas de page).
Il faut ensuite légèrement modifier le fichier "etc/suricata.yaml" pour l'adapter à la structure de mes répertoires. J'ai désactivé l'option "fast log" qui consomme trop d'espace pour mes besoins de test sur un portable. J'ai aussi réduit la fréquence de stockage des statistiques à 30 minutes.
Après le lancement du produit on peut constater l'arrivée de quelques alertes ... mais elles sont au format "Unified2" et donc illisibles il faut utiliser un interface pour les rendre compréhensibles. Le projet conseille "Barnyard2" qui les enregistre dans une base de données (ici Mysql) et que je vais essayer au prochain épisode.
Le paramétrage du fichier de configuration est très bien expliqué (au moins pour les options "courantes") dans le fichier suricata.yaml.
Vous trouverez ces fichiers en attachement, mes quelques modifications du fichier YAML sont précédées d'un commentaire #JPP.