next_inactive up previous


Système de détection d'intrusions

Liyun LI


Contents

1  Introduction

Si il n'y avait aucune menace dirigée contre un réseau informatique, si on est persuadé que nos données arrivent à destination sans être corrompues ni interceptées par quiconque, alors la sécurité informatique n'a pas lieu d'être.

Les attaques, tels que les DDOS (Distributed Denial Of Service), ou le piratage des systèmes informatiques continuent d'augmenter.

L'importance des données et son intégrité amènent donc les informaticiens à réfléchir aux solutions pour palier à ce problème.

a sécurité informatique peut être globalement séparée en 2 parties :

la sécurité active et la sécurité active.

 La sécurité active consiste à la mise des dispositifs qui vont pouvoir agir sur les flux d'entrées et de sorties.

 La mise en place d'un pare-feux, par exemple permet de rejeter certains types de paquets définis par l'administrateur et d'accepter d'autres types de paquets.

2 La sécurité passive

a sécurité passive ne va pas agir sur les flux. Elle se contente d'analyser les paquets de reconnaître certains paquets aux comportements suspects et d'alerter l'administrateur.

Le système de détection d'intrusion ou IDS (Internet Detection System) est une technique de la sécurité passive. C'est de cette technique que nous allons analyser en détail.

2.1 Une petite histoire : le voleur, le videur et la caméra cachée

 

Pour illustrer ces notions de sécurité : on peut voir le pare-feux comme un videur devant un casino qui peut décider d'autoriser ou non en regardant sa tête (ou en-tête dans le cas d'un pare-feux du type packet filtering) l'entrée d'une personne, tandis que la détection d'intrusion serait plutôt une caméra cachée qui peut être placée à l'entrée ou à l'intérieur du casino.

Si la caméra cachée filme la personne qui entre et en procédant à une analyse reconnaît cette personne, elle va alerter la direction la présence d'un intrus potentiellement dangereux pour le casino.

Dans cette histoire, le videur peut être faillible et ne voit pas tout car il y a toujours des malins qui grâce à de divers techniques tels l'attaque à fragmentation IP, usurpation ou vol d'identité ( adresse IP ) et ainsi tromper le videur.

 

La caméra cachée apporte donc un rôle complémentaire au rôle jouée par le videur.

2.2 Qu'est ce que la détection d'intrusion ?

La détection d'intrusion est un processus de découverte et d'analyse de comportements hostiles dirigés contre un réseau

Le but de la détection d'intrusion est d'apporter une aide complémentaire aux pare-feux et à l'administrateur à se prémunir contre les attaques et intrusions en tout genre.

Telle est le but de la détection d'intrusions

2.3 Quelques chiffres concernant les dégâts causés par des intrusions




3 Type de IDS

Il existe principalement 2 types d'IDS les NIDS et HIDS

3.1 NIDS

Les Network IDS ou détections d'intrusions réseaux

s'occupent de surveiller le trafic sur le réseau en confrontant les paquets détectés à un ensemble de signatures ou de règles . Si les règles sont violées ou si une signature s'applique, le NIDS enregistre l'événement comme une attaque .

On s'intéressera à Snort, NIDS évolué qui fonctionne sous Linux

Son principal atout est qu'il dispose d'une bibliothèque de signature gigantesque et elle est fréquentée mise à jour (cf www.snort.org)

3.2 Extrait d'une signature des nombreuses signatures de la bibliothèque

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"WEB-ATTACKS chown command attempt"; flags:A+; content:"/usr/sbin/chown";nocase; sid:1338; rev:1; classtype:web-application-attack;)

Si Snort voit un segment TCP

provenant du réseau $EXTERNAL_NET (on afffecte à cette variable une adresse IP) initiant une connexion de n'importe quel port à destination du serveur Web dont l'IP est défini dans $HTTP_SERVER

sur le port 80 avec un le drapeau ack positionné à 1 et contenant comme données « /usr/sbin/chown », alors une alerte est envoyé contenant vers l'administrateur (WEB-ATTACKS chown command attempt"; flags:A+; content:"/usr/sbin/chown";nocase; sid:1338; rev:1; classtype:web-application-attack;) vers l'administrateur.

3.3 Les HIDS ou Host IDS

Les systèmes orientés poste ont pour rôle de déterminer si un ordinateur donné est en train d'être attaqué ou si celui-ci a déjà été attaqué, résultant en une compromission de la sécurité et de l'intégrité du système . La surveillance après attaque se fait généralement par analyse des fichiers présents sur la machine .

