<!DOCTYPE linuxdoc
               PUBLIC "-//LinuxDoc//DTD LinuxDoc 96//EN" >

<article>

<title>snort Foire Aux Questions Version 1.7
<author>version originale par Dragos Ruiu &lt;dr@kyx.net&gt; &nl; traduction française par Denis Ducamp &lt;Denis.Ducamp@groar.org&gt;
<date>24 mai 2001 / 30 juin 2001 v1.7.5

<toc>

<sect>Comment prononcez-vous les noms de certains de ces mecs qui travaillent sur snort ?

<p>Pour mémoire, 'Roesch' est prononcé comme 'fresh' sans le 'f'. De plus,
'Ruiu' est prononcé comme 'screw you' sans le 'sc'. Et le nom de Jed est
comme "pick-el", non pas "pickle". :)

<sect>Fyodor Yarochkin est-il le même Fyodor qui a écrit nmap ?

<p>Non. fyodor@insecure.org est l'auteur de nmap, et il utilise le même
pseudonyme que l'autre Fyodor de snort dont c'est son vrai nom de famille.
Oui, cela met en désordre ma boite à lettre aussi, mais je pense qu'il est
trop tard pour changer l'un ou l'autre :-).

<sect>Comment est-ce que j'exécute snort ?

<p>Exécutez snort en mode sniffer (snort -dvi eth0) et soyez sûr qu'il peut
voir les paquets. Puis exécutez le avec HOME_NET fixé de façon appropriée
pour le réseau que vous défendez dans votre fichier de règles. Un fichier de
règles par défaut vient avec la distribution de snort et est appelé
"snort.conf" Vous pouvez exécuter cet ensemble basique de règles avec la
ligne de commande suivante :

<verb>        snort -Afull -c snort.conf
</verb>

<p>S'il est configuré correctement, une fois qu'il s'exécute faites un
"ifconfig -a" et soyez sûr que l'interface est en mode promiscuous (cela
dit, ceci dans la section options des impressions). Si ce n'est pas le cas,
il devrait y avoir une façon de le fixer manuellement.

<sect>Où sont localisés mes fichiers journaux ? Comment sont-ils nommés ?

<p>Si vous avez spécifié un répertoire de journalisation avec le paramètre
-l alors c'est là où sont localisés vos fichiers. Si vous n'avez pas
spécifié de répertoire de journalisation, alors Snort va journaliser dans
/var/log/snort/ .

<p>Dans le passé, exécuter Snort en mode démon (-D) produisait un fichier
nommé "snort.alert". Pour des raisons de cohérence, ceci a été changé.
Exécuter Snort en modes standard ou démon (-D) produira un fichier nommé
"alert".

<sect>Où est une bonne place pour physiquement mettre une sonde Snort ?

<p>Ceci sera fortement influencé par la politique de votre entreprise, et ce
que vous voulez détecter. Une façon de voir est de déterminer si vous voulez
le placer à l'intérieur ou à l'extérieur de votre firewall. Placer un IDS à
l'extérieur de votre firewall vous permettra de surveiller toutes les
attaques dirigées vers votre réseau, sans tenir compte si elles sont
stoppées par le firewall ou non. Ceci signifie certainement que l'IDS va
remonter plus d'alertes qu'un IDS à l'intérieur de votre firewall et donc
plus de journaux seront générés. Placez un IDS à l'intérieur de votre
firewall si vous êtes intéressés seulement par la surveillance du trafic que
votre firewall laisse passer. Si les ressources le permettent, il peut être
mieux de placer un IDS à l'intérieur et un IDS à l'extérieur de votre
firewall. De cette façon vous pouvez regarder tout ce qui est dirigé vers
votre réseau, et tout ce qui a pu pénétrer à l'intérieur.

<sect>Je suis sur un réseau commuté, puis-je toujours utiliser Snort ?

<p>Ceci dépend du type de commutateur que vous avez. S'il peut dupliquer le
trafic, vous pouvez le diriger vers le port où est branché votre boite
Snort.

<sect>J'obtiens de grandes quantités de &lt;certains types d'alertes&gt; . Que dois-je faire ? Où puis-je aller pour en trouver plus à ce propos ?

<p>Quelques règles ont plus tendance à produire de faux positifs que
d'autres. Ceci varie souvent entre les réseaux. Vous avez d'abord besoin de
déterminer si c'est en effet un faux positif. Quelques règles sont
référencées avec des numéros ID. Ce qui suit sont quelques systèmes communs
d'identification, et où aller trouver plus d'informations à propos d'une
alerte particulière.

<verb>System      Example        URL
---------------------------------------------------------------
IDS         IDS182         http://www.whitehats.com/info/IDS182
CVE         CVE-2000-0138  http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2000-0138
Bugtraq     BugtraqID 1    http://www.securityfocus.com/vdb/bottom.html?vid=1
McAfee      Mcafee 10225   http://vil.nai.com/vil/dispVirus.asp?virus_k=10225
</verb>

<p>Il peut être nécessaire d'examiner la charge des paquets pour déterminer
si l'alerte est un faux positif. La charge du paquet est journalisée en
utilisant l'option -d. Si vous déterminez que les alertes sont des faux
positifs, vous pouvez vouloir écrire une règle "pass" pour les machines qui
en produisent un grand nombre. Si la règle produit une quantité ingérable de
faux positifs de nombre de machines différentes, vous pourriez positionner
la règle en "pass" pour tout le trafic. Ceci ne doit être utilisé qu'en
dernier recours.

<sect>Qu'est ce qu'il y a à propos de toutes ces fausses alarmes ?

<p>Beaucoup pensent qu'une pile de faux positifs est infiniment préférable.
Ensuite les personnes peuvent désactiver ce qu'elles ne veulent pas.
L'inverse, avoir un petit ensemble de règles, peut leurrer les personnes
dans une autosatisfaction en pensant que Snort joue son rôle et qu'il n'y a
pas de raison de s'en faire.

