IDS Snort
Installation
Snort
Snort est l’outil de détection d’intrusion.
Package Gentoo: snort +flexresp2 +inline +ipv6
#emerge snort #rc-update add snort default
Le mode inline permet l'utilisation du firewall iptables par snort. Trois nouvelles actions deviennent possibles:
- drop - The drop rule type will tell iptables to drop the packet and log it via usual Snort means.
- reject - The reject rule type will tell iptables to drop the packet, log it via usual Snort means, and send a TCP reset if the protocol is TCP or an icmp port unreachable if the protocol is UDP.
- sdrop - The sdrop rule type will tell iptables to drop the packet. Nothing is logged.
Remarque : Pour utiliser l’option flexresp qui permet de couper (avec des tcp-reset) des connexions jugées suspectes, il faut utiliser la bibliothèque libnet. Cette bibliothèque existe en 2 versions et peut poser un problème lors de l’installation. Une solution est alors de désactiver flexresp dans le ebuild.
Remarque : En mai 2009, gentoo passe de snort-2.6 à snort-2.8, l'utilisation de snortsam n'est plus possible juste avec un flag 'use'. De plus, dans la catégorie reset automatique de connexion, flexresp devient flexresp2.
Remarque : En 2011, gentoo passe de snort-2.8 à snort-2.9, il faut compiler avec l'utilisation d'ipv6 pour utiliser la variable ipvar dans snort.conf.
Barnyard
Barnyard libére snort de l’ « output » des alertes. Snort gagne alors en performances. Le package fait partie de la distribution gentoo mais il est masqué.
Package Gentoo: barnyard
#emerge barnyard #rc-update add barnyard default
Oinkmaster
http://oinkmaster.sourceforge.net/
Oinkmaster est un script qui permet de faire des mises à jour intelligentes et automatiques des règles snort.
Package Gentoo: oinkmaster
Configuration
Snort
/etc/snort/snort.conf
Le fichier snort.conf se décompose en 4 parties :
- La définition de variables pour les règles
- La configuration des preprocesseurs
- La configuration de « l’output » - dont barnyard:
<licode file=/etc/snort/snort.conf> output log_unified: filename snort.log, limit 128 </licode>
- Le choix des règles (A EXPLIQUER)
Spécificités
- Arrêter les alertes : stream5: Limit on number of overlapping TCP packets reached
Mettre 0 au paramètre overlap_limit de stream5_tcp
<licode file=/etc/snort/snort.conf> reprocessor stream5_tcp: policy linux, detect_anomalies, require_3whs 180, \
overlap_limit 0, small_segments 3 bytes 150, timeout 180, \
</licode>
- Arrêter les alertes http_inspect: LONG HEADER
Mettre 0 au paramètre max_header_length 0 \
<licode file=/etc/snort/snort.conf> preprocessor http_inspect_server: server default \
chunk_length 500000 \ server_flow_depth 0 \ client_flow_depth 0 \ post_depth 65495 \ oversize_dir_length 500 \ max_header_length 0 \ max_headers 100 \
</licode>
Limiter la mémoire
http://www.snort.org/docs/faq/3Q06/node86.html
A partir de snort 2.6, la configuration par défaut de snort utilise beaucoup de mémoire. Décommenter la ligne config detection pour diminuer la mémoire utilisée par snort:
<licode file=/etc/snort/snort.conf>
- Use a different pattern matcher in case you have a machine with very limited
- resources:
config detection: search-method lowmem </licode>
Toutefois, il existe des configurations intermédiaires (cf documentation de snort sur config detection).
/etc/conf.d/snort
<licode file=/etc/conf.d/snort> IFACE=eth0
- Make sure this matches your IFACE
PIDFILE=/var/run/snort_$IFACE.pid
- You probably don't want to change this, but in case you do
LOGDIR="/var/log/snort"
- Probably not this either
CONF=/etc/snort/snort.conf
- This pulls in the options above
SNORT_OPTS="-D -A FULL -u snort –g snort -i $IFACE -l $LOGDIR -c $CONF" </licode>
Explication:
- -D : fait tourner snort en “démon”
- -A FULL : permet d’inscrire le « payload » dans les logs
- -u snort :snort a les droits de l’utilisateur snort
- -g snort : snort a les droits du groupe snort
- -i $IFACE : snort écoute sur l’interface $IFACE, càd eth0 ici
- -l $LOGDIR : indique le répertoire des logs snort
- -c $conf : indique l’emplacement du fichier de configuration
debuggage au lancement
#snort -A FULL -u snort –g snort -i eth0 –c /etc/snort/snort.conf
Barnyard
/etc/conf.d/barnyard.conf
- -c $conf : indiquer l’emplacement du fichier de configuration
- -w : permet à barnyard de repartir là où il s’est arrêté
<licode file=/etc/snort/barnyard.conf> config daemon config localtime config hostname <fw-xxxxx> config interface output log_acid_db </licode>
debuggage
Désactiver config daemon de /etc/snort/barnyard.conf
#barnyard –c /etc/snort/barnyard.conf –f snort.log
Remarque : l’option –o (oneshot) permet de traiter un fichier de log en entier. Ensuite barnyard s’arrête.
Oinkmaster
oinkmaster.conf
Le fichier de configuration est très bien documenté.
On peut désactiver et modifier des règles avec les commandes modifysid et disablesid.
Ne pas oublier de mettre à jour l'url de téléchargement de snort et des règles utilisées L'url change régulièrement avec les nouvelles version de snort donc il est bon de se mettre à jour via la page https://www.snort.org/account/oinkcode
<licode file=/etc/oinkmaster.conf> url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-<version>.tar.gz
- Example for Community rules
url = http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules.tar.gz </licode>
Tester avec la ligne de commande
#su –c "/usr/bin/oinkmaster.pl -o /etc/snort/ -C /etc/oinkmaster.conf -c"
L’option –c (careful) permet de ne mettre à jour aucune règle.
La mise à jour automatique (crontab)
Déposer le script snort.cron dans /etc/cron.daily
Lui donner les droits d’exécution.
#chmod u+x /etc/cron.daily/snort.cron
<licode file=/etc/cron.daily/snort.cron>
- !/bin/bash
echo "snort.cron" su -c "/usr/bin/oinkmaster.pl -o /etc/snort/rules -C /etc/oinkmaster.conf >> /var/log/snort/oinkmaster.log" su -c "/usr/bin/create-sidmap.pl /etc/snort/rules > /etc/snort/sid-msg.map"
/etc/init.d/barnyard stop /etc/init.d/barnyard zap /etc/init.d/snort stop /etc/init.d/mysql stop /etc/init.d/snort zap /etc/init.d/mysql zap /etc/init.d/snort start myisamchk -r -s /var/lib/mysql/snort_db/*.MYI /etc/init.d/mysql start /etc/init.d/barnyard start </licode>
Remarque:
La version CVD de oinkmaster permettrait aussi de mettre à jour les so_rules
emerging threats
http://doc.emergingthreats.net/
<licode file=/etc/snort/snort.conf> include $RULE_PATH/emerging-attack_response.rules ... </licode>
<licode file=/etc/oinkmaster.conf> url = http://emergingthreats.net/rules/emerging.rules.tar.gz </licode>
Snortsam
http://www.snortsam.net/index.html
Snortsam permet de dynamiser la configuration des firewall à partir des alertes snort.
BASE
http://sourceforge.net/projects/secureideas/
Administration
La définition de règles
(cf règles existantes et SnortUserManual chez http://www.snort.org/docs/)
Utilisation
Statistiques
Les commandes suivantes permettent toutes les deux d‘envoyer les statistiques de snort dans /var/log/message :
#/bin/kill –SIGUSR1 <pid de snort> #/bin/killall –USR1 snort
Nettoyer la base mysql
myisamchk permet de vérifier, réparer et optimiser des tables (.MYI et .MYD) les tables par défaut de mysql sont des tables MYISAM :
- .frm sont les définitions (forms) de tables
- .MYI sont les tables INDEX
- .MYD sont les tables DATA
myisamchk *.MYI vérifie toutes les tables du répertoire.
il crée une copie de .MYD, ligne par ligne.
il remplace l'ancien .MYD par le nouveau
les options :
- -v mode verbeux
- -i donne des informations statistiques
- -r corrige les erreurs
- -a analyse la distribution des clefs - améliore la performance des "join"
- -d décrit la table
<licode file=/etc/contab> 35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI </licode>
#myisamchk --analyze table.MYI #myisamchk -r *.MYI #mysqladmin refresh
Copyright
© 2006-2011 Christophe de Livois
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL. |