Systèmes de détection d'intrusions Linux
Systèmes de détection d'intrusions Linux
d'intrusions dans un
environnement Linux
Je tiens avant tout à remercier les responsables de l'INRA de Jouy-en-Josas pour m'avoir
accueilli au sein de leur entreprise, et plus particulièrement mon maître de stage, Christophe Caron,
pour son soutien et ses bons conseils tout au long de mon séjour à l'unité MIG. Je remercie
également toutes les autres personnes qui m'ont aidé.
Un grand merci aux enseignants de mon université qui m'ont permis, grâce à leurs cours et à
leurs travaux dirigés, d'obtenir les connaissances nécessaires à la réussite de mon stage et à mon
intégration dans le monde du travail.
Introduction.......................................................................................................................................... 4
1. Environnement professionnel........................................................................................................... 6
1.1. INRA.........................................................................................................................................6
1.2. Centre de Jouy-en-Josas............................................................................................................9
1.3. Unité MIG et la plateforme Migale........................................................................................ 10
2. Analyse du sujet............................................................................................................................. 11
2.1. Existant................................................................................................................................... 11
2.2. Cahier des charges.................................................................................................................. 13
2.3. Systèmes de détection d'intrusions......................................................................................... 15
2.3.1. Caractéristiques............................................................................................................... 15
2.3.2. Choix du système de détection........................................................................................18
2.4. Snort........................................................................................................................................20
2.4.1. Architecture réseau......................................................................................................... 20
2.4.2. Fonctionnement...............................................................................................................22
3. Mise en oeuvre du système de détection........................................................................................ 25
3.1. Démarche de mise en oeuvre.................................................................................................. 25
3.2. Gestion des intrusions.............................................................................................................27
3.2.1. Réactions immédiates : blocages et alertes..................................................................... 27
3.2.2. Consultations et analyses................................................................................................ 28
3.3. Optimisation du système de détection d'intrusions.................................................................33
3.3.1. Amélioration de la sécurité............................................................................................. 33
3.3.2. Amélioration des performances...................................................................................... 37
3.4. Validations et résultats............................................................................................................40
Conclusion.......................................................................................................................................... 46
A. Lexique.......................................................................................................................................... 48
B. Ressources documentaires............................................................................................................. 51
L'institut fait partie du milieu de la recherche qui m'a toujours attiré : les sciences et la
découverte de nouveaux éléments me motivent. Ce stage me permettra donc d'en apprendre
davantage sur les activités d'une unité de recherche. Ainsi je disposerai d'informations
supplémentaires qui me permettront d'évaluer mon intérêt pour les métiers de ce milieu.
D'autre part, les domaines du réseau, des systèmes et de la sécurité interviennent dans le stage.
Hors, je trouve que la mise en pratique de ces derniers me permettrait de mieux les comprendre et
de valider les nombreuses connaissances acquises.
Enfin, ma formation universitaire étant orientée vers le développement de logiciels, ce stage me
permettra également d'élargir mes compétences.
De nos jours, l'ouverture des entreprises au monde extérieur devient de plus en plus
nécessaire pour offrir des services adaptés aussi bien aux employés, aux clients ou encore aux
partenaires. Cette ouverture augmente considérablement les risques d'attaques informatiques par des
personnes malveillantes dont le but est souvent un gain financier ou simplement un amusement.
L'objectif du stage consiste à mettre en place, suite à l'apparition de problèmes de sécurité sur des
machines sensibles de l'unité MIG, un système de détection des intrusions apportant des
fonctionnalités de réaction face à une attaque. La difficulté concerne principalement le système de
détection des intrusions lui-même, car l'unité n'a jusqu'à lors aucune donnée précise sur son
fonctionnement, son efficacité et les conséquences de son implantation sur le réseau. L'unité ne
cherche pas à obtenir une sécurité maximale, mais elle souhaite mettre un système fiable de
détection d'intrusions afin de d'améliorer la sécurité.
1.1. INRA
Au cours des dernières années, son objectif premier a largement été modifié. En effet, à
l'origine l'institut n'avait en charge que la remise en condition de l'agriculture française suite aux
désastres engendrés de la Seconde Guerre Mondiale en s'appuyant sur la science et la technologie.
Fort de ce succès, l'INRA a pu se diriger par la suite vers des objectifs plus large mêlant
l'agriculture à l'environnement et à l'alimentation. On retrouve donc les secteurs d'activité suivants :
Organigramme de l'INRA
La principale recette de l'institut (82% des recettes) provient du budget civil de recherche-
développement (6%). Elle correspond aux subventions des ministères de tutelle (ministère délégué à
l'Enseignement et à la Recherche, et ministère de l'Agriculture et de la Pêche).
Le centre INRA de Jouy-en-Josas a été créé en 1950. Sa construction a été lancée seulement
quelques années après la création de l'institut afin de mener des recherches scientifiques sur les
espèces d'élevages telles que les bovins, les volailles ou encore les poissons.
D'une superficie de 70000m2, il abrite 30 laboratoires et près de 1300 personnes soit environ 15%
des effectifs totaux. On rencontre parmi ce personnel une importante diversité de métiers. Ainsi
animaliers, biologistes, biochimistes, informaticiens, nutritionnistes, vétérinaires, généticiens, mais
aussi documentalistes, gestionnaires, et techniciens de maintenance se côtoient pour participer aux
activités de recherche du centre.
Les activités du centre de Jouy-en-Josas sont principalement liées aux productions animales et à
l'agro-alimentaire et plus précisément à la génétique des animaux d'élevage, à la microbiologie, à la
nutrition humaine ou à la biométrie. Il offre des nouveaux axes de développements et de recherches
grâce à la mise en place de la biologie intégrative et de la bioinformatique.
Le site de Jouy-en-Josas dispose par ailleurs d'un budget de 29 millions d'euros dont 62%
proviennent de subventions de l'Etat, le reste des recettes et des contrats. Depuis toujours, l'INRA
mène en effet une étroite collaboration avec les industriels et le monde agricole, ce qui a donné
naissance à de nombreux contrats entre ces différents éléments.
L'unité Mathématique, Informatique et Génome a été crée en 2000 pour répondre aux
avancées de la bioinformatique. Elle a pour mission de :
− participer à des projets de génomique choisis pour leur intérêt scientifique ou stratégique.
Cette unité est rattachée à trois départements PHASE (Physiologie Animale et Systèmes
d'Elevages), MICA (Microbiologie et Chaîne Alimentaire), et MIA (Mathématique et Informatique
Appliquées).
− d'offrir aux biologistes les outils et les données nécessaires à une analyse bioinformatique,
2.1. Existant
Le centre de Jouy-en-Josas est organisé au niveau informatique de la même manière que les
aux autres centres de l'INRA. Chaque centre possède une EIC (Equipe Informatique de Centre) en
charge de l'informatique collective. L'EIC s'occupe en autre des communications vers l'extérieur et
des connections réseaux Ethernet entre les laboratoires du centre. Ces liaisons entre laboratoires
sont de types fibres optiques. L'EIC ne gère donc pas l'organisation interne des unités. Les centres
sont reliés à l'Internet via le REseau NATional d'Enseignement et de Recherches (RENATER).
Parmi les serveurs, certains, de part leurs fonctions, sont ouverts sur l'Internet. Il est évident que ce
type d'ouverture constitue un risque probable de tentatives de piratage. Bien que les
communications soient en partie filtrées par la présence de systèmes de protection (ex: pare-feu)
situées en amont de l'unité, il existe tout de même de nombreux dangers pouvant nuire à son bon
fonctionnement. Avec l'accroissement des ressources de la plateforme durant ces trois dernières
années, le nombre d'utilisateurs et les échanges de données deviennent de plus en plus importants.
Ces nouveaux usages rendent la plateforme encore plus sensible dans le domaine de la sécurité.
Malgré le suivi des mises à jour de sécurité, et l'application d'une gestion des comptes
utilisateurs de plus en plus contraignantes, il apparaît aujourd'hui qu'une action plus en amont
pourrait apporter des améliorations notables en matières de sécurisation du réseau informatique de
la plateforme.
Suite aux problèmes de tentatives d'intrusions, il devient de plus en plus pressant de mettre
en place des systèmes de détection automatique afin d'augmenter le niveau de sécurité de l'ensemble
du système informatique de l'unité MIG.
Nous avons décidé d'étudier les systèmes de détection d'intrusions (IDS en anglais) notamment les
applications Prelude et Snort, puis de mettre en place celui qui conviendrait le mieux aux besoins
exprimés. Le système choisi devra respecter les exigences suivantes :
2. L'IDS devra s'inscrire dans l'architecture modulaire de la plateforme. Un IDS pouvant dans
certains cas se révéler extrêmement complexe et coûteux, l'étude des cas de détections dans
le cadre de la gestion d'un campus ou d'un réseau d'interconnexion ne doit pas être pris en
compte. Il faudra se concentrer sur le côté local de la plateforme, la sécurité du campus
(ports ouverts) étant gérée par EIC.
3. L'intégration du système de détection ne doit pas porter atteinte aux performances actuelles
des serveurs. Ce point est particulièrement important du fait de la nature des traitements de
type calculs intensifs qui sont opérés sur la plateforme.
4. Les machines à surveiller sont principalement des serveurs ouverts vers l'extérieur. Il y en a
actuellement trois, à savoir Tulipe (serveur fichier), Anémone (serveur web), et Edelweiss
(serveur projet). Les intrusions portant sur l'un d'entre eux sont à détecter en priorité.
Néanmoins, à terme une seule machine sera susceptible d'être directement attaquée. Ainsi, la
plupart des choix pourront être fait pour convenir à la situation actuelle, mais il faut tout de
même envisager les possibilités d'évolution.
5. L'unité MIG travaillent principalement avec des logiciels en technologie open source. Le
choix de l'IDS devra en tenir compte. Une première vieille technologique des
administrateurs a permis d'envisager l'étude des solutions Prelude et Snort répondant à ce
critère.
7. La tracabilité des attaques et la conservation d'un historique doit faire partie de l'étude. La
possibilité d'étudier à posteriori les intrusions et d'obtenir de manière simple des
informations pratiques (machine la plus touchée, port le plus utilisé, etc.) permettrait à
l'administrateur de concevoir un plan de sécurité plus adapté à la plateforme.
2.3.1. Caractéristiques
Un système de détection d'intrusions (IDS) est un outil, logiciel et/ou matériel, permettant de
découvrir une activité anormale sur une machine ou un réseau informatique. Avant de me lancer
dans la mise en place d'un IDS, j'ai réalisé un état de l'art. La veille technologique m'a permis de
trouver de la documentation sur ces derniers m'offrant ainsi des connaissances supplémentaires.
Grâce à cela, je pourrais déterminer plus tard quel système de détection choisir.
Tout d'abord, les IDS disposent de plusieurs approches d'analyse pour rechercher les
éléments suspects. On en dénombre deux principales : l'approche par scénario et l'approche
comportementale, chacune ayant des avantages et des inconvénients.
L'approche par scénario fonctionne en tout point comme un anti-virus. Cette méthode de détection
s'appuie sur une base de données regroupant les signatures des attaques connues. Une signature
correspond à l'emprunte d'une intrusion : elle est donc unique. Ce procédé est donc très efficace
contre les attaques répertoriées dans la base, mais en contrepartie reste inopérant face à des
intrusions inconnues. C'est pourquoi une mise à jour fréquente des signatures est fortement
conseillée pour garantir une meilleure sécurité.
L'approche comportementale compare les activités d'un système au fonctionnement normal que ce
dernier aurait eu dans un environnement sain (dépourvu d'intrusions). Si cette activité ne correspond
pas au comportement attendu, elle est alors considérée comme suspecte. Avec cette approche il est
possible, contrairement à l'approche par scénario, de découvrir de nouvelles attaques. Néanmoins, il
faut savoir que cette méthode consomme relativement plus de puissance machine et également plus
d'espace disque pour sauvegarder les données, ce qui peut être pénalisant pour des machines de
faibles puissances ou exécutant d'autres applications.
Une autre caractéristique des IDS concerne leurs façons de réagir lorsqu'une alerte est
générée. Il existe deux modes de réaction possible : le mode passif ou le mode actif.
Dans le cas du mode passif, l'IDS ne réalisera aucune action pour empêcher l'attaque de se
déclencher. Son objectif principal est d'informer via divers mécanismes une machine et/ou une
personne humaine. Par exemple, il pourrait envoyer un courriel contenant les données d'une
intrusion à l'administrateur ou encore inscrire dans les fichiers journaux du système les alertes
générées.
En mode actif, un IDS est beaucoup plus intéressant car il va pouvoir exécuter des actions pour
stopper une intrusion. Il est alors possible de manipuler d'autres éléments du réseau, comme un
pare-feu, depuis l'IDS afin de bloquer par exemple une communication non autorisée. Dans le cadre
des objectifs déterminés par le cahier des charges, il est clair que posséder ce type de réaction est
indispensable.
Enfin, il existe plusieurs types d'IDS qui sont plus ou moins efficace selon le contexte.
L'HIDS (de l'anglais, Host based IDS) est un mécanisme de détection placé sur une machine unique
et n'analysant que cette dernière. Son utilisation sur les machines susceptibles d'être attaquées et
contenant des données sensibles comme certains serveurs par exemple est donc recommandé. Dans
le cadre de son activité, il est normal qu'il utilise l'approche comportementale car cette dernière est
très efficace dans la surveillance approfondie d'un seul système. L'HIDS se base donc sur une
analyse du réseau (protocoles, horaires d'activité, etc.), de l'activité de la machine (ressources
consommées, nombre et liste des processus et des utilisateurs, etc.) et de l'activité des utilisateurs
Le NIDS (de l'anglais, Network IDS) permet de contrôler non plus une seule machine mais les flux
circulant sur le réseau. L'avantage réside dans le fait qu'il est alors possible de détecter le passage
d'une intrusion avant même qu'elle n'atteigne sa cible et ceci pour tout ou partie des machines du
réseau. Néanmoins l'architecture de ce réseau ainsi que le type de données peuvent empêcher la
détection d'une attaque. Par exemple, les circuits virtuels privés (VPN) ou encore les données
cryptées bloquent l'analyse du trafic. Par ailleurs, un trop fort débit risque de submerger le NIDS.
Ce dernier ne pourra alors pas scanner l'ensemble des flux, il devient alors un élément peu fiable et
donc dangereux pour la sécurité de la plateforme. Ce point est particulièrement important et
demande une grande attention lors de l'installation d'un NIDS sur le réseau. Il faut trouver des
moyens d'éviter les pertes de données en configurant et paramétrant correctement le système de
détection. Sachant qu'il est également possible d'implanter cet IDS directement sur une machine
hôte, comme pour un HIDS, on peut grâce à cela garder un système de détection efficace tout en ne
surchargeant pas cette dernière.
Il existe un dernier type d'IDS relativement récent appelé le NNIDS (IDS à noeud de réseau). Il
vient corriger les problèmes de submersion du NIDS en intégrant un système de sélection de flux à
analyser. Cependant cette technologie est émergente. De ce fait, nous disposons de très peu de
documentation, et aucun outil en source ouverte n'implémente cet IDS. Nous avons donc décidé de
ne pas le tester, préférant nous servir de moyens connus et fiables pour mettre en place un système
de détection des intrusions.
Après avoir déterminer au mieux les caractéristiques des systèmes de détection d'intrusions,
nous devons maintenant choisir celui qui s'inscrira correctement dans l'architecture de la plateforme
Migale. Les solutions évoquées par les responsables, à savoir Prelude et Snort, offrent toutes les
deux des éléments divergents qu'il convient d'étudier. D'autres solutions existent telles que
l'application Shadow mais sa popularité face aux deux premiers reste très en retrait. De ce fait, je
me suis concentré sur l'étude de Prelude et de Snort. J'ai donc dans un premier temps pour objectifs:
Les deux solutions n'ont pas été sélectionnées au hasard par les administrateurs. Elles font
parties des logiciels en source ouverte (dit open source). Ce premier point répond à une exigence de
la plateforme sur les caractéristiques des applications à installer.
Ces deux IDS ont la particularité de fonctionner en mode passif. Hors ce mode ne permet pas de
réaliser des actions sur l'attaque en elle même. Le cahier des charges stipule pourtant de pouvoir
bloquer une intrusion. A priori Prelude et Snort ne semblent donc pas convenir tels quels pour
répondre à ce point. Cependant comme annoncé précédemment, ils disposent tous les deux d'un
grand nombre de contributions et de logiciels supplémentaires. Et parmi ces éléments certains
offrent des moyens d'interaction et de blocage. Malgré une complexification de la chaîne
d'exécution, nous utiliserons tout de même ces outils pour répondre aux besoins exprimés.
Il est maintenant nécessaire de départager les deux solutions retenues. Les points de
divergences vont donc nous permettre de choisir l'IDS le plus apte à remplir son rôle.
La solution Prelude est une solution hybride qui peut tout aussi bien être un HIDS qu'un NIDS, là
Prelude se veut être un unificateur des systèmes de détection existants. C'est pourquoi cette solution
a la possibilité de construire une architecture où plusieurs types d'IDS cohabitent, Prelude servant
alors de « centraliseur » pour l'ensemble des informations générées. De ce fait, cette solution
apporte des fonctionnalités beaucoup plus poussées que Snort telles que l'utilisation des règles de
détection des autres IDS en plus de ces propres règles. La complexité de Prelude au niveau de son
installation et de sa gestion est donc aussi plus importante. Sachant que les IDS sont des éléments
nouveaux dans la sécurité pour les administrateurs, il est alors préférable de commencer par des
applications plus aisées à maîtriser. D'autant plus que Snort est considéré par Prelude comme un des
ses sous éléments (Prelude peut utiliser Snort). Il sera plus tard possible de greffer la solution
Prelude dessus sans modifier les IDS déjà mis en place.
Le dernier point énoncé a permis de déterminer le système de détection à utiliser. En effet, il est
préférable de démarrer par le plus simple, pour ensuite remonter graduellement l'échelle de
complexité des IDS. D'autant plus que ce type de système n'est pas fermé, c'est-à-dire qu'il offre la
possibilité d'évoluer sans supprimer les éléments mis en place précédemment. La solution Snort a
donc été choisie pour remplir le travail de détection des intrusions.
Après avoir choisi ce système de détection d'intrusions pour répondre aux besoins de
l'entreprise, il faut l'analyser de façon plus rigoureuse et méticuleuse. Son fonctionnement interne
mais aussi son positionnement sur le réseau sont des informations utiles à connaître afin de mieux le
comprendre.
Le positionnement de Snort sur le réseau est un point important à déterminer avant son
implantation. Plusieurs configurations sont possibles au sein de la plateforme.
Sachant qu'à terme une seule machine sera susceptible d'être attaquée, il est préférable
d'utiliser pour l'instant la deuxième configuration car l'impact sur les performances est un critère
beaucoup plus important. Au final, il ne devrait rester qu'une seule instance de Snort sur une unique
machine n'analysant que le trafic passant à sa proximité. Ceci est amplement suffisant pour les
besoins de la plateforme en matière de sécurité.
2.4.2. Fonctionnement
− D'un côté, se trouvent les préprocesseurs de détection qui permettent de détecter certaines
formes intrusions. Dans le cas d'une détection à ce niveau il est inutile de continuer le
déroulement du cycle et le logiciel passe directement aux modules de sorties.
− De l'autre côté, on retrouve des préprocesseurs de formatage des données. Ces derniers sont
très importants dans la détection d'une intrusion car la structure des informations transitant
sur un réseau peut être utilisée au profit d'une attaque. Par exemple, la fragmentation des
données si elle est bien manipulée, permet de découper le code de son attaque en morceau.
Si l'IDS n'était pas capable de reconstituer entièrement la donnée, il ne pourrait alors pas
découvrir l'attaque car les morceaux pris séparément ne constituent pas en eux même une
menace. Et ce n'est que lors de la reconstitution des données (défragmentation) par le
système cible que l'attaque prendra effet.
Après les préprocesseurs, on retrouve les détecteurs qui se servent des signatures des
intrusions pour les identifier. Ces signatures prennent la forme de règles modifiables à souhait par
l'administrateur. Lorsqu'une correspondance est trouvée entre une règle et le contenu d'une donnée
provenant du réseau, cette dernière est considérée comme suspecte mais est tout de même analysée
par les règles restantes. En effet, il aurait été possible de camoufler une très grosse attaque derrière
une de plus petite envergure pouvant amener l'administrateur à une erreur d'interprétation et donc de
moyens à mettre en oeuvre pour bloquer l'attaque. Il faut noter que Snort n'intègre ce système que
depuis sa dernière version (2.4).
Après cette première analyse du fonctionnement de Snort, nous allons pouvoir passé à la
mise en oeuvre du système de détection.
1. La première phase consiste à se documenter sur l'outil. Elle permet de maîtriser les
principales caractéristiques du produit et d'évaluer les éventuels problèmes constatés par
d'autres utilisateurs. J'ai donc commencé par me documenter sur technologie IDS. J'ai par la
suite approfondi les outils Snort et Prelude pour mieux comprendre leur fonctionnement.
Cette première étape permet d'avoir une idée plus précise sur la façon d'installer, de
configurer et de tester l'application.
2. La deuxième phase met en place une maquette (ou prototype). Deux machines de tests (MT1
et MT2) m'ont été allouées pour réaliser cette tâche. Ces deux ordinateurs fonctionnent sous
la distribution CentOS en raison de la prochaine migration de l'ensemble des machines de la
plateforme. Ainsi les tests à effectuer seront également validés pour le futur. D'autre part,
afin d'être autonome, j'ai reçu les droits d'accès maximum, c'est-à-dire que je suis
l'administrateur de ces machines. Étant dans un domaine d'étude principalement orienté
réseau, il est par ailleurs pratique d'avoir plusieurs machines à disposition pour analyser les
interactions entre elles sans devoir manipuler les autres composants en activité.
3. La dernière phase est le passage en production. La mise en place sur les systèmes réels ainsi
que la validation finale des nouvelles applications font donc partis de cette étape. La
première et seconde phase ayant permis de minimiser les risques potentiels, il devient donc
possible de vérifier que le programme s'insère correctement dans le cycle de fonctionnement
des machines hôtes. C'est pourquoi une nouvelle série de tests viennent compléter l'analyse.
Cette fois il s'agit de s'assurer qu'aucun problème lié aux différences entre les machines de
production et les machines de tests n'apparaissent. Il faut valider chaque nouveau composant
pour garantir sa bonne implémentation dans le système réel.
1. Il s'agira dans un premier temps d’envisager une réaction immédiate et coercitive qui
consistera à bloquer immédiatement l’attaquant et à alerter les administrateurs. Pour ce
dernier point, on utilisera le système de centralisation des fichiers journaux mis en place, en
y intégrant les alertes générées par Snort.
2. Dans un second temps, le système d’alerte devra conserver les traces des tentatives
d’intrusions sur une longue durée. L'IDS Snort possède une architecture modulaire ce qui le
rend très facilement extensible. Ces nouvelles fonctionnalités (blocage, alerte et traçabilité)
vont pouvoir être mises en place grâce aux différentes contributions disponibles pour la
communauté Snort ou à des outils plus spécifiques mais s’intégrant parfaitement dans
l'architecture de la plateforme.
Lorsqu'une intrusion est détectée la première opération à effectuer est de stopper l’attaque
potentielle pour qu'elle ne puisse pas compromettre les systèmes.
L’ensemble des serveurs de la plateforme redirige leurs journaux systèmes vers le serveur Liris
dédié au stockage et à l’analyse des journaux, via le processus « syslogd ». Snort est capable
d’envoyer les alertes au processus « syslogd » et il sera relativement simple d’intégrer la
centralisation des journaux de Snort vers le serveur dédié. On pourra ainsi externaliser les outils
(scripts, applications) de réactions à une attaque sur le serveur Liris. Cette séparation des tâches
permet de renforcer la sécurité globale de la plateforme. Il va de soi que le serveur centralisant
l’ensemble de ces informations est considéré comme sensible, et pourrait le cas échéant être le point
faible de la chaîne des traitements des informations remontés par Snort. Ainsi un arrêt involontaire
de cette machine empêcherait toute réaction face à une intrusion. Dans ce premier scénario, le
Le serveur Liris en charge de la centralisation des logs dispose d’une application d'analyse
des fichiers journaux: LogSurfer. L'administrateur indique, avant de lancer cette l'application, des
séries de mots-clés et le fichier journal à analyser. Si une correspondance est trouvée entre un des
mots-clés et une ligne de ce fichier, une action sera alors exécuter Cette action va consister dans
notre cas en deux opérations et être regroupée dans un script shell. Ce script envoie tout d’abord un
mail d’alerte puis enregistre les machines incriminées dans une liste noire. Cette liste permettra de
conserver un historique à partir duquel il est possible de lancer des actions de blocage des adresses
concernées. Le cas d'un blocage non désiré (par exemple à cause d'un faux positif) est à prendre en
considération. On ne peut pas en effet interdire l'accès à un membre de la communauté scientifique
sous prétexte d'une erreur dans l'analyse faite par Snort. C'est pourquoi les adresses contenues dans
la liste noire sont régulières débloquées.
La consultation et l'analyse des alertes doivent s'effectuer après la détection d'une intrusion.
Un administrateur ne peut en effet pas rester continuellement à l'écoute du système de détection. Il
Les données générées par les différentes instances de Snort sont réparties sur plusieurs
machines. La conservation de ces dernières doit donc être centraliser afin d'obtenir une meilleure
efficacité dans la consultation. D'autre part, il n'est pas envisageable de garder la structuration
d'origine des fichiers d'alertes. Ces derniers ne sont pas adaptés à la lecture par une personne
humaine. Nous devons également faire en sorte que cette structuration soit compatible avec
l'interface graphique. Après un rapide tour d'horizon, il semblerait que la plupart des interfaces
disponibles travaillent à partir d'une base de données. La machine Tulipe en propose justement
plusieurs types dont MySQL. De plus, Snort est livré avec des scripts de création de base de
données, l'installation s'en trouve donc simplifitée.
Encore une fois, c'est du côté des contributions que des outils de gestion graphiques vont
être trouvés. En premier lieu, ACID (de l'anglais, Analysis Console Intrusion Detection) semble
offrir toutes les fonctionnalités pratiques pour analyser et consulter de manière claire et précise les
données. Il est possible de connaître les dernières alertes, les machines les plus touchées, ou encore
les protocoles et les ports les plus utilisés par les attaques. Mais la présence d'un moteur de
recherche ainsi que des fonctionnalités de génération de graphiques, pouvant montrer l'évolution
des alertes dans le temps par exemple, montrent la qualité de cette application écrite en langage
« PHP ». Cependant, le développement d'ACID a été arrêté en 2004 impliquant l'absence de suivi
dans les mises à jour logicielles, conséquence, un changement dans la structuration de la base de
données de Snort ne pourra plus être pris en compte par ACID.
Afin de pallier à ce problème, une autre interface graphique nommée BASE (en anglais,
Base Analysis & Security Engine) existe et offre les mêmes possibilités que l'application ACID.
BASE est développé par des membres de la communauté de Snort à partir d'ACID. Néanmoins
plusieurs bogues viennent entâcher la bonne qualité de cette application, il est donc conseillé de
conserver pour l'instant les deux outils jusqu'à ce que BASE fonctionne parfaitement. Le mieux
étant d'avertir les développeurs de ces problèmes et d'attendre la prochaine version en espérant une
amélioration.
Grâce à la gestion des alertes dans une base de données et à l'utilisation d'interfaces
graphiques, les administrateurs ont la possibilité d'analyser et de consulter les alertes. L'ergonomie
et les fonctionnalités proposées par BASE et ACID sont des atouts majeurs pour améliorer la
sécurité de la plateforme. Ces éléments permettent aux responsables de suivre l'évolution des
tentatives d'intrusions et d'y apporter des réponses efficaces dans un délai très court.
Afin de répondre aux cahier des charges, l'optimisation du système de détection d'intrusions
est une étape obligatoire pour s'assurer d'une part de son efficacité à découvrir les attaques, et
d'autre part pour ne pas altérer le fonctionnement de la machine hôte.
Snort ne doit théoriquement se consacrer qu'à la détection, et relayer les autres tâches aux
diverses contributions. Il est impératif que Snort puisse effectuer sa fonction principale sans être
gêner par des interactions. C'est pourquoi des développeurs ont mis au point un utilitaire, Barnyard,
qui transmet les données d'alertes aux différents composants en ayant besoin, comme la base de
données par exemple. Snort ne s'attardera alors plus à communiquer avec ces composants, donc à
attendre leurs réponses, et déléguera cette opération.
Le principe de fonctionnement est le suivant : Snort génère des fichiers en local dans un format
binaire donc plus rapide à écrire. Barnyard vient lire ces fichiers de façon locale, et les envoie aux
éléments indiqués dans ces paramètres de configuration. Dans notre cas il s'agit de la base de
données MySQL et du programme de centralisation des journaux SysLog.
Des mises à jour de sécurité pour les signatures, appelées « règles », sont disponibles sur le
site internet de Snort. Il faut noter que plusieurs versions sont présentes en fonction du statut de
l'internaute. Par exemple, en souscrivant un abonnement payant il est possible d'obtenir les
nouvelles mises à jour dès leur parution, alors qu'en restant un simple visiteur ces dernières ne sont
modifiées qu'à chaque version de Snort. Autant dire tout de suite qu'il faut trouver un moyen d'avoir
le plus rapidement ces nouvelles données de détection. Au vue des tarifs indiqués pour
l'abonnement, nous avons plutôt décidé de nous inscrire gratuitement sur le site, offrant un délai de
cinq jours pour les mises à jour. Cette contrainte de délai est acceptable pour la plateforme Migale.
Par ailleurs, une contribution appelée « OinkMaster » permet de s'assurer que Snort possède les
mises à jour les plus récentes. Si ce n'est pas le cas, l'application va, grâce au compte attribué lors de
l'inscription, ajouter les règles manquantes et remplacer ou supprimer celles qui sont obsolètes. Le
fichier de configuration du logiciel permet d'être plus précis dans les mises à jour à effectuer, et
propose même le téléchargement de la dernière version de Snort. L'automatisation de cette tâche via
un script shell allège la charge de l'administrateur. Il n'a alors pas besoin de contrôler
continuellement la parution de ces nouvelles mises à jour. Le script est utilisé conjointement avec le
programme de lancement périodique de tâches, la crontab. Ce procédé offre un moyen efficace pour
réaliser de manière régulière la mise à jour des règles de détection et de les intégrer immédiatement
Toujours dans l'optique de mieux sécuriser le réseau, les communications entre les
différentes sondes et les machines de centralisation (des alertes sur Tulipe et des journaux sur Liris)
peuvent être cryptées. Ce mécanisme met en place « OpenSSL » offrant principalement des
algorithmes de cryptage performants et le protocole « SSL » (Secure Sockets Layer), ou « Stunnel »
un programme permettant d'établir des sessions chiffrées entre un client et un serveur. Certes ces
éléments seraient utiles dans le cadre d'une banque où la sécurité est très élevée. Mais pour la
sécurité de la plateforme Migale, il s'avère que ce moyen de protection est finalement trop
contraignant par rapport au bénéfice qu'on en retirerait. Nous avons donc décidé de ne pas mettre en
place ce mécanisme.
Enfin, la sécurité passe aussi par la résistance de l'IDS face aux attaques. Celui-ci étant sur le
réseau, une adresse ip lui est attribuée afin que l'on puisse communiquer avec lui. Hors si un pirate
connaît cette adresse, il peut alors s'en prendre directement au système de détection des intrusions.
Plusieurs cas de figures se présentent pour améliorer sa sécurité et dépendent des caractéristiques de
la machine hôte. L'IDS, pour analyser les flux, n'a pas besoin d'être identifié sur le réseau, il ne fait
que lire les données depuis l'interface réseau. Par contre, dès lors que vous devez dialoguer avec
celui-ci, vous avez obligatoirement besoin de connaître son adresse ip sauf si le dialogue s'établit
entre la machine hôte et son IDS. La configuration adoptée dans le positionnement de Snort,
nécessite une centralisation des informations et donc demande d'avoir cet identifiant pour chaque
instance de l'IDS.
C'est du côté des interfaces réseaux que l'amélioration peut être réalisée. Si une seule interface est
disponible sur la machine hôte, il n'y a alors aucun moyen pour augmenter la sécurité en utilisant les
interfaces réseaux.
− la première interface ne dispose pas d'adresse ip propre. La sonde récupère les données depuis
cette interface. La sonde est invisible sur le réseau.
− la seconde interface est connecté à un réseau privé sur lequel est également connecté la machine
de centralisation. Bien entendu, le coût en matériel utilisé est plus important avec cette solution
et la gestion devient également plus complexe.
Ce système a été proposé pour une amélioration future mais n'est pour le moment pas mis en place.
Dans notre cas, il est intéressant d'indiquer le réseau de la plateforme Migale comme étant un réseau
de confiance. En effet, il y a peu de chance pour qu'un membre de l'unité aille effectué
volontairement des attaques sur son propre réseau. Par contre, le réseau du centre n'est pas
considéré comme fiable. Chaque laboratoire gérant son propre réseau, rien n'indique qu'il soit
réellement sécurisé. Des ouvertures sur leur réseau pourraient alors servir à attaquer indirectement
Un test de performance est ici approprié pour démontrer l'intérêt de l'utilisation des filtres. Ainsi
deux instances du logiciel Snort sont lancées simultanément avec pour seule différence la présence
ou l'absence des filtres. La récupération de la charge du processeur utilisé se fait grâce à des
commandes de base intégrées aux distributions Linux et d'une application que j'ai développé en
langage C. Voici un exemple intéressant de l'utilisation de connaissances en programmation dans un
stage pourtant orienté système et réseau. La polyvalence d'un informaticien est donc pratique pour
améliorer l'efficacité de son travail et son autonomie.
− les faux négatifs qui sont des alertes émises alors qu'il n'y en avait pas,
Snort génère nativement un certain nombre de faux négatifs. La diminution de ces faux ne doit pas
passer dans l'excès inverse. En effet, il est toujours préférable d'avoir des faux négatifs que des faux
positifs car un manque d'information est beaucoup plus grave que trop d'information.
Afin de réaliser cette tâche, il est nécessaire de bien déterminer les règles de détection à activer. Par
exemple, les règles concernant les intrusions via le protocole « http » ne sont d'aucune utilité sur
une machine ne possédant pas ce type de protocole. De plus, l'étude plus approfondie du
paramétrage de Snort montre que la configuration adoptée influence grandement la génération de
faux. Un préprocesseur s'occupe par exemple de reconstruire les paquets fragmentés durant leur
transit sur le réseau. Hors l'unité a un serveur de fichiers qui engendre des données parasites pour
l'IDS. Ce serveur créé des données fragmentées qui répondent aux critères de détermination d'une
intrusion par ce préprocesseur. Ce problème peut se résoudre en modifiant les paramètres de Snort.
Mais dans notre cas, l'application des filtres sur les données à traiter permet de ne plus tenir compte
de ces données parasites car elles appartiennent au réseau de confiance.
De plus, les deux prototypes fonctionnent sur une architecture en 32 bits alors que les serveurs à
protéger utilisent une architecture en 64 bits. Cette différence implique de recompiler les
applications pour qu'elles s'adaptent à leur nouvel environnement.
Par ailleurs, les fonctionnalités de conservation des alertes nécessite l'utilisation d'une base de
données opérationnelle. Hors les machines de tests ne présentent pas cette caractéristique. Nous
avons donc décidé de ne pas utiliser MySQL sur les machines de tests car les risques d'effets de
bord sur le serveur en production sont extrêmement faible.
Enfin, les serveurs de production sont des éléments vivants, c'est-à-dire qu'ils ont de nombreuses
interactions aussi bien en local qu'avec l'extérieur. Les machines MT1 et MT2 sont dédiées aux tests
de l'implémentation du système de détection, leurs interactions sont considérablement réduites. Des
tests de performances sur ces machines ne représenteraient donc pas la réalité. Afin de rendre l'IDS
fonctionnel, nous avons besoin de valider par de nouveaux tests sa mise en place sur les serveurs de
production.
Nous décrirons, étape par étape, l'installation de chaque composant sélectionné pour
répondre à la problématique générale, en mettant en évidence les nouvelles difficultés rencontrées.
Chaque étape sera ponctuée par un schéma de l'avancement de la mise en oeuvre dont la légende est
la suivante :
Nous utiliserons la machine Tulipe pour une première série de validation. Les deux autres
serveurs à protéger utilisent la même distribution, et devraient dans un avenir proche de disparaître
du groupe à surveiller. Il semble donc plus approprié de démarrer les tests de validité sur cette
machine.
Nous débutons la mise en production par le déploiement de l'IDS Snort. La présence d'un
système d'exploitation différent et d'une architecture en 64 bits nous obligent à recompiler
l'application. Cela nous permet également d'intégrer en même temps le module de sortie pour
La configuration de l'IDS est modifiée pour qu'elle corresponde aux spécificités de la machine
Tulipe. Par exemple, les règles de détection d'attaques sur le protocole « http » sont activées car le
serveur propose une interface web. Au contraire, celles sur le protocole « snmp » sont supprimées
car la plateforme ne les utilise pas.
Une copie du script de lancement de Snort est enregistrée sur Tulipe. Malheureusement la version
du shell utilisée par la distribution du serveur ne correspond pas à celle des machines de tests. Une
légère adaptation est donc nécessaire pour pallier à ce problème.
Déploiement de l'IDS
Les nouveaux outils à mettre en place se font cette fois du côte du serveur de centralisation des
fichiers journaux. La dernière version de « Logsurfer » avait mis hors service une machine. Nous
Un test rapide nous permet de vérifier que tous les composants communiquent correctement entre
eux. Les alertes sont bien réceptionnées et traitées sur Liris. De plus, la simulation d'une attaque
« SSH » sur Tulipe permet de valider la réaction immédiate obtenue.
L'étape suivante consiste à implémenter les fonctions d'historique des alertes. Cette étape
comprend donc la mise en place de la base de données MySQL et des interfaces graphiques ACID
et BASE, mais aussi les modifications à apporter au système de détection pour qu'il puisse les
utiliser.
Les scripts livrés avec Snort et BASE ainsi que ceux déjà présents sur Tulipe facilitent grandement
l'installation de la base. La reconfiguration de l'IDS permet d'utiliser le module de sortie vers
MySQL. Aucun problème n'est survenu lors de la validation de ce module en local. Cependant lors
d'un test d'interaction entre MT1 et la base de données de Snort, un problème d'autorisation d'accès
est apparu. L'administrateur a résolu rapidement la situation en modifiant les droits d'accès sur la
base.
Les interfaces graphiques ont besoin de modules « PHP » différents pour la gestion des graphiques.
Nous procédons donc à leur installation. L'utilisation des interfaces semblent fonctionner
Une erreur lors de la compilation de Barnyard est apparue alors qu'aucune problème n'avait été
signalé lors du prototypage. Il s'agit également d'une recherche de bibliothèques dans un répertoire
ne les contenant pas. Pour résoudre ce problème, nous avons tout simplement supprimé la variable
d'environnement LD_LIBRARY_PATH qui pointait sur des emplacements de recherche erronés.
Un fichier fournissant les données à ne pas analyser par l'IDS vient s'ajouter à la configuration de
base de Snort. Le script de lancement ayant était créé dans l'optique d'une utilisation des filtres au
moyen d'un fichier, aucune modification supplémentaire est nécessaire.
Finalement, nous obtenons un système de détection opérationnel répondant aux divers points
du cahier des charges comme l'avertissement des administrateurs en cas d'attaque, la conservation
des données sur les intrusions et une implémentation sans conséquences sur les performances des
systèmes.
Le stage à l'INRA a été une bonne expérience pour une première approche du monde
professionnel mais également pour découvrir le fonctionnement d'un laboratoire de recherche.
Entrevoir le fonctionnement d'un « cluster de calcul » a aussi été intéressant. Mais le principal
attrait de se stage fut la mise en pratique de connaissances sur des systèmes d'exploitation qui ne
m'étaient pas familiers (linux...), et dans le domaine de la sécurité peu pratiqué à l'université de
Paris5. J'ai également pris conscience des difficultés de la gestion d'un parc informatique.
Néanmoins, le travail d'un stagiaire diverge en plusieurs points de celui d'un salarié. Par exemple,
dans le cadre de mon stage, je n'étais pas tenu à obtenir des résultats sur la mise en place de l'IDS.
D'autre part, le sujet de mon stage ne m'a pas permis de m'intégrer à un groupe de travail. De ce fait,
je n'ai pas pu voir les problèmes liés à la coopération et à l'organisation des membres d'une équipe
dans le cadre d'un projet professionnel.
Ce stage a été une source non négligeable d'informations aussi bien pour mes connaissances
informatiques que dans ma perception du monde du travail et de mon avenir professionnel. Les
domaines d'activités exercés au cours des dix semaines dans l'institut, à savoir les systèmes, les
réseaux et la sécurité, m'ont donné envie de continuer dans cette voie. Mon maître de stage m'a
également motivé pour que je poursuive mes études aussi loin que possible. C'est pourquoi j'espère
Par ailleurs, grâce à ma bonne entente avec les membres de l'unité MIG et à mes capacités à
effectuer un travail efficace, j'ai pu obtenir une prolongation de mon stage de trois semaines. Bien
que le sujet traité sera différent, il reste tout de même dans les domaines des systèmes et réseaux. Il
portera en particulier sur l'étude de la mise en place d'un système de haute disponibilité pour le
« cluster de calcul ».
Attaque « SSH » : Attaque via le programme de connexion à distance « SSH ». Le Secure SHell
permet de réaliser des actions sur une machine distante avec une communication sécurisée. La
connexion nécessite d'entrer les informations sur le compte utilisateur à utiliser. Les tentatives par
mot de passe faible sont donc courants pour ce type d'attaque.
− d'analyser des données et modélisation des phénomènes du vivant dans toute leur
complexité.
Black-lister : Action d'enregistrer un élément particulier dans une liste d'éléments indésirables
appelée la liste noire (en opposition à la liste blanche).
Compilation : La compilation est un travail qui consiste à transformer un code source lisible par un
humain en un fichier binaire exécutable par une machine particulière.
FAQ : La Foire Aux Question répertorie les questions (et leur réponse) les plus fréquemment
posées par les utilisateurs pour un domaine particulier.
Fichiers journaux : Les fichiers journaux ou fichier « log » (de l'anglais) enregistrent les
événements qui se passe sur une machine. Ex: arrêt involontaire d'une application, connexion à la
machine, démarrage d'un service, etc.
IDS : de l'anglais Intrusions Detection System, système de détection d'intrusions. Le sigle français
n'est jamais utilisé.
Port : Tous les systèmes d'exploitation utilisent des ports pour faire transiter des données entre les
machines. Chaque port est numéroté et correspond à un service. Ainsi, si on installe sur sa machine
un serveur Web, ce dernier utilisera le port 80 pour son fonctionnement.
Protocole : Un protocole est une norme ou une série de règles utilisées par les ordinateurs pour
pouvoir communiquer entre eux. Une fois un protocole défini, chaque terminal, client ou serveur,
implémente ce protocole et peut ainsi communiquer avec les autres ordinateurs utilisant ce
protocole.
Scans de ports ouverts : Un scans de ports consiste à tester les ports en activités sur une machine.
Cela correspond souvent à l'étude d'un système par un pirate avant de l'attaquer.
Script : Un script est un programme écrit dans un langage interprété. A la différence des
programmes écrits dans des langages compilés comme le C ou en C++, les scripts sont traduits en
langage machine au fur et à mesure de leur exécution. Ils sont en général plus lents à exécuter, mais
Source ouverte : Le terme Source Ouverte (en anglais, Open Source) définit une licence de logiciel
obéissant à une définition très précise établie par l'Open Source Initiative. Les principaux critères
nécessaires sont :
− la libre redistribution,
Attention, le fait de disposer des sources d'un logiciel ne suffit pas à dire qu'il est Open Source.
Tentative par mot de passe faible : Une tentative par mot de passe faible consiste à pirater un
compte utilisateur d'une machine en essayant un couple login-mot de passe. Aucun algorithme
particulier n'est mis en oeuvre pour découvrir le login et son mot de passe associé. Le pirate
utilisera des couples standards, comme le nom de l'utilisateur et sa date de naissance.
Bibliographie
− Le shell bash 3eme Edition de Cameron Newham et Bill Rosenblatt, traduction de Hervé
Soulard, édition O'REILLY, janvier 2006, titre original: Learning the bash shell 3rd Edition
en avril 2005
− Snort 2 de Jack Koziol, traduction de C. Eberhardt et V. Warion, édition CampusPress, titre
original : Intrusion Detection with Snort en 2003
− Intrusion Detection Systems with Snort de Rafeeq Ur Rehman, Edition Prentice Hall, 2003
− Linux Magazine n°83
Webographie
− Snort : http://www.snort.org
− Prelude :
− http://lehmann.free.fr/
− http://lehmann.free.fr/Prelude.html
− http://www.prelude-ids.org/
− BASE : http://secureideas.sourceforge.net/
− ACID : http://www.andrew.cmu.edu/user/rdanyliw/snort/snortacid.html
− OinkMaster : http://cvs.sourceforge.net/viewcvs.py/oinkmaster/oinkmaster/
− Logsurfer : http://www.samag.com/documents/s=9053/sam0403i/0404i.htm
− Sécurité : http://www.security-labs.org/index.php3
− Script Shell :
− http://linuxfr.org
− http://lea-linux/org