<sect>Qu'est ce que tous ces fichier ICMP dans les sous répertoires sous /var/log/snort ?

<p>La plupart d'entre eux sont certainement des "destination unreachable" et
des "port unreachable" qui ont été détectés par snort quand une tentative
de session de communication a échoué.

<sect>Mon réseau couvre plusieurs sous-réseaux. Comment est-ce que je défini HOME_NET ?

<p>Snort 1.7 supporte les listes IP. Vous pouvez assigner plusieurs adresses
à une seule variable. Par exemple :

<verb>        var HOME_NET &lsqb;10.1.1.0/24,192.168.1.0/24&rsqb;
</verb>

<p>NOTE : tous les préprocesseurs ne supportent pas les listes IP
actuellement. Sauf indication contraire, assumez que tout préprocesseur
utilisant une variable contenant une liste IP n'utilisera que la première
valeur comme réseau local. Le préprocesseur portscan (ndt : de scans de
ports) est un exemple. Pour attraper tous les scans de ports détectables,
utilisez 0.0.0.0/0 comme premier paramètre.

<verb>        preprocessor portscan: 0.0.0.0/0 5 3 portscan.log
</verb>

<p>Utilisez le préprocesseur portscan-ignorehosts pour régler finement et
ignorer le trafic des machines de confiance et bruyantes.

<sect>J'ai une carte réseau et deux alias, comment puis-je forcer snort à "écouter" sur les deux adresses ?

<p>Si vous utilisez au moins la version 1.7, vous pouvez spécifier une
liste IP comme ceci :

<verb>        var HOME_NET &lsqb;192.168.&lt;your-IP&gt;/24,&lt;Internet address&gt;/32&rsqb;
</verb>

<p>Si vous utilisez quelque chose de plus ancien (version 1.6.3-patch2 ou
quoi que ce soit d'autre) vous pouvez re-spécifier la variable HOME_NET
plusieurs fois comme ceci (par exemple) :

<verb>        var HOME_NET 10.1.1.0/24

        include scan-lib
        etc.

        var HOME_NET 192.168.1.0/24

        include scan-lib
        etc.
</verb>

<sect>Comment est-ce que j'ignore un trafic provenant d'un ou plusieurs systèmes particuliers ?

<p>Écrivez des règles "pass" et ajoutez le(s) système(s) à la liste
portscan-ignorehosts . Appelez snort avec l'option -o pour activer les
règles "pass". Voyez http://www.snort.org/writing_snort_rules.htm pour plus
d'informations.

<sect>Pourquoi le plugin "portscan" journalise-t'il les paquets "stealth" (ndt : furtifs) même si le système est dans la liste "portscan-ignorehosts" ?

<p>

<itemize>

<item>Ces types de paquets tcp sont suspicieux de façon inhérente, peu
importe d'où ils proviennent. Le détecteur de scans de ports a été construit
avec la supposition que les paquets furtifs doivent être reportés, même de
systèmes qui ne sont pas surveillés pour les scans de ports. Une options
pour ignorer les paquets "furtifs" devrait être ajoutée dans le futur.

<p>

<item>Monter l'interface sans adresse IP dessus.
&nl;Url: http://www.geocrawler.com/archives/3/4890/2000/9/0/4399696/

<p>

<item>Utilisez un "ethernet tap", ou construisez votre propre câble Ethernet
en 'réception seulement'
&nl;Url: http://www.robertgraham.com/pubs/sniffing-faq.html#receive-only

</itemize>

<sect>Pourquoi n'y a-t-il pas de sous-répertoire dans /var/log/snort pour les adresse IP ?

<p>Ça dépend de la configuration des journaux de snort. S'il journalise au
format binaire, vous devrez traiter les journaux binaires pour obtenir le
texte en clair.

<sect>Comment est-ce que j'exécute snort sur une interface dans adresse IP ?

<p>

<verb>        ifconfig ethN up
</verb>

<sect>Libpcap se plaint à propos de problèmes de permissions, qu'en est-il ?

<p>Soit vous n'exécutez pas snort en tant que root, soit votre noyau n'est
pas configuré correctement.

<sect>Pourquoi snort ce plaint-il à propos de /var/log/snort ?

<p>Il a besoin de ce répertoire pour y journaliser les alertes.
&nl;Utilisez: mkdir /var/log/snort

<sect>Comment est-ce que j'obtiens de snort qu'il ignore du trafic ?

<p>

<enum>

<item>Spécifiez des filtres bpf sur la ligne de commande, la page de manuel
de tcpdump ayant la description des filtres bpf.

<p>

<item>Utilisez une règle "pass"

<p>

<item>Le préprocesseur de scans possède sa propre liste d'exclusion avec la
directive 'portscan-ignorehosts' du fichier de règles.

</enum>

<sect>Pourquoi beaucoup de règles snort ont elles les drapeaux P (TCP PuSH) et A (TCP ACK) positionnés ?

<p>Une des raisons qu'il alerte sur les drapeaux PA est pour minimiser les
faux positifs. Vous n'obtiendrez une alerte que pour les connexions
réussies. Si vous voulez voir toutes les tentatives, vous devez soit
modifier les signatures, soit ajouter vos propres signatures ou soit
utiliser les journaux de votre firewall pour voir si une tentative à un port
spécifique a eu lieu.

<sect>Je pense que j'ai trouvé un bogue dans snort. Que faire ?

<p>Obtenez plus d'informations de diagnostic et postez les à "snort-users" à
http://www.sourceforge.net

<p>Pour obtenir des informations de diagnostic, compilez snort soit :

<verb>        make clean; make CFLAGS=-ggdb
</verb>

<p>soit :

<verb>        make clean; make "CFLAGS=-ggdb -DDEBUG"
</verb>

<p>Tracez le coredump ainsi :

<verb>        gdb /path/to/snort /path/to/snort/core

        gdb> where
        gdb> bt
        gdb> print $varname, varname, $$varname etc..
</verb>

<p>ou si le fichier core n'est pas généré alors snort devrait être démarré
ainsi :

<verb>        gdb snort

        gdb> run &lt;snort args without -D switch :-)&gt;
