Snort est un système gratuit de détection d'intrusion réseau (IDS). En termes moins officiels, il vous permet de surveiller votre réseau pour détecter toute activité suspecte en temps réel . Actuellement, Snort propose des packages pour Fedora, CentOS, FreeBSD et les systèmes Windows. La méthode d'installation exacte varie selon les systèmes d'exploitation. Dans ce tutoriel, nous allons installer directement à partir des fichiers source de Snort. Ce guide a été écrit pour Debian.
Mettre à jour, mettre à niveau et redémarrer
Avant de mettre la main sur les sources Snort, nous devons nous assurer que notre système est à jour. Nous pouvons le faire en émettant les commandes ci-dessous.
sudo apt-get update
sudo apt-get upgrade -y
sudo reboot
Configuration de pré-installation
Une fois que votre système a redémarré, nous devons installer un certain nombre de packages pour nous assurer que nous pouvons installer SBPP. J'ai pu comprendre qu'un certain nombre de packages étaient nécessaires, donc la commande de base est ci-dessous.
sudo apt-get install flex bison build-essential checkinstall libpcap-dev libnet1-dev libpcre3-dev libnetfilter-queue-dev iptables-dev libdumbnet-dev zlib1g-dev -y
Une fois tous les packages installés, vous devrez créer un répertoire temporaire pour vos fichiers source - ils peuvent être n'importe où que vous le souhaitez. Je vais utiliser /usr/src/snort_src. Pour créer ce dossier, vous devez être connecté en tant rootqu'utilisateur ou disposer d' sudoautorisations - rootcela facilite la tâche.
sudo mkdir /usr/src/snort_src
cd /usr/src/snort_src
Installation de la bibliothèque d'acquisition de données (DAQ)
Avant de pouvoir obtenir la source de Snort, nous devons installer le DAQ. C'est assez simple à installer.
wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz
Extrayez les fichiers de l'archive tar.
tar xvfz daq-2.0.6.tar.gz
Accédez au répertoire DAQ.
cd daq-2.0.6
Configurez et installez le DAQ.
./configure; make; sudo make install
Cette dernière ligne s'exécutera en ./configurepremier. Ensuite, il s'exécutera make. Enfin, il s'exécutera make install. Nous utilisons ici la syntaxe la plus courte juste pour économiser un peu sur la frappe.
Installation de Snort
Nous voulons nous assurer que nous sommes à /usr/src/snort_srcnouveau dans le répertoire, alors assurez-vous de vous y rendre avec:
cd /usr/src/snort_src
Maintenant que nous sommes dans le répertoire des sources, nous allons télécharger le tar.gzfichier pour la source. Au moment d'écrire ces lignes, la version la plus récente de Snort est 2.9.8.0.
wget https://www.snort.org/downloads/snort/snort-2.9.8.0.tar.gz
Les commandes pour installer réellement snort sont très similaires à celles utilisées pour le DAQ, mais elles ont différentes options.
Extrayez les fichiers source Snort.
tar xvfz snort-2.9.8.0.tar.gz
Accédez au répertoire source.
cd snort-2.9.8.0
Configurez et installez les sources.
./configure --enable-sourcefire; make; sudo make install
Post-installation de Snort
Une fois Snort installé, nous devons nous assurer que nos bibliothèques partagées sont à jour. Nous pouvons le faire en utilisant la commande:
sudo ldconfig
Après cela, testez votre installation Snort:
snort --version
Si cette commande ne fonctionne pas, vous devrez créer un lien symbolique. Vous pouvez le faire en tapant:
sudo ln -s /usr/local/bin/snort /usr/sbin/snort
snort --version
La sortie résultante ressemblera à ce qui suit:
,,_ -*> Snort! <*-
o" )~ Version 2.9.7.5 GRE (Build 262)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2015 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.6.2
Using PCRE version: 8.35 2014-04-04
Using ZLIB version: 1.2.8
Snort enracinement
Maintenant que nous avons installé snort, nous ne voulons pas qu'il fonctionne comme root, nous devons donc créer un snortutilisateur et un groupe. Pour créer un nouvel utilisateur et groupe, nous pouvons utiliser ces deux commandes:
sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
Puisque nous avons installé le programme en utilisant la source, nous devons créer les fichiers de configuration et les règles pour snort.
sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/preproc_rules
sudo touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules /etc/snort/rules/local.rules
Après avoir créé les répertoires et les règles, nous devons maintenant créer le répertoire des journaux.
sudo mkdir /var/log/snort
Et enfin, avant de pouvoir ajouter des règles, nous avons besoin d'un emplacement pour stocker les règles dynamiques.
sudo mkdir /usr/local/lib/snort_dynamicrules
Une fois que tous les fichiers précédents ont été créés, définissez-y les autorisations appropriées.
sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules
Configuration des fichiers de configuration
Pour gagner beaucoup de temps et éviter d'avoir à tout copier et coller, il suffit de copier tous les fichiers dans le répertoire de configuration.
sudo cp /usr/src/snort_src/snort*/etc/*.conf* /etc/snort
sudo cp /usr/src/snort_src/snort*/etc/*.map /etc/snort
Maintenant que les fichiers de configuration sont là, vous pouvez effectuer l'une des deux opérations suivantes:
- Vous pouvez activer Barnyard2
- Ou vous pouvez simplement laisser les fichiers de configuration seuls et activer sélectivement les règles souhaitées.
Quoi qu'il en soit, vous allez toujours vouloir changer quelques choses. Continue de lire.
Configuration
Dans le /etc/snort/snort.conffichier, vous devrez modifier la variable HOME_NET. Il doit être défini sur le bloc IP de votre réseau interne afin qu'il ne consigne pas les tentatives de votre propre réseau pour se connecter au serveur. Cela peut être 10.0.0.0/24ou 192.168.0.0/16. À la ligne 45, /etc/snort/snort.confremplacez la variable HOME_NETpar cette valeur du bloc IP de votre réseau.
Sur mon réseau, cela ressemble à ceci:
ipvar HOME_NET 192.168.0.0/16
Ensuite, vous devrez définir la EXTERNAL_NETvariable sur:
any
Ce qui se transforme EXERNAL_NETen tout ce que vous n'êtes HOME_NETpas.
Fixer les règles
Maintenant qu'une grande majorité du système est installé, nous devons configurer nos règles pour ce petit cochon. Quelque part autour de la ligne 104 dans votre /etc/snort/snort.conffichier, vous devriez voir une déclaration « var » et les variables RULE_PATH, SO_RULE_PATH, PREPROC_RULE_PATH, WHITE_LIST_PATHet BLACK_LIST_PATH. Leurs valeurs doivent être définies sur les chemins que nous avons utilisés Un-rooting Snort.
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules
Une fois ces valeurs définies, supprimez ou commentez les règles actuelles à partir de la ligne 548 environ.
Maintenant, vérifions que votre configuration est correcte. Vous pouvez le vérifier avec snort.
# snort -T -c /etc/snort/snort.conf
Vous verrez une sortie similaire à la suivante (tronquée par souci de concision).
Running in Test mode
--== Initializing Snort ==--
Initializing Output Plugins!
Initializing Preprocessors!
Initializing Plug-ins!
.....
Rule application order: activation->dynamic->pass->drop->sdrop->reject->alert->log
Verifying Preprocessor Configurations!
--== Initialization Complete ==--
,,_ -*> Snort! <*-
o" )~ Version 2.9.8.0 GRE (Build 229)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2015 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.7.4
Using PCRE version: 8.35 2014-04-04
Using ZLIB version: 1.2.8
Rules Engine: SF_SNORT_DETECTION_ENGINE Version 2.4 <Build 1>
Preprocessor Object: SF_IMAP Version 1.0 <Build 1>
Preprocessor Object: SF_FTPTELNET Version 1.2 <Build 13>
Preprocessor Object: SF_SIP Version 1.1 <Build 1>
Preprocessor Object: SF_REPUTATION Version 1.1 <Build 1>
Preprocessor Object: SF_POP Version 1.0 <Build 1>
Preprocessor Object: SF_DCERPC2 Version 1.0 <Build 3>
Preprocessor Object: SF_SDF Version 1.1 <Build 1>
Preprocessor Object: SF_GTP Version 1.1 <Build 1>
Preprocessor Object: SF_DNS Version 1.1 <Build 4>
Preprocessor Object: SF_SSH Version 1.1 <Build 3>
Preprocessor Object: SF_DNP3 Version 1.1 <Build 1>
Preprocessor Object: SF_SSLPP Version 1.1 <Build 4>
Preprocessor Object: SF_SMTP Version 1.1 <Build 9>
Preprocessor Object: SF_MODBUS Version 1.1 <Build 1>
Snort successfully validated the configuration!
Snort exiting
Maintenant que tout est configuré sans erreur, nous sommes prêts à commencer à tester Snort.
Test de Snort
Le moyen le plus simple de tester Snort est d'activer le local.rules. Il s'agit d'un fichier qui contient vos règles personnalisées.
Si vous avez remarqué dans le snort.conffichier, quelque part autour de la ligne 546, cette ligne existe:
include $RULE_PATH/local.rules
Si vous ne l'avez pas, veuillez l'ajouter vers 546. Vous pouvez ensuite utiliser le local.rulesfichier pour les tests. En tant que test de base, Snort garde juste une trace d'une requête ping (requête ICMP). Vous pouvez le faire en ajoutant la ligne suivante à votre local.rulesfichier.
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)
Une fois que vous avez cela dans votre fichier, enregistrez-le et continuez à lire.
Exécutez le test
La commande suivante démarrera Snort et affichera des alertes en "mode rapide", comme l'utilisateur snort, sous le groupe snort, en utilisant la configuration /etc/snort/snort.conf, et il écoutera sur l'interface réseau eno1. Vous devrez modifier l’ eno1interface réseau sur laquelle votre système écoute.
$ sudo /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eno1
Une fois que vous l'avez exécuté, envoyez une requête ping à cet ordinateur. Vous commencerez à voir une sortie qui ressemble à ceci:
01/07−16:03:30.611173 [**] [1:10000001:0] ICMP test [**] [Priority: 0] 192.168.1.105 -> 192.168.1.104
01/07−16:03:31.612174 [**] [1:10000001:0] ICMP test [**] [Priority: 0] 192.168.1.104 -> 192.168.1.105
01/07−16:03:31.612202 [**] [1:10000001:0] ICMP test [**] [Priority: 0] 192.168.1.105 -> 192.168.1.104
^C*** Caught Int−Signal
Vous pouvez appuyer sur Ctrl + C pour quitter le programme, et c'est tout. Snort est tout configuré. Vous pouvez maintenant utiliser toutes les règles que vous désirez.
Enfin, je tiens à noter qu'il existe des règles publiques établies par la communauté que vous pouvez télécharger sur le site officiel sous l'onglet "Communauté". Recherchez "Snort", puis juste en dessous il y a un lien communautaire. Téléchargez-le, extrayez-le et recherchez le community.rulesfichier.