Techniques de prévention d’intrusion
Non seulement les cyberattaques continuent mais en plus s’intensifient. Guillaume Poupard, le directeur général de l’agence nationale de la sécurité des systèmes d’information (ANSSI) l’a déclaré, et parle « d’intensification des cyberattaques contre les entreprises françaises ». Toujours d’après lui, des cas concrets de cyberattaques ont été constatés même si l’information n’est pas toujours relayée dans les médias.
M. Poupard précise que dorénavant, « quasiment n’importe qui peut être la cible ». Les techniques de prévention d’intrusion sont donc indispensables.
Et ce point est très important, car j’étais moi-même intervenu à une réunion de sensibilisation auprès de chefs d’entreprise, et souvent ces derniers mettaient en avant qu’ils n’avaient que peu de risques d’être piratés. Certains estimaient que si leur entreprise est peu connue ou très petite, personne ne viendra jamais les viser. D’autres jugeaient préférable de laisser uniquement les responsables de la sécurité informatique s’occuper de toute la sécurité de l’entreprise.
C’est faux.
Le système d’information de l’entreprise doit être protégé à tous niveaux, et cela va bien plus loin que l’utilisation d’un antivirus sur les postes.
Nous avons déjà parlé de la sécurité au niveau humain et de l’importance de la sensibilisation. L’article d’aujourd’hui constituera quant à lui une introduction aux techniques de prévention d’intrusion au niveau système et réseau.
IDS ou IPS ? Prévention d’intrusion ou détection d’intrusion ?
Qu’est-ce qu’un IDS ?
On parle souvent de « Systèmes de Détection d’Intrusion » (Intrusion Detection System en anglais) pour faire référence aux mécanismes permettant de détecter une attaque ou une activité suspecte.
Deux grands types d’IDS existent :
- Les NIDS (Network Based Intrusion Detection System), qui surveillent l’activité réseau.
Ils fonctionnent en 3 temps :
D’abord, le trafic réseau est capturé, notamment en utilisant la fameuse libraire de capture de paquets PCAP. Les paquets capturés sont ensuite filtrés afin d’affiner les recherches.
Ensuite, une analyse par signature est effectuée, avec les inconvénients semblables à ceux des analyses antivirus classiques. Les attaques ou failles 0day étant difficiles à repérer en ayant qu’une base de données de signatures déjà prédéfinies.
Enfin, des alertes sont générées et stockées dans des fichiers logs sous forme normalisée.
- Les HIDS (Host-Based Intrusion Detection System), qui surveillent l’activité au niveau du système (de l’hôte).
Les HIDS fonctionnent comme des services standards sur le système d’exploitation qui surveillent l’activité des utilisateurs et des processus. Le nombre et le type des processus, les commandes utilisées, les dates de connexion des utilisateurs font partie des nombreux éléments que va surveiller un HIDS.
Bien sûr, des IDS dits « hybrides » existent : ils agissent au niveau hôte et au niveau réseau en même temps. Un IDS hybride est notamment pratique pour analyser ce que l’on appelle la « corrélation », c’est-à-dire le lien entre plusieurs événements. Cela permet de faire une analyse beaucoup plus précise. Par exemple, si une erreur HTTP 404 est générée, elle n’est pas suspecte en tant que telle, mais si en même temps plusieurs autres requêtes génèrent des erreurs, il y a une probabilité que le site soit attaqué.
Ces systèmes permettent également de tirer des conclusions sur les comportements suspects repérés ou au contraire ceux qui ne le sont pas. Une sorte d’étude des cybermenaces.
Mis en place classique avec l’IDS Snort
Je vais utiliser dans ce petit tutoriel la version 2.9.7.6 de Snort et je l’installerai sur une machine Ubuntu 14.04.
Vous pouvez également déjà vous rendre sur le site Snort.org pour télécharger la dernière version de Snort.
Note : Autosnort est une série de scripts permettant de configurer Snort mais aussi les prérequis et les plugins. Si vous souhaitez automatiser ce qui suit, et plus, vous pouvez passer par Autosnort directement. Chez moi, il semble poser problème, je ne vais donc pas l’utiliser.
Nous allons donc d’abord installer manuellement les prérequis :
sudo apt-get install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev
Nous allons ensuite créer un dossier dans lequel sera téléchargé Snort :
mkdir ~/snort_src cd ~/snort_src
Installons à présent DAQ (Data AcQuisition library) qui remplace les appels directs de fonctions LibPcap pour rendre Snort plus souple (veillez à bien utiliser la dernière version de DAQ, en remplaçant éventuellement « 2.0.6 ») :
wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz tar -xvzf daq-2.0.6.tar.gz cd daq-2.0.6 ./configure make sudo make install
Il nous reste à installer Snort lui-même (veillez à bien utiliser la dernière version de Snort, en remplaçant éventuellement « 2.9.7.6 ») :
cd ~/snort_src wget https://www.snort.org/downloads/snort/snort-2.9.7.6.tar.gz tar -xvzf snort-2.9.7.6.tar.gz cd snort-2.9.7.6 ./configure --enable-sourcefire make sudo make install
Deux dernières choses à régler (mise à jour des bibliothèques partagées et lien symbolique) :
sudo ldconfig sudo ln -s /usr/local/bin/snort /usr/sbin/snort
Vous devriez ensuite être prêt à utiliser Snort. Il faut savoir qu’il existe trois modes d’utilisation de Snort :
- Mode reniflage de paquets : pour observer les informations des en-têtes.
- Mode log de paquets : pour observer les paquets à une date ultérieure.
- Mode IDS : comparer les paquets par rapport à des règles établies.
Pour l’utiliser en Mode IDS, on va créer un compte spécial pour Snort (on ne veut pas utiliser le compte root) et on va y copier les fichiers de configurations nécessaires dans « /etc/snort » avec les droits qu’il faut :
sudo groupadd snort sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g 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 sudo mkdir /var/log/snort sudo mkdir /usr/local/lib/snort_dynamicrules 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 sudo cp ~/snort_src/snort-2.9.7.0/etc/*.conf* /etc/snort sudo cp ~/snort_src/snort-2.9.7.0/etc/*.map /etc/snort
Juste avant de le lancer, on va éditer le fichier de configuration :
sudo vi /etc/snort/snort.conf
Et y ajouter notre adresse IP ainsi que les bons chemins pour les règles (modifiez les variables suivantes) :
ipvar HOME_NET 10.0.2.15/24 #Placez VOTRE adresse IP locale ici ipvar EXTERNAL_NET !$HOME_NET 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
Les règles (désignées par des include suivis d’un nom de fichier) seront automatiquement téléchargées via PulledPork, on peut donc les commenter :
sudo sed -i 's/include $RULE_PATH/#include $RULE_PATH/' /etc/snort/snort.conf
À cela près que le fichier de règles suivant peut être dé-commenté pour ajouter une règle et la tester (enlevez le dièse avant « include ») :
include $RULE_PATH/local.rules
Faisons un test des configurations :
sudo snort -T -c /etc/snort/snort.conf
Si Snort indique le texte suivant, tout est bon :
Snort successfully validated the configuration! Snort exiting
Ajoutons donc une règle simple dans le fichier « /etc/snort/rules/local.rules » :
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)
Lançons Snort :
sudo /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
Et faisons un ping vers une machine extérieure pour observer l’alerte :
À partir de là, il reste à créer ses propres règles ou d’en télécharger directement sur le site officiel.
Qu’est-ce qu’un IPS ?
Les IPS fonctionnent de façon similaire aux IDS mais prennent des mesures, il sont dits « actifs ».
On ne parle plus de NIDS et de HIDS mais de NIPS et de HIPS. Typiquement un NIPS peut abandonner ou annuler une connexion TCP jugée suspecte et un HIPS peut tuer un processus et supprimer un programme suspect.
Snort joue également le rôle d’IPS via des plugins comme SnortSam.
Le plus connu des IPS est probablement fail2ban qui observe les logs systèmes à la recherche de motifs spécifiques en bannissant les utilisateurs en conséquence.
La protection de l’entreprise avec un IPS
Tout n’est pas si rose pour les systèmes de détection et de prévention d’intrusion. Les attaques se diversifient et se spécialisent, les techniques 0day restent également difficiles à combattre.
Pour être le plus efficace possible, un bon système de prévention d’intrusion doit donc intégrer certains points fondamentaux.
La Revue de l’It a publié une infographie sur les 12 règles d’or d’un IPS. Je vous livre déjà les 3 premières règles ci-dessous et n’hésitez pas à aller consulter les 9 autres directement sur le site : Revue de l’IT – 12 règles d’or d’un IPS
Pour aller plus loin : Les étapes à suivre pour commencer avec le Hacking
13 Commentaires
Cliquez ici pour ajouter un commentaire
Ah oui il me plait enormément ton Tuto, je vais mettre en applications ton trés bon tuto tres clair en pratique, en plus je suis dessus et sa tombe bien.Merci à toi
Avec plaisir Alain 😉
Très instructif, merci.
Juste une question:
– La mise en place d’un ips/ids sur un réseau domestique serait-elle judicieuse ou totalement inutile?
Bonne question, je dirais qu’il n’est pas forcément nécessaire d’utiliser un IDS chez soi dans le sens où il y a moins de services communicants vers l’extérieur qu’avec un serveur d’entreprise. Le pare-feu local faisant déjà une partie du travail.
Merci pour ta réponse et encore merci pour tes articles instructifs. 🙂
[…] Le but principal du honeynet est de récupérer des informations sur les menaces. Ces informations peuvent servir dans le milieu académique à des fins de recherches, ou au sein d’entreprises de sécurité pour créer des solutions antivirus efficaces ainsi que des signature pour les systèmes de détection d’intrusion. […]
Salut svp pouvez vous m’aider je fais un expose sur l’IDS SURICATA sous windows je m’ensors vraiment pas
Ok ! Imaginez que l’on veule recevoir ces alertes par e-mail (postfix et swatch) ou alors par SMS
bonne soirée michel les ids bon sujet pour les gros entreprise pour un particulier ? je vois pas trop comment.
il va pouvoir faire une bonne analyse entre le bon et mauvais car il faut un bon niveaux. pour être utile et surtout faire
la différence avec les fausse données qui sont pas toujours perçu comme t »elle . car un très bon pirate peut contourner
cela de plusieurs façon exemple le pare-feu? voici comment il peut faire. distribution du scanners de ports .la distribution
d »une attaque consiste à subdiviser l’attaque en tâches réalisées par différentes machines. sa suppose qu’un attaquant
sait quant un scanner a été détecté cela n’est bien entendu pas le cas pour de vraies attaques. mais cela nous
permet de calculer des taux de réussite. cette distribution utilise séquentiellement les scanners. elle sélectionne
un scanner et commence l’attaque avec celui-ci une fois qu »il est détecté elle sélectionne alors un autre scanner.
encore non détecté et poursuit ainsi jusqu’à la fin de l »attaque. ou bien lorsqu’il n’y a plus de scanners à disposition.
la distribution en boucle se base sur la précédente. toute fois on change de scanner à chaque fois qu’une tâche est
réalisée. on boucle sur l’ensemble des scanners disponibles cette méthode pourtant simple permet de ne pas être
détecté. lorsque deux utilisations d’un même scanners sont assez espacées dans le temps. évasion des ids l’objectif
principal d’un attaquant est de passer inaperçu lors des scannage de ports ainsi il peut enchaîner. sur une autre attaque
pour ne pas être détecté un attaquant doit tout d’abord adopter. une technique de scannage de ports qui produit
un trafic légitime. la plupart des ids utilisent des compteurs. c’est pourquoi il doit chercher à les décrémenter.
pour cela il peut se connecter à des machines dont il sait l’état des ports. et ainsi cibler les ports ouverts ou bien il
peut tout simplement ralentir sont attaque. de manière à ce que les événements expire avant la détection de l’attaque.
très bonne soirée michel sympas ton sujet sur ids pour la sécurité pas mal mais dur pour beaucoup de gens.
il faut un bon niveaux tout de même pour faire une bonne analyse. surtout point vue faille? points faibles
vulnérabilités des sondes nids de part leur fonctionnement en mode promiscuité les sondes sont vulnérables.
elles capte tout le trafic et même si un ping flood est réalisé sur une autre machine. les sondes nids le captureront aussi.
et donc en subiront les conséquences comme si l’attaque leur était directement envoyée. les dos classiques seront
donc très nocifs pour les sondes nids. le point fort de certains ids qui est d’archiver aussi le contenu des trames.
ayant levées une alerte peut aussi s »avérer un point faible. un hôte flood avec un paquet chargé de 64000 octets ou
encore des trames de 1500 octets pour les syn flood vont faire exploser la taille des fichiers de logs des sondes en
quelques minutes. c’est une attaque qui porte le nom coke qui consiste à saturer le disque dur. la seule façon de parer
cette attaque est de prévoir d’importants espaces de stockages. et gérer le stockage des fichiers de logs. problèmes
intrinsèques à la plate forme. beaucoup d’ids et plus particulièrement les ids libres. sont des logiciels reposant
sur un système d’exploitation non dédié aux ids. ainsi la faiblesse d’un ids est liée à la faiblesse de la plate forme.
un même logiciel sera par exemple plus vulnérable sur un pc win 98 que sur un pc open bsd de part la solidité
de la pile ip face aux attaques. ou tout simplement de part la stabilité. du système la mise en place d’un ids requiert
donc un bon niveau dans la sécurisation de la plate forme. une saturation de la mémoire. de la carte réseau
ou du processeur porte atteinte directement au bon fonctionnement. de tout le système et donc du logiciel
ids de la machine. le problème de ces dysfonctionnements est que si. la sonde ne peut plus remplir son rôle
le réseau n’en est pas coupé pour autant. le responsable sécurité ne peut donc pas voir que la sonde étant
tombée une partie du réseau n’est plus surveillée. une redondance des surveillances sur certaines zones.
devrait momentanément résoudre le problème.
bonjours michel comme le dit alain très bien fait ton tutoriel sur snort. tu explique très bien comme tout jours
sa fait plaisir. introduction snort est un système de détection d’intrusion de réseau open source. capable d’analyser
en temps réel le trafic sur les réseaux ip. et est doté de différentes technologies de détection. d’intrusions
telles que l’analyse protocolaire. snort peut détecter de nombreux types d’attaques. comme attaque de ports
snort est doté d’un langage de règles permettant de décrire le trafic. de plus son moteur de détection utilise
une architecture. modulaire de plu-gins snort est principalement dédié aux acteurs de la sécurité réseaux.
en effet sa fonction ids permet une surveillance des réseaux permettant de détecter et d’alerter. en cas de tentative
d’intrusion sur le réseau. architecture du snort un noyau de base packet decoder. au démarrage ce noyau charge
un ensemble de règles.les compile les optimise et les classe durant l’exécution le rôle principal du noyau est
la capture des paquets. une série de pré-processeurs détection engine. ces derniers améliorent les possibilités
de snort en matière d’analyse et de recomposition du trafic capturé. ils reçoive les paquets directement capturés
et décodés.
très bonne soirée michel je vois sur certains site des gens qui demande ou placer les capteurs? bonne question.
donc voici un petit exemple. il est possible de placer les capteurs à différents endroits en fonction de ce que
l’on souhaite observer. les capteurs peuvent être placés avant ou après le pare-feu ou encore dans une zone
sensible. que l’on veut protéger spécialement si les capteurs se trouvent après un par-feu il leur est plus facile
de dire si le le pare-feu. à été mal configuré ou de savoir si une attaque est venue par ce par-feu.
les capteurs placés derrière un pare-feu ont pour mission de détecter les intrusions. qui n’ont pas été arrêtées
par ce dernier. il s’agit d’une utilisation courante d’un nids.
bonne soirée michel très bien ton sujet sur ids mais pour protéger sait pas encore sa? beaucoup de petite entreprise
sont mal protéger tu à vue cela plus d’une fois il ne semble non tu en parle très bien. dans un des sujet que tu aborde
sur les ids il ne semble. pour na part je pense que les utilisateur de sait petite entreprise doive suivre une formation
en sécurité prise en charge par l’entreprise sa ne semble très utile. car petite ou pas le danger et bien réel.
toi même en parle très bien. avec un exemple très juste quant tu parle de certains grande pdg qui pense ne pas être en
danger? grosse question à se poser tout de même sur leurs savoir des risques qu’il font courir sur leurs entreprise?
exemple et cas réel de piratage. contourner la réponse active d’un ids. l’interruption de session provoquée par un ids
peut être contournée de plusieurs manières. la plupart d’entre elles se basent sur le laps de temps. qui existe entre
la détection d’une attaque et la prise en compte du tcp reset. pour la machine cible dans le cas ou l’exploit à réaliser
par un attaquant. ne nécessite pas de session interactive. celui-ci pourra simplement positionner le flag push au sein.
de ses paquets tcp. en général les piles tcp/ip ne délivrent pas chaque portion de données à l’application des que
celle ci arrive cela revient trop cher. en terme d’interruption logiciels. la pile accumule les données dans un buffer et
dès que celui-ci est plein. elle réalise un push du buffer tout entier pour envoyer les données en une seule fois.
certaines applications ont besoin de récupérer les données aussi vite qu’elles arrive. et sont prêtes à en payer le coût.
dans cette optique le flag push indique à la pile de délivrer les données à l’application aussi vite que possible.
si un attaquant potentiel désire récupérer le contenu d’un répertoire. cela ne lui sera pas très utile car la session
aura été interrompue avant que la réponse à sa requête ne soit effectuée. par contre si celui-ci trouve le moyen
de copier. le fichier hôte par exemple. vers un répertoire accessible depuis le serveur web du réseau il ne.
s’occupera pas de savoir si la session a été interrompue ou non. puisque son exploit aura réussi.simplement
en positionnant le flag push au sein. du paquet contenant sa requête. si l’attaquant à besoin de conserver
la session ouverte. une autre technique reste à sa disposition. l’astuce consiste à faire en sorte que la machine cible.
ignore le tcp reset envoyé par l’ids. ce dernier croira avoir interrompu la session et l’attaquant pourra continuer
son travail tranquillement; cette technique utilise le temps nécessaire pour un ids de capturer le paquet.
de détecter l’exploit en cour de générer le tcp reset et d’envoyer celui-ci sur le réseau. une course contre la montre.
s’engage alors entre l’ids et l’attaquant. pour que la machine cible de l’attaquant ignore le tcp reset de l’ids.
il faut que le prochain paquet de la session engagée .entre l’attaquant et la machine cible parvienne sur la machine
cible avant le paquet reset de l’ids. rappel la pile tcp travaille sur une fenêtre certaines données reçues ont déjà
été envoyées. push vers l’application et certaines attendent dans le buffer qui doit être. vidé vers l’application
de plus il existe un espace vide. en attente de réception de nouvelles données. ce que l’on nomme la fenêtre n’est autre
que la réunion du buffer et de l’espace vide seules les données présentes au sein de la fenêtre. peuvent être traitées
la pile tcp maintient également. un pointeur courant cp. qui pointe sur le prochain fragment de données.
que la pile s’attend à recevoir celui-ci correspond de plus au numéro d’acquittement.