</verb>

<sect>Est-ce que snort gère la défragmentation IP ?

<p>Oui, utilisez "preprocessor defrag"

<p>Snort possède également l'option de règle "minfrag" qui cherche les
petits fragments et peut générer des alertes basées seulement sur la taille
des fragments. C'est une stratégie valide car il n'y a virtuellement aucun
équipement réseau de disponible qui fragmente les paquets plus petits que
256 octets alors que les programmes de hackers qui essayent de masquer leur
trafic avec des fragments les font aussi petits que possible. L'option
minfrag vous permet de spécifier la taille limite au dessous de laquelle
Snort générera des alertes.

<sect>Snort affiche "Garbage Packet with Null Pointer discarded!". Huh ?

<p>C'était un message de diagnostic interne déclenché par un ancien bogue
dans les premières versions du préprocesseur de défragmentation. Mettez à
jour vers la dernière version de snort.

<sect>J'ai RedHat et ....

<p>Vérifiez votre version de libpcap. :) Ci ce n'est pas &lt;= 0.5, alors
vous devriez mettre à jour.

<sect>Comment est-ce que je configure snort sur une interface 'furtive' ?

<p>

<itemize>

<item>Monter l'interface sans adresse IP dessus.
&nl;Url: http://www.geocrawler.com/archives/3/4890/2000/9/0/4399696/

<p>

<item>Utilisez un "ethernet tap", ou construisez votre propre câble Ethernet
en 'réception seulement'
&nl;Url: http://www.robertgraham.com/pubs/sniffing-faq.html#receive-only

</itemize>

<sect>Je veux construire une boite snort. Est-ce que &lt;Insérez une liste&gt; va supporter &lt;cette quantité&gt; de trafic ?

<p>Cela dépend ;-) Minimiser le nombre de règles est une augmentation
standard des performances. Désactivez les règles dont vous n'avez pas besoin
ou auxquelles vous n'apportez pas d'attention. Etc... Il y a eu beaucoup de
discussions sur 'tweaking performance' où de nombreux 'I handle XX mb with
a ___ machine setup.' (ndt : je supporte XX mb avec une configuration ___ de
machine.) ont été dits. Cherchez quelques une de ces discussions sur
snort-users

<sect>Qu'est-ce que les netmasks CIDR ?

<p>Extrait de l'url : http://public.pacbell.net/dedicated/cidr.html

<verb>CIDR is a new addressing scheme for the Internet which allows for more
efficient allocation of IP addresses than the old Class A, B, and C address
scheme.
CIDR Block Prefix # Equivalent Class C # of Host Addresses
/27 1/8th of a Class C 32 hosts
/26 1/4th of a Class C 64 hosts
/25 1/2 of a Class C 128 hosts
/24 1 Class C 256 hosts
/23 2 Class C 512 hosts
/22 4 Class C 1,024 hosts
/21 8 Class C 2,048 hosts
/20 16 Class C 4,096 hosts
/19 32 Class C 8,192 hosts
/18 64 Class C         16,384 hosts
/17 128 Class C 32,768 hosts
/16 256 Class C 65,536 hosts (= 1 Class B)
/15 512 Class C 131,072 hosts
/14 1,024 Class C 262,144 hosts
/13 2,048 Class C 524,288 hosts
</verb>

<p>Pour plus d'informations techniques détaillées sur les CIDR, allez sur
http://www.rfc-editor.org/rfcsearch.html et entrez le numéro du RFC sur les
CIDR qui vous intéresse :

<p>RFC 1517: Applicability Statement for the Implementation of CIDR
&nl;RFC 1518: An Architecture for IP Address Allocation with CIDR
&nl;RFC 1519: CIDR: An Address Assignment and Aggregation Strategy
&nl;RFC 1520: Exchanging Routing Information Across Provider Boundaries in the CIDR Environment

<sect>Où est-ce que j'obtiens le dernière version de libpcap ?

<p>http://www.tcpdump.org/

<sect>Qu'est ce que ces codes IDS dans les noms des alertes ?

<p>IDS signifie "Signature de Détection d'Intrusion" (vrai ?) et identifie
une tentative d'attaque connue. Vous pouvez en apprendre plus à propos d'une
id spécifique d'IDS sur le moteur de recherche d'arachNIDS sur
http://www.whitehats.com/ .

<sect>Snort affiche "BACKDOOR SIGNATURE"... est-ce que ma machine possède un cheval de Troie ?

<p>Si vous sauvegardez les parties données des paquets, passez les en revue.
Ces règles sont connues pour avoir de hauts taux de faux positifs puisque la
plupart d'entre elles sont juste basées sur des numéros de ports.

<sect>Quoi à propos de "CGI Null Byte attacks" ?

<p>C'est une partie du préprocesseur http. Typiquement, si la routine de
décodage trouve %00 dans une requête http, il alertera avec ce message.
Quelques fois, vous pouvez voir de faux positifs avec des sites qui
utilisent des cookies avec des données binaires encodées comme des url, ou
si vous scannez le port 443 et que vous obtenez du trafic chiffré SSL. Si
vous journalisez les paquets suspects, vous pouvez vérifier la chaîne exacte
qui a causé l'alerte. Également, l'alerte unicode est sujette aux mêmes faux
positifs avec les cookies et SSL. Avoir les sauvegardes des paquets est la
seule façon de dire de façon sûre si vous avez la trace d'une véritable
alerte entre les mains, mais ceci est vrai pour n'importe quelle alerte
basée sur le contenu.

