• Aucun résultat trouvé

2.4 Conclusion

3.1.3 Répartition des observateurs

Nous avons présenté dans l’introduction de notre étude 1.3.3 qu’un seul observateur n’était pas suffisant pour protéger efficacement le système et qu’il était nécessaire de mettre en place plusieurs observateurs.

La répartition des observateurs consiste à ajouter différents observateurs dans la chaîne de contrôle des interactions, c’est-à-dire des appels système. Définir la répartition nécessite de décrire la méthode d’association de deux observateurs, leurs localisations et leurs redondances.

3.1.3.1 Association

Nous définissions deux modes d’association pour qu’une interaction puisse être traitée par deux observateurs. Ces deux modes sont mutuellement exclusifs. Deux observateurs ne peuvent pas être à la fois en mode cascade et en mode continuation, puisque comme nous le verrons, dans le premier mode, le premier observateur attend la réponse du second, ce qui n’est pas le cas dans le second mode.

Cascade

Le premier mode est le modecascade. Ce mode est illustré par la figure 3.14. Dans ce mode, le premier observateur reçoit la requête et la transmet au second observateur. Le second observateur renvoie la réponse au premier observateur qui renvoie ensuite une réponse à l’appelant.

FIGURE3.14 – Mode d’association : cascade

Ce mode de fonctionnement a été, par exemple, mis en place dans le défi ANR [ANR, 2009]

par l’utilisation combinée de SELinux et de PIGA. Il permet d’additionner les contrôles des deux observateurs.

Continuation

Le second mode est le mode continuation. Ce mode est illustré par la figure 3.15. Dans le mode continuation, le premier observateur n’attend pas la réponse du second. Il effectue son trai-tement et transmet ensuite, si nécessaire, la requête au second.

Ce mode peut être illustré en donnant une priorité dans les contrôles d’accès. Le premier contrôle est prioritaire et décide seul d’interdire/autoriser l’accès ou bien de transmettre la de-mande au second mécanisme.

FIGURE3.15 – Mode d’association : continuation

3.1.3.2 Localisation

Nous avons défini les modes de sécurité ainsi que les modes d’association possibles pour les observateurs. Nous allons maintenant détailler les modes de localisation, c’est-à-dire la place d’un observateur au sein de différentes architectures.

Colocalisée

Le premier mode concerne un observateur localisé sur la même machine que le client. Ce mode est illustré par la figure 3.16.

FIGURE3.16 – Mode de localisation : colocalisé

Ce mode est principalement utilisé par les mécanismes de contrôle d’accès obligatoire : SELi-nux, grsecurity, etc.

Distante

Le second mode de répartition possible est d’avoir un observateurdistant. Ce mode est illustré par la figure 3.17. Dans ce mode, les requêtes ne sont pas transmises localement, mais envoyées depuis un client vers un nœuddistant. Nous avons dans ce schéma une relation1 : 1, c’est-à-dire qu’à chaque nœud, nous associons un observateur spécifique sur une machine distante.

FIGURE3.17 – Mode de localisation : distant

Ce mode peut être illustré par le fonctionnement en mode client/serveur du programme de gestion des traces système (syslog-ng). Le serveur de centralisation des logs reçoit les logs depuis tous les nœuds distants.

Parallèle

Ce troisième mode de répartition est différent du précédent. Le modedistantassocie à chaque nœud une machine hébergeant un observateur, ce qui pose clairement un problème de dimension-nement du système réparti. Dans le modeparallèle, une même machine est capable d’héberger plusieurs observateurs qui s’exécutent en parallèle. Cependant, chaque observateur n’est associé qu’à un seul nœud distant. Ce mode est illustré par la figure 3.18. S’il est difficile de qualifier ce modèle, on peut le notern : 1(||) au sens quennœuds peuvent être traités en parallèle par1 machine.

FIGURE3.18 – Mode de localisation : distant avec plusieurs nœuds et plusieurs observateurs

Partagée

Dans le modepartagé, au lieu d’avoir une relation1 : 1entre les nœuds et les observateurs, la relation se note enn : 1(p). Cela signifie qu’un observateur est partagé par plusieurs nœuds distants. Ce mode est illustré par la figure 3.19.

FIGURE3.19 – Mode de localisation : distant avec plusieurs nœuds et un seul observateur

3.1.3.3 Redondance