Les principaux produits sur le marché considérés comme des HIDS sont Tripwire ( logiciel comparant les sommes de contrôle - checksums - des fichiers sensibles avec les valeurs calculées pour un état "sain" )

3.3.1 Fonctionnement de Tripwire

Le fichier de configuration contient la liste des fichiers et répertoires dont on veut tester l'intégrité. La base de référence est générée à la première utilisation du produit (mode initialisation). Il est possible d'appliquer des tests d'intégrité spécifiques à chaque entrée du fichier de configuration. Le mode vérification peut être lancé par un programme automatique.

Pendant l'exploitation, le logiciel utilise des filtres et compare les résultats avec la base de référence. Et si jamais, le checksum est différent de la base alors une alerte est envoyé vers l'administrateur

3.3.2 Schéma de fonctionnement de Tripwire (source Redhat )


Après l'installation, l'idée est de créer une base d'intégrité des fichiers

Et de lancer cron journalièrement pour voir si des fichiers ont été altérés ou non

Ces 2 types d'IDS ont tous les deux des défauts et des qualités, c'est pourquoi il est raisonnable de combiner les 2.

4 Les Honeypots : aka « leurres »

Ce sont des faux serveurs, appelés aussi pot de miel, dans lesquels on laisse un minimum de protection afin de récolter le maximum d'information sur la technique des hackers.

Le site http://project.honeynet.org/ est bien explicite

4.1 Deux manières supplémentaires pour se défendre

Voici d'autres manières de se défendre

5 Présentation de quelques attaques et de leurs signatures

5.1 Etablissement d'une connexion TCP par la méthode du « 3 way Handshake »


Dans cette cette connexion qualifié de « fiable » on a en fait 2 sockets qui sont établies.

Le client envoie un premier segment numéroté x le serveur lui répond en acquittant du segment reçu et est numéroté x+1.

A son tour le serveur envoie un segment portant le drapeau y que le client acquitte avec un numéro y+1

Il y a bien l'établissement de 2 canaux de communications donc il y a une connexion full duplex

D'un point de vue de la sécurité, elle n'est pas sûre puisqu'on peut deviner les numéros des séquences des segment TCP. C'est sur cette idée qu'est basée la « fameuse attaque Mitnick » alias « Vol d'une session TCP ». (cd doc explication en détail de l'attaque Mitnick en .pdf)

Schématiquement:

On considère un client qui communique avec un serveur. Le but du pirate est de syn-flooder le client en y récupérant les numéros de séquence puis de le mettre hors service

Ensuite le pirate se connecte au serveur avec les numéros de séquence prédits

Puis une fois le serveur compromis, le pirate peut y installer des backdoors.

Là les IDS peuvent être utiles puisqu'ils vont détecter les syn-floods via les NIDS et une non-intégrité du système des fichiers via les HIDS

5.2 L'attaque Syn-flood (pour contrer des outils tels kn4ark)

Son but est d'initier énormément de connexions avec l'envoi d'un drapeau SYN et lorsque le serveur lui renvoie un SYN/ACK, le client n'aquitte pas le SYN du serveur de tel sorte que le serveur en conservant les connexions pendantes se trouve saturé.

Ainsi le serveur ne peut plus répondre aux autres demandes ! Dans les noyaux 2.4.* de Linux, on peut fixer un temps de latence qui permet d'éviter le syn-flood.

L'idée est d'accepter les p premiers paquets qui arrivent mais s'ils arrivent en trop en même temps

Limit est un module de Netfilter qui est utilisé pour limiter la vitesse de concordance. Par défaut iptables est configuré avec 3 concordances par heure, avec une réserve de 5.

L'option -m limit --lim nb_paquet/s permet de fixer le nombre de concordance par unité de temps.

Une documentation bien détaillée de Iptables peut-être à trouvée sur http://netfilter.samba.org

Avec iptables (sur un noyau 2.4.* ) ajouter la règle suivante

Iptables 'A FORWARD 'p tcp 'syn 'm limit -limit 1/s 'j ACCEPT

# On accepte une concordance de 1 segment TCP par seconde avec le drapeau syn de positionné, et ave une réserve de 5 segments.

Nb : on parle de segment lorsque que c'est encapsulé par le protocole TCP (niveau 4) et de paquets lorsque c'est encapsulé par le protocole IP (niveau 3)

C'est l'un des points forts du firewall iptables qui a trouvé une manière astucieuse de contrer le syn-flooding

Il faut également également spécifier des paramètres des fichiers dans le répertoire /proc/sys/net/ipv4/.

usr/src/linux/Documentation/networking/ip-sysctl.txt, nous donne tous les détails le site de linuxdoc nous en donne aussi quelques explications (en français J)

http://www.linux-france.org/prj/inetdoc/i/net/guides/Advanced-routing-Howto

On peut spécifier le temps maximum que le système attendra le paquet SYN/ACK (a) , le nombre maximum de SYN en attente (b) et aussi le nombre maximum de paquets SYN en attente dans la file.(c)

(a) $ cat /proc/sys/net/ipv4/timeout_synack // 100 (l'unité est en s)

(b) $ cat /proc/sys/net/ipv4/timeout_synrecv // 10

(c) $ cat /proc/sys/net/ipv4/tcp_max_syn_backlog // 200

Le conseil du jour : Si vous firewall est en train de subir une tempête de syn-flood, sans hésiter baisser le temps dans la file d'attente

Par exemple, dans le /proc/sys/net/ipv4/ip_forward, il faut mettre un « 1 » pour pouvoir activer le routage des paquets

Pour contrer ces attaques, on doit pouvoir aussi mettre en 'uvre des moyens anti scan furtifs

Iptables 'A FORWARD 'p tcp 'tcp-flags SYN,ACK, FIN, RST RST ' m limit -limit 1/s 'j ACCEPT

Explications :

Sur segments TCP que le firewall reçoit, il va examiner les drapeaux SYN,ACK, FIN, RST et si seulement RST est présent alors ce segment est accepté à raison d'une concordance de 1/s

5.3 Le ping de la mort ! :)

