470 likes | 1.02k Views
Snort. Présentation : Franck OLLIVE. Introduction. Auteur : Martin Roesh (21.12.1998). Système de détection d'intrusion réseau (NIDS). Version actuelle 1.5.2. Logiciel libre de droit. Taille des sources faibles. Portable sur plusieurs types de plateformes.
E N D
Snort Présentation : Franck OLLIVE
Introduction • Auteur : Martin Roesh (21.12.1998) • Système de détection d'intrusion réseau (NIDS) • 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 • IP _ TCP _ UDP _ ICMP • Détection au niveau des protocoles : • 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 • . . .
Processeur O.S. Portabilité Source : www.clark.net
Procédure d'installation (1) • http://www.clark.net/~roesch/security.html • Obtention du logiciel
Procédure d'installation (2) • tar xzvf snort-1.5.2.tar.gz • cd snort-1.5.2 • Compilation • ./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) Alert tcp any any -> 192.16.1.0/24 any (flags:SF; msg:"Possi. SYN FIN scan";) • Exemple de règle • 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
En-tête de règle (suite) Écriture de règles (3) • 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 • 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) • 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) • 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) • Réalisation des tests sous redhat 6.2 et slackware 7 • Machines utilisées : • Implantation • 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) Internet • Schéma d'implantation 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) • Le fichier alert (-d) • Un fichier spécifique par attaque (logto) • Enregitrement des logs • 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) • Un fichier par type d'"attaque" • Les logs (suite)
port source port dest date heure @IP source @IP dest protocole n°d'ordre d’acquittement en hexadécimal drapeaux type de service n°séquence en hexadécimal temps de vie restant n°d'ordre d'identification du paquet Résultat (3) • Visualisation des fichiers de log • Les logs (suite) Règle : alert TCP any any -> $MY_NET any (msg:"NMAP TCP ping !"; flags: A; ack: 0;)
Ne fait pas tout, mais le fait correctement Avantages • 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, ...
Ne détecte pas tout Inconvénients • Nécessite une veille technologique pour la mise à jour des règles • Pas d'interface graphique • 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 • majordomo@bofh.kyrnet.kg • Mailing list • Sites miroirs • 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 • 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