Вы находитесь на странице: 1из 7

Nous allons voir dans cet article comment mettre en place lIDS Snort, son installation, sa configuration, ainsi

que Swatch, un viewer de logs. (Systme Debian Etch) Snort est un IDS (Intrusion detection system), il permet de dtecter deventuelles attaques portes envers votre serveur. Il doit tre utilis, coupl un Firewall (iptables), et tous les ports ouverts devront tres sniffs par snort. Celui-ci permettra de dtecter entre autres les scans de ports, les DOS etc. Swatch est un parseur de logs, qui va permettre au serveur denvoyer des mails dalertes ds quune alerte de haute priorite sera dtecte dans les Logs de Snort. I - Installation de Snort : Nous allons commencer par Installer une base MySQL # apt-get install mysql-server Puis nous allons installer Snort compil pour envoyer les logs vers MySQL: # apt-get install snort-mysql Un tutorial apparait. Entrer les paramtres: - rseau sous surveillance: any - paramtrage de la base de donnes: non Dans le fichier de configuration /etc/snort/snort.conf, vous avez une liste commente de toutes les rgles (rules) de detection dintrusions de snort. Vous devez dcommenter celles qui serviront, et commenter les autres (Par exemple, si vous nhebergez pas de service pop3, vous pouvez laisser la ligne pop3.rules commente). Vous avez ici un exemple pour un serveur Web: #Dans /etc/snort/snort.conf: include $RULE_PATH/local.rules include $RULE_PATH/bad-traffic.rules include $RULE_PATH/exploit.rules include $RULE_PATH/scan.rules # include $RULE_PATH/finger.rules # include $RULE_PATH/ftp.rules # include $RULE_PATH/telnet.rules # include $RULE_PATH/rpc.rules # include $RULE_PATH/rservices.rules include $RULE_PATH/dos.rules include $RULE_PATH/ddos.rules include $RULE_PATH/dns.rules # include $RULE_PATH/tftp.rules include $RULE_PATH/web?cgi.rules include $RULE_PATH/web?coldfusion.rules # include $RULE_PATH/web?iis.rules # include $RULE_PATH/web?frontpage.rules include $RULE_PATH/web?misc.rules include $RULE_PATH/web?client.rules include $RULE_PATH/web?php.rules include $RULE_PATH/sql.rules # include $RULE_PATH/x11.rules

# include $RULE_PATH/icmp.rules # include $RULE_PATH/netbios.rules # include $RULE_PATH/misc.rules # include $RULE_PATH/attack?responses.rules # include $RULE_PATH/oracle.rules include $RULE_PATH/mysql.rules # include $RULE_PATH/snmp.rules # include $RULE_PATH/smtp.rules # include $RULE_PATH/imap.rules # include $RULE_PATH/pop2.rules # include $RULE_PATH/pop3.rules # include $RULE_PATH/nntp.rules # include $RULE_PATH/other?ids.rules # include $RULE_PATH/web?attacks.rules # include $RULE_PATH/backdoor.rules # include $RULE_PATH/shellcode.rules # include $RULE_PATH/policy.rules # include $RULE_PATH/porn.rules # include $RULE_PATH/info.rules # include $RULE_PATH/icmp?info.rules # include $RULE_PATH/virus.rules # include $RULE_PATH/chat.rules # include $RULE_PATH/multimedia.rules # include $RULE_PATH/p2p.rules # include $RULE_PATH/experimental.rules Configuration de la base de donnes MySQL : Ajoutez un mot de passe pour lutilisateur root MySQL: #mysqladmin -u root password PASSWORD Crez la base de donnes MySQL et les tables pour recevoir les logs de Snort: #mysql -u root -p >create database snort; Comme il est dangereux daccder la base de donnes avec lutilisateur root, il est ncessaire de crer un utilisateur avec des permissions sur la base de donnes snort uniquement: >grant all on snort.* to snort@localhost identified by 'snort'; Rechargez les privilges MySQL: >flush privileges; >exit; Maintenant, nous devons crer les tables dans la base de donnes snort: Par chance, les tables sont dj cres et nous devons juste les trouver et les installer dans la base de donnes: Recherchez le fichier create_mysql.gz qui est normalement situ dans le dossier /usr/share/doc/snort_mysql. Dzippez le fichier: #gzip -d /usr/share/doc/snort?mysql/create_mysql.gz