<sect>Où puis-je obtenir plus de lectures et de cours à propos des IDS ?

<p>Sans a quelques cours. Il y a quelques livre que vous pourriez vouloir
obtenir.

<verb>        Network Intrusion Detection An Analyst's Handbook
        By Stephen Northcutt
        ISBN 0735708681

        TCP/IP Illustrated, Volume 1 The Protocols
        By W. Richard Stevens
        ISBN 0201633469
</verb>

<sect>Comment est-ce que je journalise vers plusieurs bases de données ?

<p>Vous pouvez construire de la redondance en utilisant plusieurs plugins
output (ndt : de sortie). Voici quelques exemples.

<p>Plusieurs instances du plugin d'une base de données :

<verb>        output database: log, mysql, dbname=snort host=localhost user=xyz
        output database: log, mysql, dbname=snort host=remote.loghost.com user=xyz
</verb>

<p>Base de données distante et tcpdump local :

<verb>        output database: log, mysql, dbname=snort host=remote.loghost.com user=xyz
        output log_tcpdump: /var/log/snort.tcpdump
</verb>

<p>Puis vous pouvez rejouer le fichier tcpdump au travers de snort pour
recréer la base de données.

<sect>Qu'est-ce que toutes ces alertes "ICMP destination unreachable" ?

<p>Ce sont des connexions échouées des paquets ICMP unreachable qui portent
les 64 premiers octets du datagramme original.

<sect>Pourquoi la compilation de snort se plaint avec "missing references" ?

<p>Vous devez installer libpcap avec l'option --install-incl

<sect>Pourquoi la compilation de snort échoue avec des erreurs à propos de yylex et lex_init ?

<p>Vous avez besoin que les outils lex et yacc ou leurs équivalents gnu flex
et bison soient installés.

<sect>Quelle est l'utilisation de l'option -r pour lire les fichiers tcpdump ?

<p>Utilisée en conjonction avec un fichier de règles snort, les données
tcpdump peuvent être analysées pour un contenu hostile, des scans de ports,
ou toutes autres choses pour lesquelles snort peut être utilisé pour les
détecter. Snort peut également afficher simplement les paquets dans leur
format décodé, que beaucoup de personnes trouvent plus facile à lire que la
sortie tcpdump.

<sect>Comment est-ce que j'obtiens de snort de journaliser la charge du paquet aussi bien que l'entête ?

<p>Utilisez l'option "-d" de la liste de commande.

<sect>Est-ce que snort journalise les paquets complets pour lesquels il génère des alertes ?

<p>Oui, ils devraient être dans le répertoire qui a la même adresse IP que
le système source du paquet qui a généré l'alerte.

<sect>Pourquoi le programme génère-t'il des alertes sur des paquets qui ont une règle "pass" ?

<p>L'ordre par défaut d'application des règles est d'abord alert, puis les
règles pass, puis les règles log. Cet ordre assure que vous n'écrivez pas 50
bonnes règles d'alertes et que vous ne les désactivez pas toutes avec une
règle pass errante. Si vous voulez réellement changer cet ordre de telle
sorte que les règles pass sont appliquées en premier, utilisez l'option "-o"
de la ligne de commande.

<sect>Est-ce que snort effectue du réassemblage de flux TCP ?

<p>Oui, cette fonctionnalité est en test BETA avec la version 1.7 .

<sect>Les alertes SMB ne fonctionnent pas, qu'est ce qui n'est pas bon ?

<p>Soyez sûr d'inclure "--enable-smbalerts" quand vous exécutez
"./configure" .

<sect>Comment puis-je tester snort sans avoir de carte Ethernet ou une connexion à un autre ordinateur ?

<p>Vous devez utiliser du routage entre deux interfaces dummy :

<verb>        modprobe -a dummy (The dummy device has to be build by the kernel) 

        ifconfig dummy0 192.168.0.1 

        ifconfig dummy0:0 192.168.0.2 

        telnet 192.168.0.3 12345
</verb>

<p>Il est important que la seconde IP soit sur la même interface et non pas,
par exemple, sur dummy1 ou dummy2 et que l'IP que vous essayez d'accéder
n'est *pas* une de celles que vous mettez sur les interfaces. Utilisez la
capacité de snort d'écouter en mode promiscuous sur un intervalle d'adresses
IP. (HOMEDIR=192.168.0.0/16)

<sect>J'ai des problèmes pour obtenir de snort de journaliser vers une base de données...

<p>Il y a eu quelques problèmes  avec les écritures de snort 1.6.3

<verb>   Lee wrote..
   > > Initializing rule chains...
   > > log_database: Database type is mysql
   > > log_database: Database name is snort
   > > log_database: Host set to localhost
   > > log_database: User set to root
   > > Problem obtaining SENSOR ID (sid) from mysql->snort->event
</verb>

<p>Dans la version 1.6.3, il apparaît que beaucoup de personnes ont vu
cette erreur parce qu'ils n'ont pas compilé le support pour leur base de
données. Ceci devrait être fixé dans snort 1.7

<p>Un "réparation" rapide et facile pour les versions snort plus anciennes
est d'ajouter -lm soit à LIBS soit à LDFLAGS dans les Makefile. e.g.

<verb>   LIBS = -lm -lmysqlclient -lpcap -lsocket -lnsl
</verb>

<p>De toutes façons, si vous avez toujours ce problème, vous pouvez regarder
les informations de mises à jours d'installation et de configuration sur le
site web suivant.

<verb>   http://www.incident.org/snortdb
</verb>

<sect>Où puis-je obtenir plus d'aide sur snort ?

<p>