Dans les architectures distribuées, il est nécessaire d’assurer la disponibilité des services. Dans le cas qui nous intéresse, l’observateur est un élément vital qu’il faut pouvoir redonder.

Diffusion

Le premier mode de redondance est le modediffusion. Dans ce mode, le nœud envoie simul-tanément les requêtes à (au moins) deux observateurs. Il doit ainsi traiter les deux réponses des

observateurs. Ce mode est illustré par la figure 3.20. Ainsi, si un des deux observateurs ne répond plus, le nœud n’est pas obligatoirement bloqué puisqu’il peut obtenir une réponse du second ob-servateur. Dans le cas de fautes byzantines, on peut imaginer au moins trois redondances (R1, R2, R3) avec un vote majoritaire.

FIGURE3.20 – Mode de redondance : diffusion des requêtes par le nœud

Maître-Esclave

Le second mode de redondance est le modemaître-esclave. Dans ce mode, ce sont les obser-vateurs qui se communiquent les requêtes envoyées par le nœud au serveur maître. Nous avons pris comme exemple l’observateur maître qui fait suivre la requête. Ainsi, les deux observateurs possèdent tous les deux toutes les requêtes envoyées. Ce mode de fonctionnement est illustré par la figure 3.21. Lorsque l’observateur maître ne répond plus, le nœud se connecte à l’observateur esclave.

FIGURE3.21 – Mode de redondance : architecture de la forme maître-esclave

3.1.3.4 Discussion

Nous venons de détailler les différents modes d’association, de localisation et de redondance des observateurs.

Par la définition des modes d’association, nous modélisons l’utilisation combinée de deux ob-servateurs. Dans le mode en cascade, le premier observateur a un rôle primordial dans la chaîne de traitement des requêtes puisque c’est lui qui doit envoyer les requêtes au second observateur et attendre la réponse. Il est ainsi possible de corréler, au niveau du premier observateur, les dé-cisions prises par les deux observateurs. Cependant, dans ce mode de fonctionnement, le premier observateur doit attendre une réponse du second observateur, ce qui peut réduire les performances du système. Dans le second mode, le premier observateur n’attend pas la réponse du second. Il effectue son traitement et transmet ensuite, si nécessaire, la requête au second. Ce mode de fonc-tionnement évite le blocage du premier observateur attendant la réponse du second. Cependant, il n’est plus possible de corréler les réponses des observateurs au niveau du premier.

Les modes de localisation adaptent les modèles des systèmes répartis aux observateurs. À partir du mode distant, nous avons spécialisé l’approche de répartition. Ainsi, par la définition des modes parallèle et partagé, nous avons centralisé les requêtes et les décisions prises par les observateurs.

Avec une localisation distante et les deux cas particuliers (parallèle et partagé), il semble possible de réduire la charge de calcul des nœuds clients. De plus, avec les modes parallèles et partagés, il est possible de faire des corrélations entre les interactions des différents nœuds clients.

Néanmoins, en déportant les observateurs sur une machine dédiée, nous introduisons des situa-tions de pannes supplémentaires : les pannes sur le réseau et les pannes de la machine hébergeant l’observateur déporté. De plus, ce déport peut aussi entraîner une latence au niveau de la commu-nication avec l’observateur puisque cette commucommu-nication passe par un lien réseau.

Pour réduire les pannes potentielles introduites par le déport de l’observateur, nous avons pro-posé un modèle de redondance. Nous considérons deux modes de fonctionnement. Le premier repose sur la diffusion des requêtes faites directement par le nœud. Le principal avantage de cette méthode est qu’elle permet de tolérer un grand nombre de situations de défaillance. Cependant, le nœud doit gérer les réponses envoyées par plusieurs observateurs, ce qui implique un calcul supplémentaire réalisé au niveau du nœud. Le second mode de fonctionnement propose un modèle maître-esclave. Dans ce mode de redondance, le nœud envoie les requêtes qu’à un seul observateur, le maître et c’est ce dernier qui transmet à l’observateur esclave. Cependant, lorsque l’observateur maître ne répond plus, c’est au nœud client de se connecter à l’observateur esclave, ce qui peut entraîner une latence importante, voir un blocage du nœud si l’observateur met trop de temps à répondre.

Nous venons de donner une définition de la notion d’observateur pour les systèmes et une modélisation de la notion de la répartition des observateurs. Nous allons maintenant décrire la modélisation de la politique de sécurité sur laquelle se base l’observateur pour effectuer ces traite-ments.