ou #zcat /usr/share/doc/snort?mysql/create_mysql.gz Importez les tables MySQL: #mysql -u root -p snort < /usr/share/doc/snort?mysql/create_mysql Maintenant nous allons tuner MySQL, pour lui allouer plus de mmoire. Ouvrez le fichier de configuration de mysql situ ici : /etc/mysql/my.cnf, il sagit du fichier my.cnf, modifiez les lignes suivantes: Key_fuffer = 64M Max_allowed_packet = 64M Thread_stack = 128k Thread_cache_size = 16 Configuration de SNORT pour MySQL : Nous devons dvier les logs de Snort dans la base de donnes, (Snort inscrira alors ses logs dans la base MySQL, mais il pourra galement logger ses alertes dans les logs si nous lui spcifions dans la commande de dmarrage): Ceci est dj fait en installant le package snort-mysql, il est juste ncessaire de configurer le login et mot de passe pour accder la base de donnes snort. Dans le fichier /etc/snort/snort.conf, nous devons modifier les lignes entre (#DBSTART#) et (#DBEND#): output database: log, mysql, user=snort password=snort dbname=snort host=localhost Toujours dans le mme fichier, dcommentez les lignes suivantes: ruletype redalert { type alert output alert_syslog: LOG_AUTH LOG ALERT output database: log, mysql, user=snortuser password=snort dbname=snort host=localhost } Il est grand temps de lancer Snort !! (Avec un niveau d'alerte maximale) snort -u snort -A full -l /var/log/snort -c /etc/snort/snort.conf Cela veut dire que snort est dmarr avec lutilisateur snort et va charger la configuration stocke dans le fichier /etc/snort/snort.conf. Pour des raisons de scurit, il est toujours mieux de dmarrer des programmes sans lutilisateur root. Si vous voyez la bannire Snort (avec un petit cochon :-), cela veut dire que Snort est correctement charg, si ce nest pas le cas, regarder attentivement le message derreur. Le rpertoire init.d contient les processus qui dmarrent avec le dmarrage du systme, init est le premier processus qui lance d'autres processus qui se trouvent dans /etc/init.d/ ou /etc/rc*.d/, le PID du processus init est 1

Pour lancer snort automatiquement au dmarrage du systme, ajouter une ligne dans le fichier /etc/init.d/rc.local, la fin de la fonction do_start() #Demarrage de snort snort -u snort -A full -l /var/log/snort -c /etc/snort/snort.conf Linstallation de Snort est maintenant termine ! II - Installation de Swatch Rfrences sur le net : http://www.linuxsecurity.com/content/view/117377/171/ http://www.faqs.org/docs/Linux-HOWTO/Snort-Statistics-HOWTO.html#SWATCH-CONFIG Swatch est un log viewer, il est capable de parser un fichier de log et d'envoyer des alertes. Aprs avoir dit snort de loger les alertes, nous pouvons mettre en place Swatch. Pr-requis : postfix et mailx. (apt-get postfix mailx) On cre un dossier Swatch : mkdir /home/swatch/ cd /home/swatch Se rendre cette adresse : http://www.oit-ucsb.edu/~eta/swatch/ Copier ladresse de tlchargement de Swatch, puis le tlcharger : wget ADDRESS_DU_tar.gz_SWATCH On le dcompresse : tar -xvzf swatch* On rentre dans le dossier que lon vient de dzipper puis: perl Makefile.PL S'il affiche des warnings, comme ceux-ci: Warning: Warning: 219. Warning: Warning: 219. prerequisite Date::Calc 0 not found at (eval 1) line 219. prerequisite Date::Parse 0 not found at (eval 1) line prerequisite File::Tail 0 not found at (eval 1) line 219. prerequisite Time::HiRes 1.12 not found at (eval 1) line

Copiez les noms des librairies perl manquantes, puis rendez-vous a cette adresse: http://search.cpan.org/ Collez le nom des libraires manquantes, et tlchargez-les. Extraire les archives puis excuter les commandes suivantes pour installer les paquets: perl make make make make Makefile.PL test install realclean

