Détecter les attaques en temps réel
[ Présentation
|
Prelude ( Présentation
, Installation , Enregistement
d'une sonde , Le 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