L'idée est d'envoyer un paquet icmp d'une longueur supérieur à 65 535 octets, comme ces paquets ne peuvent pas passer tels quels ,ils sont alors fractionnés. Quand la cible reçoit ces paquets et les réassemble, le système voit son tampon débordé et peut amener un plantage de la machine

Contrer le ping de la mort

Les noyaux à partir de 2.0.24 sont toutes imunisés contre cette attaque. Les nouvelles versions de Windows aussi : (

6 Mesure de précautions à prendre en compte

Il faut utiliser systématiquement si possible la commande md5sum qui vérifie que le programme téléchargé correspond bien au programme présenté sur la page web (à moins que le serveur web ait été aussi compromis), en comparant la valeur du md5sum

Pour les connexions à distance utilisez ssh (Secure Shell) qui permet de crypter les communications à la place des rhost, rsh, rlogin qui eux en crypte pas les données envoyées dans le canal de communication.

Sur des Unix, n'autorisez qu'un seul groupe a pouvoir exécuter la commande « su » (cf le groupe wheel sous OpenBSD) on crée ainsi une petite barrière supplémentaire

Se tenir au courant des patchs et les appliquer

7 Faiblesse des IDS

Malgré les performances des IDS, ceux ci peuvent cependant être outrpassés par la fragmentation IP (option 'f de nmap), signalons au passage que la dernière version de Snort pallie à ce problème. Un petit coup d'oeil sur le firewalking ou comment contourner les firewalls :)

Par ailleurs, les IDS n'ont encore que peu d'années d'expérience cependant les technologies des IDS évoluent très vite (cf la liste de quelques spécimens )

8 Conclusion

La sécurité absolu n'existe malheureusement pas. Mais certaines précautions peut faire diminuer drastiquement le risque d'avoir un système compromis. Ces mesures doivent être d'autant plus strictes quand les données ont un caractère sensible.

9 Bibliographie

9.1 Site Web :

http://www.hsc.fr/ressources

http://www.tripwire.org

http://www.snort.org

http://www.cert.org

L'attaque Mitnick en détail (cf le lien)

9.2 Livres :

  1. . Détection des intrusions réseaux Stephen Nortcutt, Judy Novak, Donald MacLahan editions Campus Press

  2. · Halte aux Hackers

  3. · Halte aux Hackers - Linux

9.3 Quelques autres IDS

About this document ...

Système de détection d'intrusions

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -no_subdir -split 0 -show_section_numbers /tmp/lyx_tmpdir10966UfXEWL/lyx_tmpbuf109668sl94j/IDS.tex

The translation was initiated by Debian User on 2002-02-09


next_inactive up previous
Debian User & Emacs User
2002-02-09

Message subliminal: Osez la liberté , osez GNU/Debian !!!
Des mises à jour peuvent être apportées sur mon site EXPOSES