Snort Présentation : Franck OLLIVE
Introduction Système de détection d'intrusion réseau (NIDS) Auteur : Martin Roesh (21.12.1998) Version actuelle 1.5.2 Logiciel libre de droit Taille des sources faibles Portable sur plusieurs types de plateformes Installation et configuration simples Détection en temps réel et puissante
Fonctionnalités Détection au niveau des protocoles : IP _ TCP _ UDP _ ICMP Détection d'activités anormales Stealth scan _ Découverte d'empreinte d'OS Code ICMP "invalide" _ . . . Pré-processeur HTTP (attaque CGI) Détection des petits fragments Détection de dénis de service Détection de débordement de buffer . . .
Portabilité Processeur O.S. Source : www.clark.net
Procédure d'installation (1) Obtention du logiciel http://www.clark.net/~roesch/security.html
Procédure d'installation (2) Compilation tar xzvf snort-1.5.2.tar.gz cd snort-1.5.2 ./configure Vérifier que la librairie libpcap est présente ftp:/ftp.ee.lbl.gov/libpcap.tar.Z make Installation mkdir /tmp/monrep cp snort /tmp/monrep strip /tmp/monrep/snort cp *.lib /tmp/monrep/
Procédure d'installation (3) Visualisation du répertoire Configuration Modification du fichier de configuration "preprocessor http_decode: 80 443 8080" "var MY_NET 193.51.138.0/24" Lancement avec la base standard ./snort <-option>
Écriture de règles (1) Langage de description simple et facile à utiliser Une règle doit être impérativement écrite sur une seule ligne La combinaison de règles est autorisée Variables de substitutions acceptées Possibilité de faire référence à des fichiers de règles séparés
Écriture de règles (2) Exemple de règle En-tête de règle Alert tcp any any -> 192.16.1.0/24 any (flags:SF; msg:"Possi. SYN FIN scan";) En-tête de règle Alert tcp any any -> 192.168.1.0/24 any Action de la règle alert log pass Le protocole tcp udp icmp
Écriture de règles (3) En-tête de règle (suite) L'adresse source et destination alert tcp any any -> 192.168.1.0/24 any any Adresse IP suivi de l'espace d'adressage 193.51.138.0/24 Opérateur de négation "!" !193.51.138.0/24 Pas de mécanisme par nom de domaine Le port source et destination alert tcp any any -> 192.168.1.0/24 any any Port spécifique Gamme de port avec ":" 1:1024 Opérateur de négation "!" !6000:6010
Écriture de règles (4) Opérateur de direction Options de règles Indique l'orientation du trafic auquel la règle s'applique Unidirectionnel "->" log udp any any -> 194.78.45.0/24 any Bidirectionnel "<>" log 193.51.138.0/24 any <> 194.78.45.0/24 any Options de règles (flags:SF; msg:"Possible SYN FIN scan";) Cœur du moteur de détection d'intrusion Combinaison de règles séparées par ";" Séparation du mot clé et de l'argument par ":"
Écriture de règles (5) Options de règles (suite) Règles avancées msg, logto, minfrag, ttl, id, dsize, content, offset, depth, flags, seq, ack, itype, idecode, nocase, session "minfrag" fixe un seuil de taille minimum pour un paquet fragmenté. "content" permet de rechercher un contenu spécifique dans le payload. (content:"|0909090909090909|"; msg: SMTP exploit.";) Règles avancées Variables de substitutions "var MY_NET 192.168.1.0/24"
Écriture de règles (6) Règles avancées (suite) Ou trouver des règles Inclusion de fichiers de règles externes. "include:<chemin et nom de fichier>" Ou trouver des règles http://www.whitehats.com http://www.snort.rapidnet.com http://www.xanadu.rem.cmu.edu http://www.incident.org/snortdb http://www.spyjurenet.com/linuxrc.org/projects/snort
Test (1) Implantation Réalisation des tests sous redhat 6.2 et slackware 7 Machines utilisées : 486 DX2 66 - DD 820 Mo - 40 Mo RAM Pentium II - 120 MHz - DD 6 Go - 64 Mo RAM Pentium III - 500 MHz - DD 8 Go - 128 Mo RAM 860 règles Méthode d'analyse : Je prends le maximum de règles, je regarde ce qui remonte dans les logs et j'affine Débit théorique des lignes de test : 10 Mb/s et 100 Mb/s (34 Mb/s)
Test (2) Schéma d'implantation Internet DMZ CAMPUS PRESIDENCE F.H. 34 Mb/s Snort Real Secure DMZ Snort Snort Net Ranger CAMPUS PRESIDENCE 100 Mb/s Real Secure 34 Mb/s
Résultat (1) Enregitrement des logs Le fichier alert (-d) Un fichier spécifique par attaque (logto) Un répertoire spécifique (-l) Le répertoire /var/log/snort (-s) L'enregistrement dans un répertoire s'effectue par adresse IP de machines sources et/ou destinations
Résultat (2) Les logs (suite) Un fichier par type d'"attaque"
n°d'ordre d'identification Résultat (3) Les logs (suite) Visualisation des fichiers de log Règle : alert TCP any any -> $MY_NET any (msg:"NMAP TCP ping !"; flags: A; ack: 0;) port source port dest date heure @IP source @IP dest protocole temps de vie restant type de service n°d'ordre d'identification du paquet drapeaux n°d'ordre d’acquittement en hexadécimal n°séquence en hexadécimal
Avantages Ne fait pas tout, mais le fait correctement N'engendre pas de ralentissement du trafic Simplicité d'écriture des règles Nombre de règles conséquent Logiciel libre Peu onéreux Source et signatures accessibles ... Adaptation à un contexte spécifique Installation simple et rapide Taille de l'exécutable faible (420 Ko) Portable, ...
Inconvénients Ne détecte pas tout Pas d'interface graphique Nécessite une veille technologique pour la mise à jour des règles Lecture des logs (snortlog, snortstat, logsurfer ...) Pas d’édition de rapport Écriture des règles gourmandes en temps Vérification de la véracité des règles Pas de possibilité de mettre plusieurs adresses IP dans la variable globale "MY_NET". Pas de description des vulnérabilités Majuscule et minuscule
Références Mailing list Sites miroirs majordomo@bofh.kyrnet.kg ftp://the.wiretapped.net/pub/security/network-intrusion-detection/snort http://gd.tuwien.ac.at/infosys/security/snort ftp://gd.tuwien.ac.at/infosys/security/snort http://snort.safenetworks.com http://snort.whitehats.com http://www.centus.com/snort/security.html
Le futur de Snort La version 1.6 vient de sortir et la version 2 est en prévision Prise en compte de nouveaux protocoles ARP IGRP OSPF . . . Gestion de la fragmentation Ré-assemblage Recouvrement . . .
Conclusion (1) Snort est bien adapté pour un petit réseau ou pour des actions ciblées. Pour les réseaux plus important, la version testée (1.5.2) peut être utilisée comme appoint d’une version commerciale. Pas de pression marketing => Ce que fait Snort est bien fait. (pré-processeur). La version 2 devrait permettre à Snort d'entrer dans la cour des grands IDS.
Conclusion (2) Snort : sur certains serveurs de production et en utilisation ponctuelle sur des problèmes spécifiques Real secure : un en entrée de réseau et un en interne Internet Real Secure DMZ Real Secure Snort en détection ponctuelle Réseau sécurisé Snort sur un serveur de production
Bibliographie Contacts Http://www.hsc.fr/ressources/présentations/ids-free par Stéphane Aubert Http://www.clarl.net/~roesch/security.html Contacts franck.ollive@univ-poitiers.fr christophe.quintard@univ-poitiers.fr