Suricata : installation

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.