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.

technique-detection-intrusion

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 :

snort

La partie haute de l’image montre Snort en action, notre alerte est déclenchée à chaque requête ping affichée dans la partie basse.

À 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

reglesips

Pour aller plus loin : Les étapes à suivre pour commencer avec le Hacking

Articles similaires

Menu