2. • Détection d’intrusion à base de signatures
• Les IDS à base de signatures ont une base de données comportant un
ensemble de signatures d’attaques (base de signatures). Le principe de
fonctionnement est le test de correspondance. Les données du réseau sont
analysées et comparées aux signatures d’attaques connues stockées dans la
base de signature. En cas de correspondance, une alerte est émise. Un
avantage de ce système est qu’il a une meilleure précision lorsque les
règles de signature sont correctes. Cette base de signatures est en générale
pré initialisée avec des données de l’éditeur de l’IDS et mise à jour
régulièrement pour prendre en compte les nouvelles attaques.
• Outil : IDS Snort
3. • A partir d’Ubuntu Srv
• sudo update
• sudo apt update
• sudo apt upgrade
• sudo apt install net-tools
• apt show snort (visu version Snort, car si 2ème version ce n’est pas la dernière)
• sudo apt install snort
• # install dépendances :
• sudo apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit
hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config
libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-
dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev
• #creer un repértoire qui va contenir les fichiers source de Snort
• mkdir snort-src-files
• cd snort-src-files
4. • #télécharger+installer la bibliothèque Snort Data
• Git clone https://github.com/snort3/libdaq.git
• cd libdaq
• install libdaq ?
• # installer TC Malloc pour optimiser la mémoire du server
• wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz
• tar xzf gperftools-2.9.1.tar.gz
• cd gperftools-2.9.1/
• ./configure
• # extraire le fichier et l’installer
• sudo make
• sudo make install
• # install TC Malloc terminée
• # install SNORT v.3
• cd ..
• # je suis dans snort-src-files
• git clone git://github.com/snortadmin/snort3.git
• # activer TC Malloc
• cd snort3/
• ./configure_cmake.sh –prefix=/usr/local –enable-tcmalloc
• # extraire et lancer l’installation de Snort
• cd build
• sudo make
• sudo make install
5. • # MAJ librairies (je suis dans build)
• sudo ldconfig
• # vérifier la version de snort
• snort -V
• # activer le mode promiscuité sur la carte réseau pour écouter dessus
• ifconfig
• # ou ‘ip addr’
• # ma carte réseau sur le réseau à écourter est nommée ens33
• # activer la promiscuité
• sudo ip link set dev ens33 promisc on
• #vérif si mode promiscuité activé
• ip addr sh ens33
• # vérifier si Snort va découper les paquets de 1518 octets (tjrs situé dans build)
• ethtool -k ens33 | grep receive-offload
• sudo ethtool -K ens33 gro off lro off
• # redémarrage
• # enregistrer les modifications en éditant : snort3-nic.service
• Sudo nano /etc/systemd/system/snort3-nic.service
• # recharge la configuration +l’active à chaque démarrage du server
• sudo systemctl daemon-reload
• sudo systemctl enable –now snort3-nic.service
• sudo systemctl status snort3-nic.service
6. • INSTALLATION DES REGLES SNORT POUR LA DETECTION DU TRAFFIC MALVEILLANT
• le site de snort
• Les types de3 règles :
• - Community (gratuit)
• - Registered
• - Subscription
• # je suis dans snort3/build
• sudo mkdir /usr/local/etc/snort-rules
• cd
• wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz
• sudo tar xzf snort3-community-rules.tar.gz -C /usr local/etc/snort-rules
•
• # visu contenu règles snort car toutes ne sont pas activées par défaut
• cd..
• nano /usr local/etc/snort-rules/snort3-community-rules/snort3-community-rules
• # MAJ fichier de conf snort.lua pour y spécifier le réseau à surveiller (spécifier la journalisation et d’autres filtres)
• sudo nano /usr/local/etc/snort/snort.lua
• # modifier l’IP HOME_NET
•
• # vérifier que le chemin vers le fichier des règles est correct
• sudo nano /usr/local/etc/snort/snort_defaults.lua
•
7. • #executer Snort en tant que service
• # -r (Snort n’aura pas de compte système), -s (ce compte n’aura pas de compte shell), -M (ce compte n’aura pas de répertoire personnel dans le répertoire home), -c (c’est pour le commentaire), le compte de service
s’appelle snort
• Sudo useradd -r -s /usr/sbin/nologin -M -c snort_svc snort
• # creer config pour exécuter avec ce compte snort
• Sudo nano /etc/systemd/system/snort_svc.service
•
• # MAJ config
• sudo systemctl daemon-reload
• sudo systemctl enable –now snort3-nic.service
• sudo systemctl status snort3-nic.service
• # création répertoire pour les logs + MAJ permissions pour que le compte snort puisse écrire dans ce fichier
• sudo mkdir /var/log/snort
• # MAJ propriétaire du fichier
• sudo chmod -R 5775 /var/log/snort
• sudo chmod -R snort:snort /var/log/snort
• # démarrage du service auto à chaque redémarrage du server
• sudo systemctl enable --now snort_svc
• # activer le login (journalisation des alertes) en section 7 du fichier snort.lua
• sudo nano /usr/local/etc/snort/snort.lua
8. • # vérifier l’absence de problèmes de syntaxe
• snort -c /usr/local/etc/snort/snort.lua
• TEST DE LA CONFIGURATION
• Activer le mode promiscuité sur l’interface WMWare de ma VM
• # créer règle SNORT pour détecter le ping réalisé sur une interface de mon LAN
• sudo nano /usr/local/etc/snort-rules/local.rules
• ajouter la ligne : alert icmp any any -> $HOME_NET any (msg’’ICMP connection test’’ ; sid :1000001 ; rev :1 ;)
• sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/snort-rules/local.rules
• # configuration Snort validée ?
•
• sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/snort-rules/local.rules -i enp0s3 -A alert_fast -s 65535 -k none
• DEPUIS VM du LAN , réaliser un ping vers une machine située dans le LAN…
• Observer sur le server SNORT l’info de ses test ping
• # Réexécuter la commande en sauvegardant les logs dans le répertoire
• sudo cat /var/log/etc/snort/alert_fast.txt
9. • VM PFSENSE Snort
• Dans packet manager > installer nouveau package :
• - Pf lockerNG : déjà installé ?
• Rechercher ips, add, install package pFsense pkg-snort
• Dans Services > Snort
• - General Settings : Add WAN
• - Alert settings :
• Dans Services > Snort > Interfaces
• - Laisser Snort inactif afin de le configurer + MAJ
• Dans Services > Snort > Global Settings
• - Enable Snort VRT : activé
• Pour récupérer les MAJ des signatures d’attaques
• - Récupérer le code sur le site de snort.org puis le coller en « Snort Oinkmaster code »
• - Snort GPLv2 Community Rules – Enable Snort GLPv2 : activé
• - Emerging Threats (ET) rules : Enable ET open : activé
• - Sourcefire OpenAppID Detectors : Enable OpenAppID : Activé
• - General Settings : Remove Blocked Host Interval : exemple 30 min
• : Remove Blocked Hosts After Deinstall : activé
• Dans Services > Snort > Update Rules
• - Lancer MAJ : update rules (rectangle bleu)
• Dans Services > Snort > Interfaces
• - Activer Snort
• Dans Services > Snort > Alerts
• Dans Services > Snort > Blocked