![]() |
guill.net
-
La page des réseaux
|
![]() |
|
![]() ![]() ![]() |
1.1 Pourquoi les systèmes sont-ils vulnérables?2 Classification des systèmes de détection d'intrusions
1.2 Introduction à la sécurité des systèmes d'informations
1.3 L'audit de sécurité
2.1 Approche comportementale et approche par scénarios3 Les systèmes de détection d'intrusions actuels
2.2 Autres méthodes de classification des systèmes de détection d'intrusions
3.1 Modèle de base d'un systèmes de détection d'intrusions4 Utilisation des agents mobiles dans les systèmes de détection d'intrusions
3.2 Imperfections dans les implémentations actuelles
3.3 Conditions de fonctionnement des systèmes de détection d'intrusions
4.1 Qu'est-ce qu'un agent mobile ?5 Perspectives pour la recherche
4.2 Avantages et inconvénients des agents mobiles
4.3 Conclusion et perspectives pour les agents mobiles
Bibliographie
1
Introduction
La première raison qui fait que les systèmes sont mal protégés est que la sécurité coûte chère. Les organismes n'ont pas de budget alloué à ce domaine. Elle souligne également que la sécurité ne peut être sûr à 100%, voire qu'elle est même souvent innefficace. Aurobino SUNDARAM nous en donne les raisons : les bugs dans les programmes sont courants et seront toujours exploitables par les attaquants. De plus, même la cryptographie a ses faiblesses et les mots de passe, par exemple, peuvent être cassés. Il n'existe pas d'organisation centralisée gèrant l'ensemble des clefs et autres éléments de cryptographie. Enfin, même un système fiable peut être attaqué par des personnes abusant de leurs droits légitimes.
Dorothy DENNING ajoute d'autres raisons démontrant la vulnérabilités des systèmes : la politique de sécurité est complexe et est basée sur des jugements humains. On trouve notamment des faiblesses dues à la gestion et à la configuration des systèmes. Il y a aussi en permanence de nouvelles technologies qui émergent, et par là-même, de nouveaux points d'attaques. En dernier point, les organisations acceptent de courir ce risque, la sécurité n'étant pas leur principale priorité.
Pour exploiter ces faiblesses, les attaquants profitent de la négligence des utilisateurs vis-à-vis de leurs droits et autorisations d'accès, en se faisant passer pour un employé du service informatique dans le but d'obtenir des informations. Ils peuvent aussi casser les clefs d'une longueur insuffisante ou les mots de passe par une attaque systématique. Ils peuvent se mettre à l'écoute sur le réseau pour obtenir des informations. Ils peuvent changer leur adresse réseau pour se faire passer pour quelqu'un de confiance. Ils ont la possibilité d'injecter du code comme un virus ou un cheval de Troie sur la cible. Enfin, ils peuvent exploiter les faiblesses des applications, des protocoles ou des systèmes d'exploitation.
Du fait du nombre toujours croissant de personnes ayant accès à ces systèmes par le biais d'Internet, la politique de sécurité se concentre généralement sur ce point d'entrée du réseau interne. La mise en place d'un pare-feu est devenu indispensable afin d'interdire l'accès aux paquets indésirables. On peut, de cette façon, proposer une vision restreinte du réseau interne vu de l'extérieur et filtrer les paquets en fonction de certaines caractéristiques telles qu'une adresse ou un port de communication.
Cependant, ce système de forteresse est insuffisant s'il n'est pas accompagné d'autres protections. Citons la protection physique des informations par des accès contrôlés aux locaux, la protection contre les failles de configuration par des outils d'analyse automatique des vulnérabilités du système, ou encore la protection par des systèmes d'authentification fiables pour que les droits accordés à chacun soient clairement définis et respectés, ceci afin de garantir la confidentialité et l'intégrité des données.
Faire de la sécurité sur des systèmes d'informations consiste à s'assurer que celui qui modifie ou consulte des données du système en a l'autorisation et qu'il peut le faire correctement car le service est disponible.
Même en mettant en place tous ces mécanismes, il reste encore beaucoup de moyens pour contourner ces protections. Pour les compléter, une surveillance permanente ou régulière des systèmes peut être mise en place : ce sont les systèmes de détection d'intrusions. Ils ont pour but d'analyser tout ou partie des actions effectuées sur le système afin de détecter d'éventuelles anomalies de fonctionnement.
Voici les types d'informations à collecter sur les systèmes pour permettre la détection d'intrusions. On y trouve les informations sur les accès au système (qui y a accédé, quand et comment), les informations sur l'usage fait du système (utilisation du processeur, de la mémoire ou des entrées/sorties) et les informations sur l'usage fait des fichiers. L'audit doit également permettre d'obtenir des informations relatives à chaque application (le lancement ou l'arrêt des différents modules, les variables d'entrée et de sortie et les différentes commandes exécutées). Les informations sur les violations éventuelles de la sécurité (tentatives de commandes non autorisées) ainsi que les informations statistiques sur le système seront elles aussi nécessaires.
Notons que ces nombreuses informations occupent beaucoup de place et sont très longues à analyser. Ces informations devront être, au moins pour un temps, stockées quelque part avant d'être analysées par le système de détection d'intrusions.
La deuxième chose que l'on peut chercher dans les traces d'audit est une signature d'attaque. Cela correspond à l'approche par scénarios. Les attaques connues sont répertoriées et les actions indispensables de cette attaque forment sa signature. On compare ensuite les actions effectuées sur le système avec ces signatures d'attaques. Si on retrouve une signature d'attaque dans les actions d'un utilisateur, on peut en déduire qu'il tente d'attaquer le système par cette méthode.
Plusieurs méthodes différentes peuvent être mises en oeuvre pour détecter le comportement déviant d'un individu par rapport à un comportement antérieur considéré comme normal par le système. La méthode statistique se base sur un profil du comportement normal de l'utilisateur au vu de plusieurs variables aléatoires. Lors de l'analyse, on calcule un taux de déviation entre le comportement courant et le comportement passé. Si ce taux dépasse un certain seuil, le système déclare qu'il est attaqué. Les systèmes experts, eux, visent à représenter le profil d'un individu par une base de règles créée en fonction de ses précédentes activités et recherchent un comportement déviant par rapport à ces règles. Une autre méthode consiste à prédire la prochaine commande de l'utilisateur avec une certaine probabilité. Notons également l'utilisation des réseaux de neurones pour apprendre les comportements normaux des utilisateurs ou encore l'utilisation de la méthode dîte "d'immunologie" se basant sur le comportement normal du système et non des utilisateurs.
De même que pour l'approche comportementale, plusieurs méthodes peuvent être utlisées pour gérer les signatures d'attaques. Les systèmes experts les représentent sous forme de règles. La méthode dite du "Pattern Matching" (reconnaissance de forme) représente les signatures d'attaques comme des suites de lettres d'un alphabet, chaque lettre correspondant à un évènement. Les algorithmes génétiques sont également utilisés pour analyser efficacement les traces d'audit. Les signatures d'attaques peuvent être également vues comme une séquence de changements d'états du système. La simple analyse de séquences de commandes a été rapidement abandonnée car elle ne permettait pas la détection d'attaques complexes. Pour l'approche par scénarios, le poids donné à chaque entité (audit, base de signatures d'attaques et mécanisme d'analyse) et la façon dont elles sont mises en relation est décisif pour obtenir un système de détection efficace.
Chacune des deux approches a ses avantages et ses inconvénients, et les systèmes de détection d'intrusions implémentent généralement ces deux aspects. Avec l'approche comportementale, on a la possibilité de détecter une intrusion par une attaque inconnue jusqu'alors. Par contre, le choix des paramètres est délicat, ce système de mesures n'est pas prouvé exact, et on obtient beaucoup de faux positifs, c'est-à-dire que le système croit être attaqué alors qu'il ne l'est pas. Qui plus est, un utilisateur peut apprendre à la machine le comportement qu'il souhaite, notamment un comportement totalement anarchique ou encore changer lentement de comportement. Avec l'approche par scénarios, on peut prendre en compte les comportements exacts des attaquants potentiels. Les inconvénients sont dans la base de règles qui doit être bien construite et les performances qui sont limitées par l'esprit humain qui les a conçues. Notons également que l'approche par scénarios ne permet évidemment pas de détecter une attaque inconnue jusque là.
On peut classer les systèmes en fonction de la réponse qu'il apporte à l'intrusion qu'ils ont détectée. Certains systèmes se contentent d'émettre une alarme à l'administrateur (réponse passive) tandis que d'autres essayent de contrer l'attaque en cours (réponse active). Il y a pour l'instant deux principaux mécanismes de réponse implémentés : les alarmes qui permettent de prévenir rapidement l'administrateur et le filtrage des paquets venant de l'attaquant.
Les systèmes peuvent être classés en fonction de la provenance de leurs données d'audit, selon qu'elles viennent du système, des applications ou des paquets du réseau.
Certains systèmes surveillent en permanance le système d'informations tandis que d'autres se contentent d'une analyse périodique.
On peut très bien envisager de se baser sur d'autres paramètres comme le délai de détection, c'est-à-dire si le système détecte les intrusions en temps réel ou non, sa capacité de traiter les données de façon distribuée, sa capacité à répondre aux attaques sur lui-même ou encore son degré d'interopérabilité avec d'autres systèmes de détection d'intrusions.
Stefan AXELSSON donne un modèle d'architecture de base pour un système de détection d'intrusions. Du système surveillé, un module s'occupe de la collecte d'informations d'audit, ces données étant stockées quelque part. Le module de traitement des données intéragit avec ces données de l'audit et les données en cours de traitement, ainsi qu'avec les données de référence (signatures, profils) et de configuration entrées par l'administrateur du système de sécurité. En cas de détection, le module de traitement remonte une alarme vers l'administrateur du système de sécurité ou vers un module. Une réponse sera ensuite apporté sur le système surveillé par l'entité alertée.
Les imperfections de ce type de systèmes monolithiques et même des systèmes de détection d'intrusions en général sont à prendre en compte. Stefano Martino souligne que si un certain nombre de techniques ont été développées jusque là pour les systèmes de détection d'intrusions, la plupart analysent des évènements au niveau local et se contentent de remonter une alarme sans agir. Ils détectent de plus les activités dangereuses d'un utilisateur sans se préoccuper du code dangereux.
D'autres imperfections plus
générales sont relevables dans les systèmes de détection
d'intrusions actuels :
- Même en implémentant
les deux types d'approches, certaines attaques sont indécelables
et les systèmes de détection sont eux-même attaquables.
Les approches comportementale et par scénarios ont elles-mêmes
leurs limites.
- Les groupes de travail
sur ce sujet sont relativement fermés et il n'y a pas de méthodologie
générique de construction. Aucun standard n'a pour l'instant
vu le jour dans ce domaine. Des groupes y travaillent, notament au sein
de la DARPA et de l'IETF.
- Les mises à jour
de profils, de signatures d'attaques ou de façon de spécifier
des règles sont généralement difficiles. De plus,
les systèmes de détection d'intrusions demande de plus en
plus de compétence à celui qui administre le système
de sécurité.
- Les systèmes de
détection sont généralement écrits pour un
seul environnement et ne s'adapte pas au système surveillé
alors que les systèmes d'informations sont, la plupart du temps,
hétérogènes et utilisés de plusieurs façons
différentes.
- Aucune donnée n'a
été pour l'instant publiée pour quantifier la performance
d'un système de détection d'intrusions. De plus, pour tester
ces systèmes, les attaques sont de plus en plus difficile à
simuler.
De ces imperfections, on a tenté de répondre à la question "Quelles sont les obligations d'un système de détection d'intrusions?" et on en a déduit des conditions indispensables pour un bon fonctionnement de ces systèmes.
Un système de détection d'intrusions se doit évidemment de faire une surveillance permanente et d'émettre une alarme en cas de détection. Il doit de fournir suffisamment d'informations pour réparer le système et de déterminer l'étendu des dommages et la responsabilité de l'intrus. Il doit être modulable et configurable pour s'adapter aux plates-formes et aux architectures réseaux. Il doit pouvoir assurer sa propre défense, comme supporter que tout ou partie du système soit hors-service. La détection d'anomalies doit avoir un faible taux de faux positifs. Le système de détection doit tirer les leçons de son expérience et être fréquemment mis à jour avec de nouvelles signatures d'attaques. De plus, il doit pouvoir gérer les informations apportées par chacune des différentes machines et discuter avec chacune d'entre elles. En cas d'attaques, il doit être capable d'apporter une réponse automatique, même aux attaques coordonnées ou distribuées. Ensuite, le système de détection devra également pouvoir travailler avec d'autres outils, et notamment ceux de diagnostic de sécurité du système. Il faudra, lors d'une attaque, retrouver les premiers évènements de corruption pour réparer correctement le système d'informations. Enfin, il va de soi qu'il ne doit pas créer de vulnérabilités supplémentaires et qu'il doit aussi surveiller l'administrateur système.
Les évènements anormaux ou les brèches dans la sécurité doivent être rapportés en temps réel pour minimiser les dégâts. Le système de détection d'intrusions ne devra pas donner un lourd fardeau au matériel surveillé, ni interférer avec les opérations qu'il traite. Il doit pouvoir s'adapter à la taille du réseau qu'il surveille.
Pour pallier à un certain nombre de ses problèmes et remplir ses conditions, la technologie des agents mobiles a été appliquée aux systèmes de détection d'intrusions. Le paragraphe suivant explique le principe, les avantages et les inconvénients des agents mobiles.
Ainsi, Chaque agent est un programme léger, insuffisant pour faire un système de détection d'intrusions entier car il n'a qu'une vision restreinte du système. Si plusieurs agents coopèrent, un système de détection plus complet peut être construit, permettant l'ajout et le retrait d'agents sans reconstruire l'ensemble du système.
La première caractéristique dont ont peut tirer des avantages est la mobilité des agents. Le fait qu'il n'y ait pas de programme principal qui se sert des autres modules comme esclaves mais plutôt la présence de plusieurs entités intelligentes qui collaborent, fait que si une des entités s'arrête, le système continue de fonctionner.
Quatre classes peuvent être faites pour caractériser ces avantages :
Si les systèmes par agents mobiles ont des avantages indéniables, ils ont également des inconvénients notables. Il est clair que le codage et le déploiement sera difficile pour assurer un code code sûr avec beaucoup de fonctionnalités.
Il y a d'autres inconvénients : quand les agents se déplacent, un noeud dépourvu d'agent est vulnérable pendant un moment. De plus, si les agents ont besoin d'un apprentissage, ce temps peut être long. Il souligne ensuite quelques unes des imperfections des systèmes de détection d'intrusions qui ne sont pas corrigées par le système des agents mobiles. Ils peuvent être corrompus et ils imposent une utilisation des ressources et que quelque soit le système. Enfin, certains attaquants réussiront toujours à obtenir des droits pendant quelques temps avant d'être détectés.
Enfin, quelques points resteront à étudier, comme la performance, car il faut voir la rapidité avec laquelle l'agent détecte et remonte l'information d'intrusion, la taille du code, car les systèmes de détection sont complexes et les agents risquent de demander d'assez gros programmes et le temps d'adaptation des agents à un système, car il y aura un manque de connaissance de base étant donné que beaucoup de plates-formes et de configurations sont différentes.
Les avantages des agents mobiles pourront être exploités de plusieurs façons : en prévoyant de la surveillance en plus de la détection, en fournissant une réponse aux attaques et en augmentant la fiabilité du système. On peut aussi tirer profit de la diversité en représentant les signatures d'attaques par une méthode différente pour chaque agent.
Les mécanismes idéaux de réponses aux attaques consisteraient à supprimer l'action de l'intrus dans la cible, éteindre la cible et protéger le reste du réseau. Dans le cas des attaques internes, il faudrait bloquer l'attaquant, éteindre sa machine ou être capable de remonter à l'attaquant très rapidement pour surveiller ses actions. Enfin, il faudrait que le système de détection puisse toujours modifier les tables de filtrage des routeurs et pare-feux, ce qui est déjà le cas de certains systèmes du commerce.
L'approche par agents mobiles apportent là aussi une solution puisqu'il n'est pas nécessaire d'avoir un serveur de sécurité dans le sens où les agents peuvent automatiquement se mouvoir dans le réseau et installer les composants appropriés sur les éléments qu'il faut. Ils peuvent traquer les attaquants et rassembler des preuves de façon automatique ou encore effectuer des opérations sur la machine de l'attaquant, sur la machine cible ou sur le réseau en les mettant, par exemple, en quarantaine.
Un certain nombre de questions restent ouvertes :