<verb>   http://lists.sourceforge.net/mailman/listinfo/snort-users
</verb>

<sect>Comment démarrer snort comme un service win32 ?

<p>Le support service a été ajouté à snort-1.6.3-patch2

<p>Vous pouvez télécharger le binaire depuis :

<verb>   http://www.datanerds.net/~mike/dev/snort-1.6.3-patch2-service.zip
</verb>

<p>Actuellement il n'y a qu'un binaire accessible.

<p>FAQ du service Snort :

<enum>

<item>Vous devez utiliser les chemins complets pour tout. Ceci signifie
TOUT. Ligne de commande, fichiers de configuration, tout. Exemples : Toutes
les commandes include doivent être des chemins complets. I.E. 'include
scan-lib' est MAUVAIS. 'include C:\snort\scan-lib' est CORRECT. Toutes les
options de lignes de commande doivent être des chemins complets. I.E.
'snort.exe -l ./log' est MAUVAIS. 'snort.exe -l C:\snort\log' est CORRECT.

<p>

<item>VOUS DEVEZ TOUJOURS AVOIR UN REPERTOIRE DE JOURNALISATION VIA LA LIGNE
DE COMMANDE (option -l). Si vous ne fixez pas un répertoire de
journalisation le service ne démarrera pas et, sous NT/Win2k, votre
démarrage sera suspendu durant environ 4 minutes.

<p>

<item>Comment installer le service snort.

<p>Exécutez snort comme vous le feriez via la ligne de commande mais ajoutez
un '-I'. I.E. 'snort.exe -c snort.conf -l ./log -h 192.168.1.0/24 -s'
devient 'snort.exe -c C:\snort\snort.conf -l C:\snort\log -h 192.168.1.0/24
-s -I'

<p>VOUS DEVEZ UTILISER LES CHEMINS COMPLETS POUR TOUS LES FICHIERS /
REPERTOIRES.

<p>NOTE : Vous n'avez pas besoin d'ajouter l'option -D à la ligne de
commande quand vous installez le service. Si -D n'est pas là il sera
automatiquement ajouté.

<item>Comment supprimer le service snort.

<p>Exécutez 'snort -R'.

<item>Est-ce que le service fonctionne sous 9x/ME.

<p>Oui. Il utilise un horrible hack pour que ça marche. A cause de cela,
quand vous démarrez vous verrez une fenêtre noire de ligne de commande
pendant environ 5 secondes avant que snort aille en tâche de fond. Ce mode
de service est considéré comme un horrible hack et ne fonctionnera
probablement pas dans toutes les situations.

<item>Quelles fonctions sont supportées par le service NT.

<p>Actuellement Démarrer et Arrêter. Pause et Redémarrer seront implémentées
plus tard (le code existe déjà mais ne fonctionne pas proprement).

</enum>

<p>Merci d'envoyer toutes les questions, commentaires, flammes à
mike@datanerds.net

<sect>Comment est-ce que je transforme les journaux de snort en rapports HTML ?

<p>

<enum>

<item>Une solution populaire est SnortSnarf, un outil pour produire du HTML à
partir d'alertes snort pour naviguer au travers de ces alertes (et faire
bien plus).

<verb>    http://www.silicondefense.com/snortsnarf/
</verb>

<item>Si vous voulez configurer une journalisation vers une base de données,
vous pouvez essayer ACID. De la documentation décrivant les fonctionnalités
courantes de ACID est disponible à :

<verb>    http://www.andrew.cmu.edu/~rdanyliw/snort/snortacid.html
</verb>

</enum>

<sect>Pourquoi certaines alertes semblent avoir des adresses IP 'unknown' (ndt : inconnues) dans ACID ?

<p>Le plug-in de base de données de snort journalise seulement les
informations des paquets vers la base de données quand une alerte est
déclenchée par une règle (signature). Donc, puisque les alertes générées par
les préprocesseurs tels que portscan et mini-fragment n'ont pas de règle
correspondante, aucune information de paquets n'est journalisée au delà
d'une entrée indiquant leur occurrence. Comme une conséquence, ACID ne peut
afficher aucune information au niveau paquet (e.g. adresse IP) pour ces
alertes.

<p>Pour ces alertes particulières, certaines statistiques peuvent montrer
zéro adresse IP unique, lister les adresses IP comme 'unknown' (ndt :
inconnue), et ne listera aucune information de paquet en décodant l'alerte.

<sect>Pourquoi le message 'error deleting alert' (ndt : erreur en effaçant une alerte) se produit en essayant d'effacer une alerte avec ACID ?

<p>Très probablement que l'utilisateur DB configuré dans ACID n'a pas
suffisamment de privilèges. En plus des privilèges requis pour journaliser
les alertes vers une base de données (INSERT, SELECT), DELETE est également
requis.

<p>Ce problème lié aux permissions peut être confirmé manuellement en
insérant une ligne dans la base de données, puis en essayant de l'effacer.

<enum>