Puis pour Swatch, refaire les mmes commandes : (Normalement, ici Swatch ne gnre plus

d'erreur) perl make make make make Makefile.PL test install realclean

On cre un fichier de configuration pour Swatch, nomm .swatchrc : touch .swatchrc vim .swatchrc Collez ceci dans .swatchrc: ################## configuration SWATCH / SNORT ################## # # Si l'on decommente les lignes si dessous: 5 bips (haut parleur PC) se feront entendre # puis 'throttle' limite le nombre de fois ou le modele rencontre dans les logs doit # apparaitre afin de declencher l'alerte. Ceci est utile en effet si vous ne souhaitez # pas que pour chaque paquet recu sur un port specifique, un mail ne soit emis ou une # pop?up affichee... # # watchfor /Priority\: 1/ # bell 5 # throttle 00:00:10 # # # Si dessous meme syntaxe.. # mais on envoie un mail. # bold sert a ecrire en gras dans les logs.. watchfor /Priority\: 1/ echo bold exec /etc/snort/snort?check $0 throttle 00:00:10 # ######################################################### On cre un fichier de snort-check dans /etc/snort pour relayer .swatchrc et envoyer des mails : touch /etc/snort/snort?check vim /etc/snort/snort?check Collez ceci dans snort-check: #!/bin/sh # Script to be run from within swatch to send alerts in multiple formats # inspired from script on www.snort.org by Bill Richardson # recipientfile holds the addresses of all recipients in a single file, # seperated by newline

recipientfile=/etc/snort/recipients # if a recipient file exists if [ ?s "$recipientfile" ] ; then # generate the recipientlist with email adresses. for i in `cat $recipientfile` ; do recipients=$recipients $i done echo Alerte IDS de priorit 1 | mailx ?s ALERTE IDS de niveau 1 $recipients fi On cre un fichier recipients dans /etc/snort qui contiendras tous les destinataires des mails d'alertes : touch /etc/snort/recipients vim /etc/snort/recipients Collez ceci: #/etc/snort/recipients #Destinataires des alertes de priorit 1 de Snort snort@toto.fr On dite maintenant le fichier /etc/init.d/rc.local pour relancer snort et swatch chaque redemarrage automatiquement : Nous allons ajouter les lignes suivantes la fin de la fonction do_start() : #Demarrage de snort snort -u snort -A full -l /var/log/snort -c /etc/snort/snort.conf #demarrage de Swatch (alertes mails de snort) /home/swatch/swatch-3.2.3/swatch -c /home/swatch/swatch-3.2.3/.swatchrc -t /var/log/snort/alert Vous obtenez normalement ceci : (Le contenu du dbut de la function do_start peut changer) do_start() { if [ -x /etc/rc.local ]; then [ "$VERBOSE" != no ] && log_begin_msg Running local boot scripts (/etc/rc.local) /etc/rc.local ES=$[ "$VERBOSE" != no ] && log_end_msg $ES return $ES fi #Demarrage de snort snort -u snort -A full -l /var/log/snort -c /etc/snort/snort.conf #demarrage de Swatch (alertes mails de snort) /home/swatch/swatch-3.2.3/swatch -c /home/swatch/swatch-3.2.3/.swatchrc -t /var/log/snort/alert

} Nous allons maintenant dmarrer snort (si ce n'tait dj fait) : snort -u snort -A full -l /var/log/snort -c /etc/snort/snort.conf Nous dmarrons snort avec l'utilisateur snort, avec un niveau d'alerte FULL dans /var/log/snort et le fichier de configuration /etc/snort/snort/conf. Pour information : Ses quatre niveaux d'alertes sont : -A fast : mode dalerte rapide, affiche lalerte dans un format simple avec lhoraire, le message dalerte, les adresses IP et les ports sources et destinations -A full : cest aussi le mode dalerte par dfaut, donc si vous ne spcifiez rien ceci sera automatiquement utilis -A unsock : envoie les alertes une socket UNIX quun autre programme peut couter -A none : arrte les alertes On peut maintenant dmarrer Swatch ! /home/swatch/swatch-3.2.3/swatch -c /home/swatch/swatch3.2.3/.swatchr -t /var/log/snort/alert Cette ligne dmarre le script Swatch, avec la configuration de .swatchrc, et lis le fichier de log /var/log/snort/alert en mode tail; donc ds qu'une alerte est crite dans ce fichier, Swatch envoi un mail. Vous avez maintenant lIDS Snort qui tourne, ainsi que Swatch qui parse les logs de snort et vous envoi des alertes !atch qui parse les logs de snort et vous envoi des alertes !