/* $Id: USAGE,v 1.3 2000/12/30 07:02:17 roesch Exp $ */ Comment utiliser Snort par Martin Roesch 1.0 GETTING STARTED Snort est réellement très peu difficile à utiliser, mais il y a de nombreuses options sur la ligne de commande avec lesquelles jouer, et il n'est pas toujours évident lesquels vont bien ensemble. Ce fichier a l'intention de rendre l'utilisation de Snort plus facile aux nouveaux utilisateurs. Avant que nous ne commencions, il y a quelques concepts de base que vous devez comprendre à propos de Snort. Il y a trois modes principaux dans lesquels Snort peu être configuré : sniffer (ndt : renifleur réseau), enregistreur de paquets, et système de détection d'intrusion réseau. Le mode sniffer lit simplement les paquets sur le réseau et les affiche pour vous dans un flux continu sur la console. Le mode de journalisation de paquets enregistre les paquets sur le disque. Le mode de détection d'intrusion réseau est la configuration la plus complexe et la plus configurable, permettant à Snort d'analyser le trafic réseau pour les correspondances par rapport à un ensemble de règles définies par l'utilisateur et effectue plusieurs actions basées sur ce qu'il voit. 2.0 SNIFFER MODE Premièrement, commençons avec l'essentiel. Si vous voulez juste imprimer les entêtes des paquets TCP/IP à l'écran (i.e. mode sniffer), essayez ceci : ./snort -v Cette commande va exécuter Snort et juste montrer les entêtes IP et TCP/UDP/ICMP, rien d'autre. Si vous voulez voir les données applicatives en transit, essayez ce qui suit : ./snort -vd Ceci charge Snort d'afficher du paquet les données aussi bien que les entêtes. Si vous voulez un affichage encore plus descriptif, montrant les entêtes du niveau des liaisons de données faites ceci : ./snort -vde (A côté de cela, ces options peuvent être séparées ou regroupées ensembles dans n'importe quelle combinaison. La dernière commande pouvait aussi être tapée comme : ./snort -d -v -e et elle aurait fait la même chose.) 3.0 PACKET LOGGER MODE OK, toutes ces commandes sont plutôt cool, mais si vous voulez enregistrer les paquets sur le disque, vous avez besoin de spécifier un répertoire de journalisation et Snort connaîtra automatiquement qu'il doit aller en mode d'enregistrement de paquets : ./snort -dev -l ./log Bien sûr, ceci assume que vous ayez un répertoire nommé "log" dans le répertoire courant. Si vous n'en avez pas, Snort sortira avec un message d'erreur. Quand Snort tourne dans ce mode, il collecte chaque paquet qu'il voit et les place dans une hiérarchie de répertoires basée sur l'une des adresses IP des systèmes dans le datagram. Si vous spécifiez juste une simple option "-l", vous pouvez noter que Snort utilise quelques fois l'adresse de l'ordinateur distant comme répertoire où il place les paquets, et quelques fois il utilise l'adresse du système local. Afin de journaliser relativement au réseau local, vous avez besoin de dire à Snort quel réseau est le réseau local : ./snort -dev -l ./log -h 192.168.1.0/24 Cette règle dit à Snort que vous voulez imprimer les entêtes de liaison de données et TCP/IP aussi bien que les données applicatives dans le répertoire ./log, et que vous voulez journaliser les paquets relativement au réseau de classe C 192.168.1.0 . Tous les paquets entrants seront enregistrés dans des sous répertoires du répertoire log, avec les noms de répertoires basés sur l'adresse du système distant (non-192.168.1). Notez que si les deux systèmes sont dans le réseau local, alors ils sont enregistrés suivant le plus haut des deux numéros de ports, ou en cas d'égalité, l'adresse source. Si vous êtes dans un réseau à haut débit ou si vous voulez journaliser les paquets dans un format plus compact pour analyse postérieure vous devriez considérer la journalisation en "mode binaire". Le mode binaire enregistre les paquets au "format tcpdump" dans un seul fichier binaire dans le répertoire de journalisation : ./snort -l ./log -b Notez que la ligne de commande change ici. Nous n'avons plus besoin de spécifier un réseau local parce que le mode binaire journalise tout dans un seul fichier, ce qui élimine le besoin de dire comment formater la structure des répertoires de sortie. De plus vous n'avez pas besoin de fonctionner en mode verbeux ou de spécifier les options -d ou -e parce qu'en mode binaire le paquet entier est enregistré, pas juste des sections de celui-ci. Tout ce qui est réellement requis pour placer Snort en mode d'enregistrement est la spécification d'un répertoire de journalisation sur la ligne de commande avec l'option -l, l'option -b de journalisation binaire fournit un modificateur pour dire d'enregistrer les paquets dans quelque chose d'autre que le format de sortie par défaut qui est du texte ASCII simple. Une fois que les paquets ont été enregistrés vers le fichier binaire, vous pouvez relire les paquets depuis le fichier avec n'importe quel sniffer qui supporte le format binaire tcpdump tel que tcpdump ou Ethereal. Snort peut également relire les paquets en utilisant l'option -r, qui le met dans le mode de relecture. Les paquets de n'importe quel fichier au format tcpdump peuvent être traités dans n'importe lequel de ses modes d'exécution. Par exemple, si vous voulez traiter un fichier de journalisation binaire au travers de Snort en mode sniffer pour imprimer les paquets à l'écran, vous pouvez essayer quelque chose comme ceci : ./snort -dv -r packet.log Vous pouvez manipuler les données dans le fichier d'un certain nombre de façons au travers des mode d'enregistrement et de détection d'intrusion de Snort, aussi bien qu'avec les interfaces BPF qui sont disponibles depuis la ligne de commande. Par exemple, si vous voulez seulement voir les paquets ICMP du fichier de journalisation, spécifiez simplement un filtre BPF sur la ligne de commande et Snort "verra" seulement les paquets ICMP dans le fichier : ./snort -dvr packet.log icmp Pour plus d'informations sur comment utiliser l'interface BPF, lisez la page de manuel. 4.0 NETWORK INTRUSION DETECTION MODE Pour activer le mode de détection d'intrusion réseau (NIDS) (ainsi vous n'enregistrez pas chaque paquet envoyé sur le réseau), essayez ceci : ./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf Où snort.conf est le nom de votre fichier de règles. Ceci appliquera l'ensemble des règles du fichier snort.conf à chaque paquet pour décider si une action basée sur le type de règle dans le fichier doit être prise. Si vous ne spécifiez pas un répertoire de sortie pour le programme, ce sera par défaut /var/log/snort. Une chose à noter à propos de la dernière ligne de commande est que si Snort va être utilisé d'une façon à long terme comme un IDS, l'option "-v" devrait être supprimée pour le bien de la vitesse. L'écran est un endroit lent où écrire des données, et des paquets peuvent être ignorés pendant l'écriture sur l'écran. Il est également non nécessaire d'enregistrer les entêtes de liaison de données pour les applications systèmes, donc il n'est pas nécessaire de spécifier l'option -e non plus. ./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf Ceci configurera Snort pour fonctionner dans sa forme NIDS la plus basique, enregistrant les paquets que les règles disent en ASCII simple dans un structure hiérarchique de répertoires (juste comme le mode d'enregistrement de paquets). 4.1 NIDS MODE OUTPUT OPTIONS Il y a nombre de façons de configurer la sortie de Snort en mode NIDS. Les mécanismes par défaut de journalisation et d'alerte sont d'enregistrer au format ASCII décodé et d'utiliser les alertes au niveau "full" (ndt : complet). Le mécanisme d'alerte "full" imprime le message d'alerte en plus des entêtes complètes des paquets. Il y a plusieurs autres modes de sortie d'alertes accessibles depuis la ligne de commande, ainsi que deux facilités de journalisation. Les paquets peuvent être journalisés dans leur format ASCII décodé par défaut ou dans un fichier journal binaire via l'option -b de la ligne de commande. Si vous souhaitez désactiver la journalisation de paquets, utilisez l'option -N de la ligne de commande. Les modes d'alerte sont quelque peu plus complexes. Il y a six modes d'alerte disponibles sur la ligne de commande, full, fast (ndt : rapide), socket, syslog, smb (winpopup), et none (ndt : aucun). Quatre de ces modes sont accédés avec l'option -A de la ligne de commande. Les quatre options sont : -A fast - mode d'alerte rapide, affiche l'alerte dans un format simple avec l'horaire, le message d'alerte, les adresses IP et les ports sources et destinations -A full - c'est aussi le mode d'alerte par défaut, donc si vous ne spécifiez rien ceci sera automatiquement utilisé -A unsock - envoie les alertes à une socket UNIX qu'un autre programme peut écouter -A none - arrête les alertes Pour envoyer les alertes à syslog, utilisez l'option -s. Les facilités par défaut du mécanisme d'alerte par syslog sont LOG_AUTHPRIV et LOG_ALERT. Si vous voulez configurer d'autres facilités pour la sortie syslog, utilisez les directives du plugin "output" dans le fichier de règles (voir le fichier snort.conf pour plus d'informations). Finalement, il y a le mécanisme d'alerte SMB. Ceci permet à Snort de faire des appels à smbclient qui est fourni avec Samba et envoie des messages d'alerte WinPopup à des machines Windows. Pour utiliser ce mode d'alerte, vous devez configurer Snort pour l'utiliser au moment de la configuration avec l'option --enable-smbalerts . Voici quelques sorties d'exemples de configuration : 1) Journaliser avec le moyen par défaut (ASCII décodé) et envoyer les alertes à syslog ./snort -c snort.conf -l ./log -s -h 192.168.1.0/24 2) Journaliser avec le moyen par défaut dans /var/log/snort et envoyer les alertes à un fichier d'alerte rapide : ./snort -c snort.conf -s -h 192.168.1.0/24 3) Journaliser vers un fichier binaire et envoyer les alertes à une station Windows : ./snort -c snort.conf -b -M WORKSTATIONS 4.2 PERFORMANCE CONFIGURATION Si vous voulez que Snort aille vite (comme tenir sur un réseau rapide à 100Mbps) utilisez les options "-b" et "-A fast" ou "-s" (syslog). Ceci journalisera les paquets au format tcpdump et produira un minimum d'alertes. Par exemple : ./snort -b -A fast -c snort-lib Dans cette configuration, Snort a été capable de journaliser de multiples scans et attaques simultanés sur un LAN à 100 Mbps tournant à un niveau de saturation d'approximativement 80 Mbps. Dans cette configuration les journaux sont écrits au format binaire vers le fichier snort.log dans le format tcpdump. Pour relire ce fichier et éclater les données dans le format Snort familier, exécuter juste à nouveau Snort sur le fichier de données avec l'option "-r" et les autres options que vous utiliseriez normalement. Par exemple : ./snort -d -c snort-lib -l ./log -h 192.168.1.0/24 -r snort.log Une fois que ceci a été exécuté, toutes les données seront situées dans le répertoire de journalisation dans son format décodé normal. Cool, hein? 4.3 OTHER STUFF Quelques personnes n'aiment pas la façon par défaut par laquelle Snort applique ses règles aux paquets, avec les règles Alert appliquées d'abord, puis les règles Pass, et finalement les règles Log. Cette séquence est quelque peu contre-intuitive, mais c'est une méthode bien plus infaillible que d'autoriser l'utilisateur d'écrire une centaine de règles alert et de toutes les désactiver avec une règle pass errante. Pour les personnes qui savent ce qu'ils font, l'option "-o" est fournie pour changer le comportement par défaut d'application de règles à règles Pass, puis Alert, puis Log : ./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf -o 5.0 MISCELLANEOUS STUFF Si vous souhaitez exécuter Snort en mode "daemon" (ndt : démon), vous pouvez ajouter l'option -D à toute combinaison au-dessus. Merci de NOTER que si vous voulez être capables de redémarrer Snort en envoyant le signal SIGHUP au démon, vous aurez besoin d'utiliser le chemin complet au binaire snort, quand vous le lancez, e.g. : /usr/local/bin/snort -d -h 192.168.1.0/24 -l /var/log/snortlogs -c /usr/local/etc/snort-lib -s -D Les chemins relatifs ne sont pas supportés dûs à des considérations de sécurité. Si vous allez poster des enregistrements de paquets à des mailing listes publiques vous pouvez vouloir essayer l'option -O. Cette option "obscurci" les adresses IP dans les impressions de paquets. C'est pratique si vous ne voulez pas que les gens sur la mailing liste connaissent les adresses IP impliquées. Vous pouvez aussi combiner l'option -O avec l'option -h pour n'obscurcir que les adresses IP des systèmes sur le réseau local. C'est utile si vous ne faites pas attention à qui voit les adresses IP des systèmes attaquant. Par exemple : ./snort -d -v -r snort.log -O -h 192.168.1.0/24 Ceci lira les paquets depuis un fichier journal et affichera les paquets à l'écran, en obscurcissant seulement les adresses du réseau de classe C 192.168.1.0/24 . Bien, c'est tout pour maintenant. Si vous avez d'autres questions à propos de l'utilisation de Snort, envoyez moi un e-mail à roesch@clark.net