<item>se connecter à MySQL avec la même authentification (i.e. nom
d'utilisateur, mot de passe) que vous utilisez dans ACID.

<p>e.g. % mysql  -u  -p

<item>insérer une ligne de test dans la table event

<verb>   mysql> INSERT INTO event (sid, cid, signature, timestamp) VALUES (1,1000000, "test", "0");
</verb>

<p>(ceci assume que vous n'ayez pas déjà une ligne avec un événement
ID=1000000. Si c'est le cas choisissez un autre numéro d'identification
d'événement)

<item>maintenant, effacez cette ligne nouvellement insérée

<verb>   mysql> DELETE FROM event WHERE sid=1 AND cid=10000000;
</verb>

<p>Si vous n'avez pas été capable de l'effacer, ceci confirme que c'est un
problème de permission. Reconnectez vous à mysql en tant que root, et
entrez une commande GRANT (en donnant les permissions DELETE) pour
l'utilisateur DB de ACID.

<p>e.g. GRANT DELETE on snort.* to acid@localhost

<p>(ceci assume que ma base de données est 'snort', le nom d'utilisateur est
'acid', et les connexions depuis 'localhost')

</enum>

<sect>ACID parait être cassé dans Lynx

<p>C'est un problème connu.  Lynx mutile quelques arguments du formulaire
ajoutés à l'URL. Sa résolution est en cours d'investigation, mais utilisez
Netscape, Opera, ou IE en attendant.

<sect>Est-ce que des priorités peuvent être assignées à des alertes en utilisant ACID ?

<p>La réponse rapide à cette réponse est non. ACID est à la merci de la base
de données sous-jacente, puisque Snort n'assigne pas de priorités, ACID n'a
pas de priorités. Néanmoins, il y a plusieurs contournements :

<p>Il est possible d'appliquer des priorités de tri au niveau de la base de
données en écrivant les alertes de différentes sévérités pour séparer les
bases de données. Par exemple, les alertes critiques telles que les
débordements de tampons peuvent être écrites dans une base de données
d'ACID, alors que les alertes de scans peuvent être écrites dans une autre.
Charger alors deux différentes versions d'ACID, chacune pointant vers
différentes instances des bases de données.

<p>Avec des interventions manuelles, les Alert Groups (AG) peuvent être
utilisés pour assigner des priorités. Essentiellement, cette stratégie
implique la création d'un AG pour chaque niveau de priorité et le
déplacement manuel des alertes quand elles arrivent dans le groupe
approprié.

<sect>Mes connexions aux bases de données par ACID times-out en effectuant de longes opérations (e.g. effacer un grand nombre d'alertes)

<p>PHP a une variable interne fixée pour limiter la durée d'exécution d'un
script. Elle est utilisée pour prévenir du code mal écrit de s'exécuter
indéfiniment. Afin de modifier la valeur de time_out, examinez la variable
'max_execution_time' trouvée dans le fichier de configuration 'php.ini' .

<sect>Pourquoi est-ce que snort rapporte "Packet loss statistics are unavailable under Linux" (ndt : "les statistiques de paquets perdus ne sont pas disponibles sous Linux") ?

<p>La pile IP Linux ne rapporte pas les statistiques de paquets perdus. Ceci
peut varier avec la version 2.4 de Linux, mais pour l'instant vous ne pouvez
pas les obtenir. Essayez un des BSD, ils fonctionnent bien (ndt : à
l'exception de FreeLSD ;-)

<sect>Mais que diable est un scan SYNFIN ?

<p>Les scans SYNFIN obtiennent leurs noms du fait que les deux drapeaux SYN
et FIN sont positionnés ensembles.

<sect>Quoi à propos des alertes 'SMB Name Wildcard' ?

<p>Whitehats IDS177

<verb> http://dev.whitehats.com/cgi/test/new.pl/Show?_id=netbios-name-query
   spécifie le trafic venant de l'extérieur de votre réseau local. Autoriser
   le trafic netbios au travers de réseaux publics est habituellement très
   peu sécurisé.
</verb>

<p>Si la règle que vous utilisez ne se réfère seulement qu'au trafic
entrant, alors ceci devrait expliquer pourquoi vous ne voyez pas beaucoup de
faux positifs. Pour ceux qui lisent cela et qui voient beaucoup de faux
positifs - si vous changez votre règle pour refléter l'adresse source comme
étant !$HOME (ou quelleque soit la variable que vous utilisez pour
représenter votre réseau interne), alors vous devriez voir la plupart des
faux positifs s'en aller.

<p>La valeur de ce contrôle est qu'un partage administratif par défaut comme
C$ ADMIN$ ou un tel a été accédé. Ceci ne devrait pas arriver dans une
utilisation normale - quand des personnes veulent partager des fichiers
elles devraient définir implicitement les partages et les ACL (ndt : droits
d'accès).

<sect>Qu'est ce qui a priorité, la ligne de commande ou le fichier de règles ?

<p>La ligne de commande obtient toujours la priorité sur le fichier de
règles. Si des personnes veulent essayer quelques trucs rapidement sans
avoir à éditer manuellement les fichiers de règles, elles devraient être
capables de passer outre beaucoup de choses depuis la ligne de commande.

<sect>Mon répertoire /var/log/snort devient très grand.....

<p>Essayez ce script pour archiver les fichiers

<verb>#!/bin/sh
# 
# Logfile rotation script for snort writen by jameso@elwood.net.
# 
# This script is pretty basic. We start out by setting some vars.
# Its job is tho rotate the days logfiles, e-mail you with what 
# it logged, keep one weeks worth of uncompressed logs, and also
# keep compressed tgz files of all the logs. It is made to be run
# at midnight everynight. This script expects you to have a base
# dir that you keep all of your logs, rule sets etc in. You can 
# see what sub dirs it expects from looking at the var settings
# below.
# 
# Things to note in this script is that we run this script at 12 
# every night, so we want to set the dirdate var the day the script
# runs minus a day so we label the files with the correct day. We
# Then create a dir for the days logs, move the log files into 
# todays dir. As soon as that is done restart snort so we don't miss
# anything. Then delete any logs that are uncompressed and over a
# week old. Then compress out todays logs and archive them away, and
# end up by mailling out the logs to you.
#

# Define where you have the base of your snort install

snortbase=/usr/snort

# Define other vars
# logdir   - Where the logs are kept
# oldlogs  - Where you want the archived .tgz logs kept
# weeklogs - This is where you want to keep a weeks worth of log files uncompressed
# dirdate  - Todays Date in Month - Day - Year format
# olddirdate - Todays date in the same format as dirdate, minus a week

logdir=$snortbase/log
oldlogs=$snortbase/oldlogs
weeklogs=$snortbase/weeklogs

# When I first wrote this script, I only ran it on BSD systems. That was a
# mistake, as BSD systems have a date command that apperently lets you walk the
# date back pretty easily. Well, some systems don't have this feature, so I had
# to change the way that dates are done in here. I left in the old way, because
# it is cleaner, and I added in a new way that should be portable. If anyone
# has any problems, just let me know and I will try to fix it.
#
# You have to change the system var to either bsd or other. Set it to bsd if
# your system supports the "-v" flag. If you are not sure, set it to other.

system=bsd

if [ $system = bsd ]
then
 dirdate=`date -v -1d "+%m-%d-%y"`
 olddirdate=`date -v -8d "+%m-%d-%y"`
elif [ $system = other ]
 month=`date "+%m"`
 yesterday=`expr \`date "+%d"\` - 1`
 eightday=`expr \`date "+%d"\` - 8`
 year=`date "+%y"`
 dirdate=$month-$yesterday-$year
 olddirdate=$month-$eightday-$year
fi

# Create the Dir for todays logs.

if [ ! -d $weeklogs/$dirdate ]
then
 mkdir $weeklogs/$dirdate
fi

# Move the log files into todays log dir. This is done with
# a for loop right now, because I am afriad that if alot is
# logged there may be to many items to move with a "mv *"
# type command. There may a better way to do this, but I don't
# know it yet.

for logitem in `ls $logdir` ; do
 mv $logdir/$logitem $weeklogs/$dirdate
done

# Kill and restart snort now that the log files are moved.

kill `cat /var/run/snort_fxp0.pid`

# Restart snort in the correct way for you

/usr/local/bin/snort -i fxp0 -d -D -h homeiprange/28 -l /usr/snort/log \
-c /usr/snort/etc/08292k.rules > /dev/null 2>&1

# Delete any uncompressed log files that over a week old.

if [ -d $weeklogs/$olddirdate ]
then
 rm -r $weeklogs/$olddirdate
fi

# Compress and save the log files to save for as long as you want.
# This is done in a sub-shell because we change dirs, and I don't want 
# to do that within the shell that the script runs in.

(cd $weeklogs; tar zcvf $oldlogs/$dirdate.tgz $dirdate > /dev/null 2>&1)

# Mail out the log files for today.

cat $weeklogs/$dirdate/snort.alert | mail -s "Snort logs" you@domain.com
cat $weeklogs/$dirdate/snort_portscan.log | mail -s "Snort portscan logs" you@domain.com

</verb>

<sect>Est-il possible avec snort d'ajouter des règles ipfilter/ipfw à un firewall ?

<p>Oui, avec un logiciel supplémentaire du répertoire contrib mais ceci peut
être dangereux et n'est pas recommandé à moins que vous ne sachiez ce que
vous faites.

<p>Guardian est accessible et fait partie du répertoire contrib dans
l'archive de distribution.

<p>Guardian est un script perl qui utilise snort pour détecter les attaques,
et alors utilise IPchains pour refuser toute attaque supplémentaire.

<p>La page web de Guardian peut être trouvée sur :
&nl;http://www.chaotic.org/~astevens/Guardian/index.html
&nl;ou vous pouvez utiliser le miroir,
&nl;http://www.cyberwizards.com/~midnite/Guardian/index.html

<p>Mais une mise en garde... exécuter des binaires externes peut également
être un limitateur de performance et vous devriez lire avec attention ce qui
suit...

<verb>   Christopher Cramer wrote:
   >
   > Je suis sûr que ceci a été mentionné avant dans des discussions
   > similaires, mais ceci semble une très mauvaise idée. Que se passe t-il
   > si le vilain réalise ce qui se passe et utilise votre méthode de
   > bloquage comme attaque en déni de service. N'importe qui pourrait
   > commencer à envoyer une série de paquets déclenchant avec des adresses
   > IP spoofées.
   > 
   > Puisque je ne suis plus intéressé à pénétrer dans votre site, mais
   > plutôt à rendre votre vie un enfer, je ne me soucie pas des données
   > résultat me revenant. Tout ce que j'ai à faire est de commencer à
   > entreprendre une liste d'adresses IP que je pense que vous ne devriez
   > plus être capables de parler avec. Quand vous revenez le lendemain
   > matin, vous trouvez que vous ne pouvez plus accéder au monde extérieur.
   > 
   > Juste mes 0,02 $ .
   >
</verb>

<sect>Comment puis-je exécuter snort sur plusieurs interfaces simultanément ?

<p>Si vous n'exécutez pas snort sur un noyau linux 2.1.x/2.2.x (avec LPF
accessible) la seule façon est d'exécuter plusieurs instances de snort, une
instance par interface. Toutefois, pour linux 2.1.x/2.2.x et plus, vous
pouvez utiliser la bibliothèque libpcap avec le patch de S. Krahmer qui vous
permet de spécifier 'any' comme nom d'interface. Dans ce cas snort sera
capable de traiter le trafic venant de toutes les interfaces.

<sect>J'obtiens les avertissements 'snort &lsqb;pid&rsqb; uses obsolete (PF_INET, SOCK_PACKET)' (ndt : snort &lsqb;pid&rsqb; utilise les obsolètes (PF_INET, SOCK_PACKET)), qu'est ce qui n'est pas bon ?

<p>Vous utilisez une ancienne version de libpcap avec un noyau linux récent.
Il ne devrait pas y avoir de problème avec cela tant que votre noyau
supporte les sockets de type SOCK_PACKET. Toute fois pour éliminer ce
message, vous devrez mettre à jour vers une version récente de libpcap.
(une copie de www.tcpdump.org est recommandée).

<sect>L'adresse IP est dynamiquement assignée à mon interface, puis-je utiliser snort avec cela ?

<p>Oui. Avec snort 1.7 et supérieurs, la variable &lt;interface&gt;_ADDRESS
est accessible. La valeur de cette variable sera toujours à l'adresse
IP/netmask de l'interface sur laquelle vous exécutez snort. Si l'interface
tombe et remonte (et une adresse IP est réassignée) vous devrez redémarrer
snort. Pour les versions précédentes de snort nombre de scripts pour
atteindre le même résultat sont accessibles.

<sect>Sur HPUX j'obtiens 'device lan0 open: recv_ack: promisc_phys: Invalid argument'

<p>C'est parce qu'il y a un autre programme s'exécutant qui utilise le
service DLPI. L'implémentation HP-UX n'autorise pas plus d'un programme
libpcap à la fois, contrairement à Linux (de snort.c)

<sect>J'obtiens de snort qu'il s'arrête avec l'erreur 'can not create file' et j'ai plein de place disque, qu'est-ce qui n'est pas bon ?

<p>Vous pouvez tomber à cours d'inodes libres, ce qui typiquement signifie
également que vous ne pouvez plus créer de fichiers sur la partition. La
solution évidente est d'en effacer quelques uns ;-)

<sect>Quand je démarre snort j'obtiens des erreurs de mes fichiers de règles : que ce passe-t'il ?

<p>Quelques erreurs communes sont :

<verb>       ERROR somefile.rules:yy => Port value missing in rule!
       ERROR somefile.rules:yy => Bad port number: "(msg:"blah"
       ERROR somefile.rules:yy => Couldn't resolve hostname blah
</verb>

<p>somefile.rules est le fichier où l'erreur de syntaxe est parvenue, et yy
est le numéro de ligne où elle est parvenue. Il y a deux possibilités :

<itemize>

<item>Il manque une valeur de port à la règle, possède un numéro de port
invalide, ou un mauvais nom de machine - dans quel cas l'auteur/mainteneur
de l'ensemble de règles devrait être notifié.

<p>

<item>Plus souvent, la règle est bonne, mais une variable dedans n'était pas
déclarée. Ouvrez le fichier de règles, regardez la règle au numéro de ligne
fourni, et confirmez que les variables qu'elle utilise ont été déclarées.
Vous pouvez en lire plus à propos des variables sur
http://www.snort.org/writing_snort_rules.htm#variables

</itemize>

<sect>J'obtiens trop de "IIS Unicode attack detected" et/ou "CGI Null Byte attack detected" fausses alertes. Comment puis-je désactiver cette détection ?

<p>Ces messgaes sont produits par le préprocesseur http_decode. Si vous
souhaitez désactiver ces vérifications, ajoutez respectivement -unicode et
-cginull à la ligne du préprocesseur http_decode.

<verb>       preprocessor http_decode: 80 8080 -unicode -cginull
</verb>

<sect>J'utilise Snort sur Windows et reçois une erreur OpenPcap() au démarrage : que ce passe-t'il ?

<p>

<verb>       ERROR: OpenPcap() device open:
        Error opening adapter
</verb>

<p>Soit winpcap n'est pas installé, ou vous utilisez une version
incompatible. Essayez de mettre à jour vers la dernière version (2.1 au
2001/04/11). Il est disponible depuis
http://netgroup-serv.polito.it/winpcap/

<sect>Snort ne journalise pas vers ma base de données

<p>

<itemize>

<item>Vous n'avez pas configuré le plugin database dans votre fichier de
configuration.

<p>

<item>Vous utilisez un schéma de base de données plus ancien, et devez le
mettre à jour en exécutant les scripts de création depuis le répertoire
/contrib

<p>

<item>Vous utilisez une ligne de commande qui écrase ce que vous avez dans
votre fichier de configuration. c'est le plus souvent -A ou -s. NOTE : si
vous souhaitez journaliser vers syslog également, spécifiez le dans votre
fichier de configuration plutôt que sur la ligne de commande.

<p>

<item>Il y a un problème avec la configuration même de votre base de
données. Assurez-vous que l'utilisateur que vous spécifiez possède les
permissions correctes, ou que la base de données est lancée et fonctionne.

</itemize>

<sect>Les scans de ports ne sont pas journalisés dans ma base de données

<p>Vous devez changer la facilité output à 'alert' plutôt que 'log'. Le
préprocesseur de scans appelle les plugins de sortie enregistrés en tant que
des plugins 'alert' plutôt que 'log'.

<verb>      output database: alert, mysql, user=snort dbname=snort host=localhost
</verb>

<sect>Snort ne journalise pas vers syslog

<p>

<itemize>

<item>Vous utilisez une option de la ligne de commande qui écrase ce que
vous avez dans votre fichier de configuration. Le plus souvent -A.

<p>

<item>Peut-être journalisez-vous au mauvais endroit. Assurez-vous que syslog
soit correctement configuré.

</itemize>

<sect>Comment l'ordonnancement des règles fonctionne-t'il ?

<p>Marty a répondu à cela de nombreuses fois sur la liste snort-users. Voici
un extrait de sont message du 22 février 2001 nommé "Re:
&lsqb;Snort-users&rsqb; order of evaluation of rules".

<p>(note du traducteur : cf faq originale pour les schémas et les
explications en anglais ;-) ou
http://www.geocrawler.com/archives/3/4890/2001/2/200/5205182/ pour l'archive
du message en question.)

<p>Donc, voici la version courte de comment cela fonctionne, une question ?

<sect>Quand j'essaye d'exécuter Snort pour Windows j'obtiens le message que la DLL "paquet.dll" n'est pas trouvée. Où puis-je obtenir cette dll ?

<p>Vous avez besoin d'installer WinPcap. Il est disponible <htmlurl
url="http://netgroup-serv.polito.it/winpcap/install/default.htm"
name="ici">.

</article>

