FUNIX

Mettez un manchot dans votre PC



Détecter les attaques en temps réel
[ Présentation  | Prelude ( PrésentationInstallation , Enregistement d'une sondeLe frontend prewikka ) ]

Dernière modification 27 décembre 2016

Gestion des évènements de sécurité d'un réseau avec Prelude

Sécurité



Présentation

Le but de cette page est de vous présenter des outils permettant de détecter en temps réel les attaques lorsque vous êtes connectés à internet, dans cette catégorie vous trouverez des outils de détection passifs se contentant de vous avertir d'attaques, libre à vous de mener les actions en conséquence, vous trouverez ensuite des outils de détection actifs, c'est à dire qu'ils vont eux mêmes automatiquement faire des manips systèmes pour bloquer les attaques le plus rapidement possibles.
Ce type d'outils de détection d'intrusion réseau sont des programmes qui permettent d'analyser le trafic réseau et de remonter les alarmes quand ça devient suspect. On distingue deux grandes familles
- les NIDS (Network Based Intrusion Detection System) qui vérifient la sécurité au niveau du réseau
- les HIDS (Host Based Intrusion Detection System) qui vérifient la sécurité au niveau des machines

Un NIDS est généralement un système dédidé qui vérifie les paquets circulant sur ou plusieurs liens réseau, pour cela il dispose souvent de plusieurs cartes réseau qui fonctionnent en mode promiscuité (promiscuous mode) ce qui permet de capture les paquets qui ne lui sont pas destinés.

Le HIDS est un daemon qui tourne sur une machine particulière qui analyse les journaux de logs et capture également les trames réseau qui entrent ou sortent de l'hôte afin de déceler les intrusions.

On parle également de SEM (security event management) ou SEIM (security event information management ou encore security information and event management), qui permettent de gérer et corréler les évènements dans les logs. On parle de corrélation car ces solutions sont munies de moteurs de corrélation qui permettent de relier plusieurs évènements à une même cause.

Snort présentée dans cette page est un NIDS, je présente dans cette page un outil hybride à la fois HIDS et NIDS et qui se nomme Prelude.

Par la suite j'aurais tendance à mélanger capteur, sonde ou senseur mais c'est la même chose !



Prelude

Présentation

Prelude est un IDS qui se décompose en :
- des capteurs (sensors en anglais) ou bien encore sondes qui sont chargés de détecter les évènements et de remonter les alarmes à un manager
- le manager prelude est chargé de collecter les évènements rapportés par les différents capteurs. Il archive les informations et permet en outre de définir une action pour contrer une attaque (contre mesure)
- les agents de contre mesure sont chargés de contrer les attaques
- le frontend prewikka est une interface d'administration accessible via un navigateur qui lui permet d'avoir en un coup d'oeil les alertes et statistiques associés
La communication entre tous ces outils se fait grâce au format IDMEF (Intrusion Detection Message Exchange Format) basé sur XML (RFC4765), un format spécialement conçu pour l'échange d'information d'un système de détection et de protection aux intrusions.

Les outils concernés sont:
- la bibliothèque Prelude (libprelude) sur laquelle se base tous les autres outils, elle gère notamment tout le dialogue entre les composants (capteurs et manager), le dialogue comprend la connexion réseau jusqu'à l'authentification.
- la bibliothèque PreludeDB fournit des outils de base pour tous les composants pour pouvoir accéder facilement à la base de données sans se soucier de son type (MySQL, SQLlite, et j'en passe)
- le capteur/sonde Prelude-LML permet la collecte et l'analyse des informations issues de tous types d’applications émettant des événements sous forme de logs (journaux système, messages syslog, etc.) afin de détecter des activités suspectes et de les transformer en alerte vers le Manager. C'est une sonde qui est locale à une machine. Elle peut être installé sur n'importe quel poste du réseau et pas seulement sur le serveur. Dans cette page un client aura pour adresse 192.168.2.11.
- le manager Prelude est le serveur chargé de recevoir les messages de l'ensemble des sondes. Il enregistre les évènements et les transforme en alerte. Pour la suite des opérations, il aura pour adresse 192.168.2.10.
- prewikka est l'interface web qui fournit une console d'analyse graphique
- Prelude-Correlator est un outil puissant basé sur un langage de programmation qui permet grâce à de multiples informations de diverses sondes et sources d'être corrélées à partir de certaines règles à écrire pour pouvoir générer telle ou telle action.

vous découvrirez sur le site de prelude qu'il existe un certain nombre de sondes externes qui ne sont pas présentées dans cette page dont des sondes qui tournent sous windows. On retient que snort en fait partie.

A noter qu'il peut y avoir plusieurs manager, dans ce cas il y a souvent un manager principal et des manageurs secondaires qui alimentent le manager principal comme le fait un capteur/sonde. On parle alors de relais (relaying dans la litterature anglo saxonne). Ce type d'architecture est utilisé dans le cas d'un réseau étendu avec plusieurs sous réseau distants (type réseau d'entreprise).

Pour mémoire Prelude sait analyser les logs issus de diverses origines dont:

Firewall, Routers & VPN BIG-IP, Check Point, CISCO ASA, CISCO IOS, CISCO Router, CISCO VPN, D-Link, Ipchains, IpFw, Juniper Networks NetScreen, Linksys WAP11, ModSecurity v2, Netfilter, SonicGuard SonicWall
Switchs CISCO CSS
IDS CISCO IPS, Portsentry, Shadow, Tripwire
Monitoring APC-EMU, ArpWatch, Dell OpenManage, Nagios
AntiVirus/AntiSpam ClamAV, P3Scan, SpamAssassin
Database Microsoft SQL Server, Oracle
SMTP/POP Server Exim, Postfix, Qpopper, Sendmail, Vpopmail
FTP Server ProFTPD, WU-FTPD
Web Server Apache
Vulnerability Scanner Nessus
Honeypots Honeyd, Honeytrap, Kojoney
Authentication OpenSSH, Su
Applications Asterisk, Cacti, Libsafe, Shadow Utils, Squid, Sudo
OS (security tools) GrSecurity, PaX, SELinux
Miscellaneous Unix specific logs, Webmin, Windows Server, Arbor, Linux bonding, Microsoft Cluster Service, NetApp ONTAP, NTSyslog, OpenHostAPD, Rishi, Suhosin


Installation

Il faudra préalablement avoir installé une base de données sur le serveur prelude-manager, pour ma part j'utilise MySQL tel que décrit dans cette page.

La page principale de Prelude est https://www.prelude-siem.org/ on récupérera un certain nombre de tarball qu'on installera dans l'ordre suivant:

installation de libprelude

tout d'abord libprelude, on décompresse l'archive en tapant

tar xvfz libprelude-3.1.0.tar.gz

Cela donne le libprelude-3.1.0 il faudra préalablement installer le package suivant

urpmi lib64gnutls-devel lib64gcrypt-devel

on tape ensuite

./configure

voilà le résultat

*** Dumping configuration ***
    - Generate documentation   : no
    - LUA binding              : no
    - Perl binding             : yes
    - Python2.x binding        : yes
    - Python3.x binding        : no
    - Ruby binding             : no
    - Easy bindings            : yes

on tape ensuite make puis en tant que root

make install

Si vous construisez la bibliothèque avec LUA et Ruby il faudra rajouter les lignes suivantes dans le fichier /etc/ld.so.conf

/usr/local/lib64/ruby/site_ruby
/usr/local/lib/lua/5.2

et tapez ldconfig
si prewikka ne trouve pas le module python prelude, il sera sans doute utile de créer les liens suivants

ln -s /usr/lib64/python2.7/site-packages/preludedb-3.1.0-py2.7.egg-info /usr/lib/python2.7/site-packages/
ln -s /usr/lib64/python2.7/site-packages/preludedb.py /usr/lib/python2.7/site-packages/
ln -s /usr/lib64/python2.7/site-packages/preludedb.pyc /usr/lib/python2.7/site-packages/
ln -s /usr/lib64/python2.7/site-packages/_preludedb.so /usr/lib/python2.7/site-packages/



Installation de libpreludedb

on passe maintenant à libpreludedb qu'on installera uniquement sur le serveur prelude-manager, on décompresse l'archive en tapant

tar xvfz libpreludedb-3.1.0.tar.gz

cela donne le répertoire libpreludedb-3.1.0 dans lequel on tape

./configure

voilà le résultat de la commande

*** Dumping configuration ***
    - Generate documentation      : no
    - Enable MySQL plugin         : yes
    - Enable PostgreSQL plugin    : yes
    - Enable SQLite3 plugin       : no
    - Python2.x binding           : yes
    - Python3.x binding           : no
    - Easy bindings               : yes

on tape maintenant make puis en tant que root

make install

on rajoute dans le fichier /etc/ld.so.conf les lignes suivantes

/usr/local/lib/libpreludedb/plugins/formats
/usr/local/lib/libpreludedb/plugins/sql

puis on tape ldconfig

on crée maintenant la base de données correspondante

mysql -u root -p 
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 237
Server version: 5.7.17 Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

No entry for terminal type "xterm-256color";
using dumb terminal settings.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE database prelude;
Query OK, 1 row affected (0,00 sec)

on donne les droits d'accès à la base à un utilisateur particulier

mysql>GRANT ALL PRIVILEGES ON prelude.* TO olivier@'localhost' IDENTIFIED BY 'mot-de-passe';
Query OK, 0 rows affected (0,00 sec)

mysql>quit

création des tables de la base

mysql -u olivier prelude -p < /usr/local/share/libpreludedb/classic/mysql.sql


Installation de prelude-lml

on passe à prelude-lml qui généralement est installé sur le serveur mais sur également d'autres postes clients du réseau, à noter que sur les postes clients il faudra installer libprelude. Sur ces postes on décompresse l'archive en tapant

tar xvfz prelude-lml-3.1.0.tar.gz

Cela donne le répertoire prelude-lml-3.1.0 dans lequel on tape

./configure

voilà le résultat de la commande

*** Dumping configuration ***
    - Enable TLS support         : yes
    - Favor libICU over Iconv    : no
    - Used libev                 : embedded


on tape ensuite make puis en tant que root

make install

on édite le fichier /etc/ld.so.conf on rajoute la ligne suivante

/usr/local/lib/prelude-lml

puis en tant que root on tape ldconfig

Le fichier de configuration est /usr/local/etc/prelude-lml/prelude-lml.conf voilà un exemple pour prendre en compte apache

[format=apache]
time-format = "%d/%b/%Y:%H:%M:%S"
prefix-regex = "(?P<hostname>\S+) \S+ \S+ \[(?P<timestamp>.{20}) [+-].{4}\] "
#file = /var/log/httpd/access_log
file = /usr/local/apache2/logs/access_log

[format=apache-error]
time-format = "%a %b %d %H:%M:%S %Y"
prefix-regex = "^\[(?P<timestamp>.{24})\] \S+ (\[client (?P<hostname>\S+)\] )?"
#file = /var/log/httpd/error_log
file = /usr/local/apache2/logs/error_log

sur un système avec journalisation par systemd il faudra certainement réactiver le daemon syslog qui n'est plus activé par défaut pour pouvoir visualiser les alertes sur les fichiers de log

on va récupérer maintenant un ensemble de règles qu'on décompressera en tant

tar xvfz prelude-lml-rules-3.1.0.tar.gz

on obtient un répertoire ruleset qu'on copiera sous /usr/local/etc/prelude-lml

Pour un poste client on éditera le fichier /usr/local/etc/prelude/default/client.conf il faudra surtout renseigner la ligne suivante en précisant l'adresse IP du serveur prelude-manager vers qui il faudra se connecter et renvoyer les évènements

server-addr = 192.168.2.10

Installation de prelude-manager

on passe à prelude-manager qu'on installera que sur le serveur, on décompresse l'archive en tapant

tar xvfz prelude-manager-3.1.0.tar.gz

cela donne le répertoire prelude-manager-3.1.0 dans lequel on tape

./configure

voilà le résultat de la commande

*** Dumping configuration ***
    - TCP wrapper support    : no
    - XML plugin support     : yes
    - GeoIP support          : no
    - Database plugin support: yes
    - Used libev             : embedded


on tape ensuite make puis en tant que root

make install

on rajoute les lignes suivantes dans le fichier /etc/ld.so.conf

/usr/local/lib/prelude-manager/decodes
/usr/local/lib/prelude-manager/filters
/usr/local/lib/prelude-manager/reports

on tape ensuite ldconfig

A présent on va modifier le fichier de configuration /usr/local/etc/prelude-manager/prelude-manager.conf voilà les modifs que j'ai faites

tout d'abord la liste des interfaces à écouter

listen = 127.0.0.1
listen = 192.168.2.10

puis des infos sur la base de données

[db]

# The type of database: mysql, pgsql or sqlite3.
type = mysql

# Host the database is listening on.
host = localhost

# Port the database is listening on.
port = 3306

# Name of the database.
name = prelude

# Username to be used to connect the database.
user = olivier

# Password used to connect the database.
pass = mot-de-passe



Installation de prewikka

on passe à prewikka qu'on installera sur le serveur prelude-manager, tout d'abord on doit installer les packages python-dateutil et python-babel ainsi que lesscpy qu'on trouvera ici https://github.com/lesscpy/lesscpy on décompresse l'archive en tapant

tar xvfz lesscpy-0.10.2.tar.gz

dans le répertoire qu'on obtient lesscpy-0.10.2 on tape en tant que root

python setup.py install

on revient à prewikka, on décompresse l'archive en tapant

tar xvfz prewikka-3.1.0.tar.gz

cela donne le répertoire prewikka-3.1.0 dans lequel on tape en tant que root

urpmi python-cheetah
python setup.py install

on crée maintenant la base de données de prewikka en tapant

mysql -u root -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 239
Server version: 5.7.17 Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

No entry for terminal type "xterm-256color";
using dumb terminal settings.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE database prewikka;
Query OK, 1 row affected (0,00 sec)


on donne ensuite les droits sur la base sur un utilisateur qui va bien

mysql> GRANT ALL PRIVILEGES ON prewikka.* TO olivier@'localhost' IDENTIFIED BY 'mot-de-passe';
Query OK, 0 rows affected (0,00 sec)

on édite maintenant le fichier de configuration /etc/prewikka/prewikka.conf et voici mes modifications

[interface]
# Software name displayed in the top left corner (displays logo if not defined)
software: Prelude

# Webpage title
browser_title: Prelude OSS


(...)

[idmef_database]
# type: pgsql | mysql | sqlite3
# For sqlite, add
# file: /path/to/your/sqlite_database
#
type: mysql
host: localhost
user: olivier
pass: motpasse
name: prelude

# Prewikka DB
[database]
type: mysql
host: localhost
user: olivier
pass: motpasse
name: prewikka


(...)

default_locale: fr_FR

maintenant on va créer un hôte virtuel avec apache, on modifie le fichier httpd.conf pour y rajouter

<VirtualHost 192.168.2.10>
  ServerName ids.kervao.fr
  WSGIApplicationGroup %{GLOBAL}
  WSGIScriptAlias / /usr/share/prewikka/prewikka.wsgi
</VirtualHost>

je vous laisse bien entendu adapter à votre adresse IP et au nom du serveur. Pour cela il faut disposer du module apache mod_wsgi qu'on récupèrera là https://github.com/GrahamDumpleton/mod_wsgi/releases on décompresse l'archive en tapant

tar xvfz mod_wsgi-4.5.11.tar.gz

cela donne le répertoire mod_wsgi-4.5.11 dans lequel on tape

./configure --with-apxs=/usr/local/apache2/bin/apxs
make


puis en tant que root

make install

cela va nous installer le module directement sous /usr/local/apache2/modules. On édite le fichier httpd.conf et on rajoute

LoadModule wsgi_module modules/mod_wsgi.so

On relance bien sûr apache.



Installation de prelude-correlator

On passe à prelude-correlator qu'on installera sur le serveur prelude-manager, on décompresse l'archive en tapant

tar xfvz prelude-correlator-3.1.0.tar.gz

Cela donne le répertoire prelude-correlator-3.1.0, préalablement j'ai dû installer le package suivant

urpmi lua-devel

on revient dans le répertoire où l'on tape en tant que root

python setup.py install




Engistrement d'une sonde

Présentation

Pour pouvoir utiliser une sonde il faut d'abord l'enregistrer. auprès du manager Prelude. Pour cela il faut donner un identifiant unique à la sonde puis l'enregistrer avec les permissions qui vont bien. Dans la litterature anglo saxonne l'identifiant est souvent connu sous le terme de "profile".

Un profil est donc l'identifiant pour une sonde, quand celle-ci est lancée elle va chercher auprès du manager Prelude un fichier profil fixant sa configuration.

Pour enregistrer une sonde et donc créer un profil il faudra taper la commande suivante

prelude-admin register (nom du profil) (permissions) (adresse du manager) --uid (uid) --gid (gid)

avec

- (nom du profil) le nom de votre sonde

- (permissions) il existe plusieurs types de permission, idmef et admin qui peuvent avoir des droits en lecture (read r) ou écriture (w). Généralement une sonde a besoin d'un accès en écriture à la base (idmef:w) et en accès en lecture aux fichiers profils (admin:r)

- (uid gid) on doit indiquer l'uid et le gid qui permettent d'utiliser la sonde et d'accéder aux informations sur le profil

- (adresse du manager) c'est l'adresse IP du manager Prelude, si c'est une installation locale on peut mettre localhost.

A noter que la première fois qu'une sonde est enregistrée prelude-admin crée une clé privée.

La première chose à faire est de créer un profil pour le manager Prelude lui même en tapant directement sur le serveur

prelude-admin add "prelude-manager" --uid 0 --gid 0

Generating 2048 bits RSA private key... This might take a very long time.
[Increasing system activity will speed-up the process].
Generation in progress...

Created profile 'prelude-manager' with analyzerID '2753273088006799'.

C'est fait et plus à faire. On peut lancer maintenant le manager sur le serveur en tapant en tant que root

prelude-manager

voilà le résultat

26 Dec 19:00:14 (process:16795) INFO: Subscribing Normalize to active decoding plugins.
26 Dec 19:00:14 (process:16795) INFO: server started (listening on 127.0.0.1 port 4690).
26 Dec 19:00:14 (process:16795) INFO: server started (listening on 192.168.0.11 port 4690).
26 Dec 19:00:14 (process:16795) WARNING: Option error: could not initialize libpreludedb: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).


ça coince car le socket de mysql est placé à un endroit non conventionnel, comme on ne peut pas le défnir dans le fichier de conf, j'ai créé un lien

ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

on relance la commande et voici le résultat

26 Dec 19:08:07 (process:17103) INFO: Subscribing Normalize to active decoding plugins.
26 Dec 19:08:07 (process:17103) INFO: server started (listening on 127.0.0.1 port 4690).
26 Dec 19:08:07 (process:17103) INFO: server started (listening on 192.168.0.11 port 4690).
26 Dec 19:08:07 (process:17103) INFO: Subscribing db[default] to active reporting plugins.
26 Dec 19:08:07 (process:17103) INFO: Subscribing Thresholding to filtering plugin with category hook 0.
26 Dec 19:08:07 (process:17103) INFO: Generating 1024 bits Diffie-Hellman key for TLS...

Engistrement de la sonde prelude-lml

Pour enregistrer la sonde prelude-lml sur le serveur on tapera sur

prelude-admin register prelude-lml "idmef:w admin:r" localhost

voilà le résultat

* WARNING: no --uid or --gid command line options were provided.
*
* The profile will be created under the current UID (0) and GID (0). The
* created profile should be available for writing to the program that will
* be using it.
*
* Your sensor WILL NOT START without sufficient permission to load the profile.
* [Please press enter if this is what you intend to do]

Generating 2048 bits RSA private key... This might take a very long time.
[Increasing system activity will speed-up the process].
Generation in progress...


You now need to start "prelude-admin" registration-server on localhost:
example: "prelude-admin registration-server prelude-manager"

Enter the one-shot password provided on localhost:


Quelques commentaires, je n'ai pas mis d'uid et de gid par défaut il a mis ceux de root. Par ailleurs j'ai indiqué que le manager tournait localement (localhost), vous pouvez évidemment indiquer une adresse distante. Comme il nous l'indique dans le commentaire je tape maintenant sur la machine où tourne le manager (qui est la même machine me concernant)

prelude-admin registration-server prelude-manager

voilà le résultat

The "hgsnrtmw" password will be requested by "prelude-admin register"
in order to connect. Please remove the quotes before using it.

Generating 1024 bits Diffie-Hellman key for anonymous authentication...
Waiting for peers install request on 0.0.0.0:5553...
Waiting for peers install request on :::5553...


je reviens sur la machine prelude-lml et je tape le mot de passe qui est indiqué

Enter the one-shot password provided on localhost:
Confirm the one-shot password provided on localhost:

Connecting to registration server (localhost:5553)... Authentication succeeded.
Successful registration to localhost:5553.

sur la machine manager on voit s'afficher ensuite sur la console

Connection from 127.0.0.1:33136...
Registration request for analyzerID="4241174313393513" permission="idmef:w admin:r".
Approve registration? [y/n]: y
127.0.0.1:33136 successfully registered.


voilà la sonde prelude-lml est enregistré sur le serveur.

voilà maintenant l'échange quand on enregistre une sonde prelude-lml sur un poste client

prelude-admin register prelude-lml "idmef:w admin:r" 192.168.2.10

You now need to start "prelude-admin" registration-server on mana:
example: "prelude-admin registration-server prelude-manager"

Enter the one-shot password provided on mana:
Confirm the one-shot password provided on mana:

Connecting to registration server (mana:5553)... Authentication succeeded.
Successful registration to mana:5553.


et côté serveur

prelude-admin registration-server prelude-manager

The "yyd622ov" password will be requested by "prelude-admin register"
in order to connect. Please remove the quotes before using it.

Generating 1024 bits Diffie-Hellman key for anonymous authentication...
Waiting for peers install request on 0.0.0.0:5553...
Waiting for peers install request on :::5553...

Connection from 192.168.2.11:39098...
Registration request for analyzerID="1893923146572116" permission="idmef:w admin:r".
Approve registration? [y/n]: y
192.168.2.11:39098 successfully registered.


sur le poste client et le serveur on peut lancer la sonde en tapant simplement

prelude-lml

voilà les traces dans la console

26 Dec 19:17:07 (process:17316) INFO: PCRE plugin loaded 661 rules.
26 Dec 19:17:07 (process:17316) INFO: Connecting to 127.0.0.1:4690 prelude Manager server.
26 Dec 19:17:07 (process:17316) INFO: TLS authentication succeed with Prelude Manager.
26 Dec 19:17:07 (process:17316) INFO: /usr/local/apache2/logs/error_log: No metadata available, starting from tail.
26 Dec 19:17:07 (process:17316) INFO: /usr/local/apache2/logs/access_log: No metadata available, starting from tail.
26 Dec 19:17:07 (process:17316) WARNING: /var/log/everything/current does not exist.
26 Dec 19:17:07 (process:17316) WARNING: /var/log/secure does not exist.
26 Dec 19:17:07 (process:17316) WARNING: /var/log/messages does not exist.

sur le client j'ai eu l'erreur suivante

27 Dec 09:24:27 (process:23022) WARNING: No file or UDP/TCP server available for monitoring: terminating.

pour le résoudre j'ai éditer le fichier /usr/local/etc/prelude-lml/prelude-lml.conf et j'ai décommenté la ligne udp-server en précisant le numéro de port de syslog

[format=syslog]
time-format = "%b %d %H:%M:%S"
prefix-regex = "^(?P<timestamp>.{15}) (?P<hostname>\S+) (?:(?P<process>\S+?)(?:\[(?P<pid>[0-9]+)\])?: )?"
file = /var/log/messages
file = /var/log/secure
udp-server = 0.0.0.0:514


et voilà le résultat quand on relance la sonde

27 Dec 09:33:18 (process:23882) INFO: PCRE plugin loaded 661 rules.
27 Dec 09:33:18 (process:23882) INFO: Listening for syslog message on 0.0.0.0:514/udp.
27 Dec 09:33:18 (process:23882) INFO: Connecting to 192.168.0.11:4690 prelude Manager server.
27 Dec 09:33:18 (process:23882) INFO: TLS authentication succeed with Prelude Manager.
27 Dec 09:33:18 (process:23882) WARNING: /var/log/apache2/error_log does not exist.
27 Dec 09:33:18 (process:23882) WARNING: /var/log/httpd/error_log does not exist.
27 Dec 09:33:18 (process:23882) WARNING: /var/log/apache2/access_log does not exist.
27 Dec 09:33:18 (process:23882) WARNING: /var/log/httpd/access_log does not exist.
27 Dec 09:33:18 (process:23882) WARNING: /var/log/everything/current does not exist.
27 Dec 09:33:18 (process:23882) WARNING: /var/log/secure does not exist.
27 Dec 09:33:18 (process:23882) WARNING: /var/log/messages does not exist.



Engistrement de la sonde réseau snort


Tout d'abord on installera barnyard2 qui va se contenter de mettre au format qui va bien (unified2) la sortie de snort pour pouvoir être exploité par prelude. On le récupèrera ici https://github.com/firnsy/barnyard2 on décompresse l'archive en tapant

tar xvfz barnyard2-2-1.13.tar.gz

cela donne le répertoire barnyard2-2-1.13 dans lequel on tape

./configure --enable-prelude
make


puis en tant que root

make install
mkdir /var/log/barnyard2


j'ai créé maintenant le lien suivant

ln -s /usr/local/etc/barnyard2.conf /etc/snort

on éditer maintenant le fichier /etc/snort/barnyard2.conf, voici mes modifications

config interface:  eno2

config reference_net: 192.168.0.0/24

output alert_prelude: profile=snort


maintenant on édite le fichier /etc/snort/snort.conf, voici mes modifications

# unified2
# Recommended for most installs
# output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types
output unified2: filename merged.log, limit 128


on peut lancer séparément les deux commandes (à adapter suivant votre interface)

snort -c /etc/snort/snort.conf -i eno2
barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f merged.log -a /var/log/snort/archived_logs/

voilà le résultat pour cette dernière commande

Running in Continuous mode

        --== Initializing Barnyard2 ==--
Initializing Input Plugins!
Initializing Output Plugins!
Parsing config file "/etc/snort/barnyard2.conf"


+[ Signature Suppress list ]+
----------------------------
+[No entry in Signature Suppress List]+
----------------------------
+[ Signature Suppress list ]+

Barnyard2 spooler: Event cache size set to [2048]
Log directory = /var/log/barnyard2
26 Dec 21:26:15 (process:9369) INFO: Connecting to 127.0.0.1:4690 prelude Manager server.
26 Dec 21:26:16 (process:9369) INFO: TLS authentication succeed with Prelude Manager.

        --== Initialization Complete ==--

  ______   -*> Barnyard2 <*-
 / ,,_  \  Version 2.1.13 (Build 327)
 |o"  )~|  By Ian Firns (SecurixLive): http://www.securixlive.com/
 + '''' +  (C) Copyright 2008-2013 Ian Firns <firnsy@securixlive.com>

Opened spool file '/var/log/snort/merged.log.1482783876'
Waiting for new data


De la même manière que plus haut, sur le poste où tourne snort je tape

prelude-admin register snort "idmef:w admin:r" localhost

* WARNING: no --uid or --gid command line options were provided.
*
* The profile will be created under the current UID (0) and GID (0). The
* created profile should be available for writing to the program that will
* be using it.
*
* Your sensor WILL NOT START without sufficient permission to load the profile.
* [Please press enter if this is what you intend to do]

Generating 2048 bits RSA private key... This might take a very long time.
[Increasing system activity will speed-up the process].
Generation in progress...


You now need to start "prelude-admin" registration-server on localhost:
example: "prelude-admin registration-server prelude-manager"

Enter the one-shot password provided on localhost:


sur la machine serveur

prelude-admin registration-server prelude-manager

voilà le résultat

The "aoomy9r6" password will be requested by "prelude-admin register"
in order to connect. Please remove the quotes before using it.

Generating 1024 bits Diffie-Hellman key for anonymous authentication...
Waiting for peers install request on 0.0.0.0:5553...
Waiting for peers install request on :::5553...


sur la machine où tourne snort je mets le mot de passe indiqué plus haut

Enter the one-shot password provided on localhost:
Confirm the one-shot password provided on localhost:

Connecting to registration server (localhost:5553)... Authentication succeeded.
Successful registration to localhost:5553.

et voilà ce qu'on retrouve sur le serveur

Connection from 127.0.0.1:33140...
Registration request for analyzerID="708078381129503" permission="idmef:w admin:r".
Approve registration? [y/n]: y
127.0.0.1:33140 successfully registered.





Le frontend prewikka

il suffit déjà de le lancer en tapant sur le serveur prewikka-httpd. Comme indiqué plus haut l'adresse pour accéder au frontend depuis n'importe quel poste du réseau est http://ids.kervao.fr:8000 Voilà quelques screenshots, les agents (sondes) déclarés sur le serveur mana et le client predator



J'ai déclenché un scan avec nmap pour générer l'alerte, voilà quand on clique sur l'alerte en question




Pour aller plus loin le manuel d'administration de Prelude se trouve par ici https://www.prelude-siem.org/projects/prelude/wiki
  

[Retour page d'accueil FUNIX]