Pare-feu et systèmes de détection d'intrusion (IDS/IPS)
Introduction
Les pare-feu (firewalls) et les systèmes de détection/prévention d'intrusion (IDS/IPS) sont des composants essentiels de la sécurité des réseaux. Ils constituent la première ligne de défense contre les accès non autorisés et les attaques.
Imaginez un château fort :
- Le pare-feu est comme la muraille qui entoure le château. Il contrôle les entrées et les sorties, et bloque les personnes non autorisées.
- L'IDS est comme les sentinelles qui surveillent les murs et les environs. Ils détectent les activités suspectes et donnent l'alerte.
- L'IPS est comme la garde du château, qui peut intervenir pour bloquer les intrus et repousser les attaques.
Dans cette section, nous allons découvrir :
- Ce qu'est un pare-feu, comment il fonctionne, et les différents types de pare-feu.
- Ce qu'est un IDS, comment il fonctionne, et les différents types d'IDS.
- Ce qu'est un IPS et comment il combine la détection et la prévention des intrusions.
Pare-feu (Firewall)
Un pare-feu est un système (matériel, logiciel, ou une combinaison des deux) qui filtre le trafic réseau entre un réseau de confiance (par exemple, un réseau local d'entreprise) et un réseau non fiable (par exemple, Internet), ou entre différentes zones d'un même réseau.
Principes de base
- Filtrage de paquets : Le pare-feu examine chaque paquet réseau (un "morceau" de données transmis sur le réseau) qui le traverse, et décide de l'autoriser ou de le bloquer en fonction de règles prédéfinies.
- Règles de filtrage : Les règles définissent quelles communications sont autorisées et lesquelles sont bloquées. Elles sont généralement basées sur :
- Adresse IP source et destination : Permet de bloquer ou d'autoriser le trafic provenant de (ou à destination de) certaines adresses IP ou de certains réseaux.
- Port source et destination : Permet de bloquer ou d'autoriser le trafic utilisant certains protocoles (HTTP, FTP, SSH, etc.). Chaque protocole utilise généralement un port spécifique (par exemple, le port 80 pour HTTP, le port 443 pour HTTPS, le port 22 pour SSH).
- Protocole : Permet de bloquer ou d'autoriser certains protocoles (TCP, UDP, ICMP, etc.).
- Direction : Permet de définir des règles différentes pour le trafic entrant (du réseau non fiable vers le réseau de confiance) et le trafic sortant (du réseau de confiance vers le réseau non fiable).
- Interface Réseau
- Politique par défaut :
- "Tout ce qui n'est pas explicitement autorisé est interdit" (recommandé) : C'est la politique la plus sûre. Le pare-feu bloque tout le trafic par défaut, et seules les communications explicitement autorisées par les règles sont permises.
- "Tout ce qui n'est pas explicitement interdit est autorisé" (déconseillé) : C'est la politique la moins sûre. Le pare-feu autorise tout le trafic par défaut, et seules les communications explicitement interdites par les règles sont bloquées.
Fonctionnement simplifié
- Un paquet réseau arrive au pare-feu.
- Le pare-feu examine l'en-tête du paquet (adresses IP, ports, protocole, etc.).
- Le pare-feu compare les informations du paquet aux règles de filtrage, dans l'ordre où elles sont définies.
- Si le paquet correspond à une règle :
- L'action associée à la règle est appliquée (autoriser, bloquer, rejeter, etc.).
- Le traitement du paquet s'arrête (la première règle qui correspond est appliquée).
- Si le paquet ne correspond à aucune règle, la politique par défaut est appliquée.
Schéma
Types de pare-feu :
-
Pare-feu à filtrage de paquets (stateless) :
- Examine chaque paquet individuellement, sans tenir compte du contexte (c'est-à-dire des paquets précédents).
- Rapide et simple, mais limité en termes de sécurité.
- Ne peut pas détecter certaines attaques sophistiquées (par exemple, les attaques qui utilisent plusieurs paquets).
-
Pare-feu à états (stateful) :
- Examine non seulement chaque paquet, mais aussi l'état de la connexion.
- Tient une table des connexions en cours et peut prendre des décisions en fonction du contexte (par exemple, autoriser un paquet si c'est une réponse à une requête légitime).
- Plus sûr que les pare-feu à filtrage de paquets, car il peut détecter des attaques qui impliquent plusieurs paquets.
-
Pare-feu applicatifs (proxy) :
- Fonctionne au niveau de la couche application (couche 7 du modèle OSI).
- Agit comme un intermédiaire (un proxy) entre le client et le serveur.
- Peut analyser le contenu des paquets (par exemple, inspecter les requêtes HTTP pour détecter des attaques web).
- Plus sûr que les pare-feu à états, mais plus lent.
- Un bloqueur de publicité peut-être considéré comme un pare-feu applicatif.
-
Pare-feu de nouvelle génération (NGFW, Next-Generation Firewall) :
- Combine les fonctionnalités des pare-feu traditionnels avec des fonctionnalités avancées, comme :
- Inspection approfondie des paquets (DPI, Deep Packet Inspection).
- Système de prévention d'intrusion (IPS).
- Contrôle des applications (permet de bloquer ou d'autoriser des applications spécifiques, indépendamment du port utilisé).
- Filtrage web (permet de bloquer l'accès à certains sites web ou catégories de sites web).
- Antivirus et anti-malware.
- Sandboxing.
- Intégration avec des sources d'informations sur les menaces (threat intelligence).
- Combine les fonctionnalités des pare-feu traditionnels avec des fonctionnalités avancées, comme :
-
Pare-feu personnels
- Un pare-feu personnel est un logiciel qui est installé sur l'ordinateur de l'utilisateur final et qui contrôle le trafic réseau.
Le pare-feu est un élément essentiel de la sécurité des réseaux, mais il ne suffit pas à lui seul. Il doit être combiné avec d'autres mesures de sécurité (antivirus, IDS/IPS, authentification forte, etc.) pour une protection efficace.
Exemple d'attaque contrée par un pare-feu stateful
Attaque : SYN flood (inondation de SYN)
Principe :
-
TCP Handshake (établissement d'une connexion TCP) :
- Pour établir une connexion TCP, un client envoie un paquet SYN (synchronize) au serveur.
- Le serveur répond avec un paquet SYN-ACK (synchronize-acknowledge).
- Le client envoie un paquet ACK (acknowledge) pour terminer l'établissement de la connexion.
-
Attaque SYN flood :
- L'attaquant envoie un grand nombre de paquets SYN au serveur, en utilisant de fausses adresses IP source (spoofing).
- Le serveur répond à chaque paquet SYN avec un paquet SYN-ACK, et alloue des ressources pour chaque connexion en attente.
- L'attaquant n'envoie jamais le paquet ACK final.
- Le serveur se retrouve avec un grand nombre de connexions "à moitié ouvertes" (half-open connections), consommant ses ressources (mémoire, CPU, etc.).
- Le serveur finit par ne plus pouvoir répondre aux requêtes légitimes (déni de service).
Pare-feu stateless (sans état) :
- Un pare-feu stateless examine chaque paquet individuellement.
- Il verrait les paquets SYN arriver, et les laisserait passer (s'il n'y a pas de règle spécifique pour les bloquer).
- Il ne serait pas capable de détecter l'attaque SYN flood, car il ne tient pas compte du contexte (le fait que les paquets SYN ne sont pas suivis de paquets ACK).
Pare-feu stateful (avec état) :
- Un pare-feu stateful tient une table des connexions en cours.
- Lorsqu'il reçoit un paquet SYN, il l'enregistre dans sa table et attend le paquet SYN-ACK correspondant.
- S'il reçoit un grand nombre de paquets SYN sans voir les paquets SYN-ACK et ACK correspondants, il peut détecter l'attaque SYN flood.
- Il peut alors prendre des mesures pour contrer l'attaque, par exemple :
- Bloquer les paquets SYN provenant des adresses IP source suspectes.
- Limiter le nombre de connexions "à moitié ouvertes" autorisées.
- Utiliser des techniques plus avancées, comme les "SYN cookies" (qui permettent au serveur de ne pas allouer de ressources tant que le paquet ACK final n'a pas été reçu).
Un pare-feu stateful est donc capable de détecter et de contrer une attaque SYN flood, alors qu'un pare-feu stateless ne le peut pas. C'est l'un des nombreux exemples qui illustrent l'intérêt des pare-feu à états.
Exemples de règles de pare-feu (iptables)
iptables
est un utilitaire en ligne de commande sous Linux qui permet de configurer le pare-feu intégré au noyau (netfilter). C'est un outil puissant et flexible, mais sa syntaxe peut être un peu complexe au début.
Structure de base d'une commande iptables
:
iptables [-t table] -[ADCI] chain rule-specification [options]
-t table
: Spécifie la table à utiliser. Les tables les plus courantes sont :filter
(par défaut) : Pour le filtrage des paquets (autoriser, bloquer, etc.).nat
: Pour la traduction d'adresses réseau (NAT).mangle
: Pour la modification des paquets (par exemple, modifier le TTL).raw
: Pour la configuration d'exceptions au suivi de connexion.
-[ADCI]
: Spécifie l'action à effectuer sur la chaîne :-A
(append) : Ajouter une règle à la fin de la chaîne.-D
(delete) : Supprimer une règle de la chaîne.-C
(check) : Vérifier si une règle existe déjà-I
(insert) : Insérer une règle à une position donnée (par défaut, au début).
chain
: Spécifie la chaîne à laquelle la règle s'applique. Les chaînes prédéfinies les plus courantes sont :INPUT
: Pour les paquets destinés à l'hôte local.OUTPUT
: Pour les paquets générés par l'hôte local.FORWARD
: Pour les paquets routés à travers l'hôte local (par exemple, si l'hôte fait office de routeur).
rule-specification
: Spécifie les critères de correspondance des paquets (adresse IP source/destination, port, protocole, etc.).[options]
: Spécifie des options supplémentaires, comme l'action à effectuer si la règle correspond (-j
pour "jump").
Exemples de règles simples :
-
Tout bloquer par défaut (politique par défaut) :
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP-P
: Définit la politique par défaut (policy) pour une chaîne.DROP
: Bloque les paquets (sans envoyer de message d'erreur).
dangerCette configuration bloque tout le trafic. À n'utiliser que si vous savez ce que vous faites, et après avoir défini des règles pour autoriser le trafic nécessaire.
-
Autoriser les connexions SSH entrantes (port 22) :
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT
: Ajoute une règle à la chaîneINPUT
(paquets entrants).-p tcp
: Spécifie le protocole TCP.--dport 22
: Spécifie le port de destination 22 (le port SSH standard).-j ACCEPT
: Spécifie l'action à effectuer si la règle correspond : autoriser le paquet.
-
Autoriser le trafic HTTP (port 80) et HTTPS (port 443) sortant :
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT -
Bloquer le trafic provenant d'une adresse IP spécifique :
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
-s 192.168.1.100
: Spécifie l'adresse IP source.
-
Autoriser les connexions établies et relatives :
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-m conntrack
: Utilise le module de suivi de connexion (conntrack).--ctstate ESTABLISHED,RELATED
: Spécifie les états de connexion à autoriser :ESTABLISHED
: Connexions déjà établies.RELATED
: Connexions liées à une connexion existante (par exemple, les connexions de données FTP).
- Cette règle est essentielle pour permettre le fonctionnement de nombreux protocoles (par exemple, pour autoriser les réponses aux requêtes sortantes).
Systèmes de détection d'intrusion (IDS)
Un système de détection d'intrusion (IDS, Intrusion Detection System) est un dispositif (matériel ou logiciel) qui surveille un réseau ou un système à la recherche d'activités malveillantes ou de violations de politiques de sécurité.
Contrairement à un pare-feu, qui bloque le trafic en fonction de règles prédéfinies, un IDS est principalement un système de détection. Il ne bloque pas le trafic (sauf s'il est combiné avec un IPS, voir plus loin), mais il génère des alertes lorsqu'il détecte une activité suspecte.
Principes de fonctionnement
Un IDS utilise différentes techniques pour détecter les intrusions :
-
Détection basée sur les signatures :
- L'IDS compare le trafic réseau ou les événements système à une base de données de signatures d'attaques connues (similaire au fonctionnement d'un antivirus).
- Une signature est un motif (une séquence d'octets, une expression régulière, etc.) qui correspond à une attaque connue (par exemple, une tentative d'exploitation d'une vulnérabilité, un ver, un cheval de Troie, etc.).
- Si l'IDS trouve une correspondance, il génère une alerte.
- Avantage : Efficace pour détecter les attaques connues.
- Inconvénient : Inefficace contre les attaques nouvelles ou inconnues (zero-day) et les attaques qui utilisent des techniques d'évasion pour modifier leur signature.
-
Détection basée sur les anomalies :
- L'IDS crée un profil du comportement "normal" du réseau ou du système (par exemple, le trafic habituel, les ressources utilisées, les commandes exécutées, etc.).
- Il détecte ensuite les déviations par rapport à ce profil normal, qui peuvent indiquer une intrusion.
- Avantage : Peut détecter les attaques nouvelles ou inconnues (zero-day).
- Inconvénients : Plus complexe à mettre en œuvre. Peut générer des faux positifs (alertes pour des activités légitimes, mais inhabituelles). Nécessite une phase d'apprentissage.
-
Détection basée sur les politiques (ou règles) :
- L'IDS utilise un ensemble de règles définies manuellement pour identifier les activités suspectes. Ces règles peuvent être basées sur des signatures, mais aussi sur des comportements ou des états.
- Avantage : Flexibilité
-
Combinaison de méthodes :
- Les IDS modernes combinent souvent plusieurs techniques de détection (signatures, anomalies, politiques) pour améliorer leur efficacité.
Types d'IDS
-
NIDS (Network-based Intrusion Detection System) :
- Surveille le trafic réseau.
- Est généralement placé à un point stratégique du réseau (par exemple, derrière le pare-feu, sur un segment de réseau sensible, etc.).
- Peut analyser le trafic de plusieurs machines.
- Exemples : Snort, Suricata, Zeek (anciennement Bro).
-
HIDS (Host-based Intrusion Detection System) :
- Surveille un seul hôte (ordinateur, serveur).
- Est installé sur l'hôte à surveiller.
- Analyse les journaux d'événements (logs), les processus en cours, les modifications de fichiers, etc.
- Peut détecter des attaques qui ne seraient pas visibles au niveau du réseau (par exemple, une attaque locale, un rootkit, etc.).
- Exemples : OSSEC, Wazuh, Samhain.
-
Cloud-Based IDS
- Solutions IDS fournies et gérées dans le cloud.
Réponse aux intrusions (limitée pour un IDS)
Un IDS est principalement un système de détection. Sa réponse aux intrusions est généralement limitée à :
- Générer des alertes : Envoyer des notifications aux administrateurs système (par email, SMS, etc.) ou à un système de gestion centralisé (SIEM, Security Information and Event Management).
- Enregistrer les événements : Enregistrer les détails de l'intrusion (adresse IP source, type d'attaque, etc.) dans des fichiers journaux.
- (Dans certains cas) Terminer une connexion TCP : Certains IDS peuvent envoyer un paquet TCP RST (reset) pour interrompre une connexion suspecte.
Un IDS est un outil précieux pour la sécurité des réseaux et des systèmes, mais il doit être correctement configuré et surveillé pour être efficace. Il est également important de combiner l'IDS avec d'autres mesures de sécurité (pare-feu, antivirus, etc.). Un IDS seul ne suffit pas à protéger un réseau.
Systèmes de prévention d'intrusion (IPS)
Un système de prévention d'intrusion (IPS, Intrusion Prevention System) est un dispositif (matériel ou logiciel) qui combine les fonctionnalités d'un IDS (détection d'intrusion) et d'un pare-feu (blocage du trafic).
Un IPS est une évolution de l'IDS. Il ne se contente pas de détecter les intrusions, il peut aussi les bloquer activement.
Principes de fonctionnement
Un IPS utilise les mêmes techniques de détection qu'un IDS (signatures, anomalies, politiques) :
- Surveillance du trafic : L'IPS analyse le trafic réseau (NIPS) ou les événements système (HIPS) à la recherche d'activités malveillantes.
- Détection des intrusions : L'IPS utilise une combinaison de techniques (signatures, anomalies, politiques) pour identifier les attaques.
- Prévention des intrusions : Lorsqu'une attaque est détectée, l'IPS peut prendre des mesures pour la bloquer, en plus de générer des alertes.
Actions de prévention (exemples) :
- Blocage du trafic : L'IPS peut bloquer les paquets réseau associés à l'attaque (par exemple, en rejetant les paquets, en fermant la connexion TCP, etc.).
- Mise en quarantaine : L'IPS peut isoler l'hôte infecté ou le segment de réseau compromis.
- Modification des paquets : Dans certains cas, l'IPS peut modifier les paquets pour supprimer le contenu malveillant.
- Réinitialisation de la connexion : L'IPS peut envoyer un paquet TCP RST pour interrompre la connexion.
- Blocage de l'adresse IP source : L'IPS peut bloquer temporairement ou définitivement le trafic provenant de l'adresse IP source de l'attaque.
- Intégration avec le pare-feu : L'IPS peut communiquer avec le pare-feu pour mettre à jour dynamiquement les règles de filtrage et bloquer le trafic malveillant.
Types d'IPS
Comme pour les IDS, on distingue :
- NIPS (Network-based Intrusion Prevention System) : Surveille le trafic réseau et peut bloquer les attaques au niveau du réseau.
- HIPS (Host-based Intrusion Prevention System) : Surveille un seul hôte et peut bloquer les attaques au niveau de l'hôte.
- Wireless IPS (WIPS): Se concentre sur la surveillance et la protection des réseaux sans fil.
- Network Behavior Analysis (NBA): Examine le trafic réseau pour identifier les menaces qui génèrent un trafic inhabituel.
Positionnement d'un IPS
-
NIPS :
- En ligne (inline) : Le NIPS est placé directement sur le chemin du trafic réseau (par exemple, entre le pare-feu et le réseau interne). Tout le trafic passe par le NIPS, qui peut le bloquer ou le modifier en temps réel. C'est la configuration la plus courante pour un NIPS.
- Hors ligne (out-of-band) : Le NIPS reçoit une copie du trafic réseau (par exemple, via un port miroir ou un TAP réseau). Il peut analyser le trafic, mais ne peut pas le bloquer directement. Cette configuration est plus adaptée à un IDS qu'à un IPS.
-
HIPS : Le HIPS est installé sur l'hôte à protéger.
Avantages d'un IPS (par rapport à un IDS)
- Prévention active : L'IPS peut bloquer les attaques en temps réel, empêchant ainsi les dommages.
- Réduction du nombre d'alertes : En bloquant les attaques, l'IPS réduit le nombre d'alertes que les administrateurs système doivent traiter.
- Automatisation de la réponse : L'IPS peut prendre des mesures de protection automatiquement, sans intervention humaine.
Inconvénients d'un IPS
- Risque de faux positifs : Si l'IPS est mal configuré, il peut bloquer du trafic légitime, ce qui peut perturber le fonctionnement du réseau ou des applications.
- Complexité : La configuration et la gestion d'un IPS peuvent être complexes.
- Performance : L'analyse approfondie du trafic et les actions de blocage peuvent ralentir le réseau.
- Point de défaillance unique (pour un NIPS en ligne) : Si le NIPS tombe en panne, tout le trafic réseau peut être interrompu.
Le choix entre un IDS et un IPS dépend des besoins spécifiques en matière de sécurité et des contraintes (budget, performance, tolérance aux faux positifs, etc.). Dans de nombreux cas, une combinaison d'IDS et d'IPS est utilisée pour une protection optimale.