• Aucun résultat trouvé

Politique de tolérance aux intrusions!: cas d’une architecture multi-mandataires

Chapitre 3 Une architecture tolérante aux intrusions pour serveurs Internet

3.3 Une architecture tolérant les intrusions pour des systèmes à contenu statique

3.3.3 La politique de tolérance aux intrusions!: gestion des répliques et réponse aux alertes

3.3.3.2 Politique de tolérance aux intrusions!: cas d’une architecture multi-mandataires

Dans cette architecture, il y a un meneur et un ou plusieurs mandataires auxiliaires. La politique de tolérance aux intrusions est implantée sur l’ensemble des mandataires, avec sur chacun un gestionnaire d’alertes (GA). Cette politique spécifie : 1) les règles de gestion des alertes 2) quand , comment, et qui commence un vote 3) le recouvrement d’une intrusion 4) le protocole d’élection du meneur 5) le protocole du changement de régime.

Une architecture tolérante aux intrusions pour serveurs Internet 85

3.3.3.2.1 Le gestionnaire des alertes

Rappelons que le gestionnaire des alertes est un programme qui s’exécute sur tous les mandataires. Il implémente la politique de tolérance aux intrusions qui a été définie par les administrateurs. En particulier, tous les GA décident des mesures à prendre face aux alertes.

Chaque GA est à l’écoute des alertes provenant:

- du module spécifique14 meneur s’il s’exécute sur le meneur ;

- du processus vérifieur du protocole de défi-réponse qui s’exécute sur la même machine ;

- du système de détection d’intrusion ;

- du vérifieur en ligne correspondant au rôle du mandataire sur lequel il s’exécute ; - des autres GA sur les autres mandataires.

Il est organisé en plusieurs modules. Un module est dédié à la prise de décision et plusieurs autres modules sont dédiés à traiter différents types d’alertes.

Quand le GA reçoit une alerte à propos d’un composant donné (mandataire ou serveur), il vérifie si ce composant est déjà déclaré corrompu dans sa table. Si c’est le cas, la seule possibilité est qu’il est obligatoirement déjà isolé et en cours de redémarrage donc il ignore l’alerte. Si l’état actuel du composant est correct ou suspect, il vérifie l’origine de l’alerte :

- Pour les alertes locales, il analyse l’alerte (type et priorité) et met à jour l’état du composant suspect. Ensuite, il commence un vote sur le nouvel état du composant (par exemple : « le serveur S est déclaré suspect par l’IDS » ou « le mandataire M est déclaré corrompu par le protocole de défi-réponse ») en envoyant un message aux autres mandataires. Il attend les réponses et selon l’avis de la majorité, il annule ou garde la mise à jour. Si le nouvel état est corrompu, il envoie une proposition sur les mesures à prendre. Il s’agit d’un message informatif puisque la vision de l’état du système ainsi que la politique de tolérance aux intrusions (qui décrit les décisions à prendre dans les différentes situations) doivent être les mêmes sur tous les mandataires : c’est la cohérence des mandataires. Le GA, quant à lui, est chargé d’exécuter ses mesures.

- S’il s’agit d’une alerte qui provient d’un autre mandataire, le GA prend en compte la source de l’alerte et l’état courant de l’élément accusé dans sa table. S’il a la même information, il renvoie son accord immédiatement sinon il attend une certaine durée avant de répondre, considérant a priori qu’il s’agit de la latence de détection ou de la latence de propagation de l’information. Une fois cette durée

14 Deux processus peuvent s’exécuter sur chaque mandataire : le GA et un module spécifique au

rôle du mandataire (par exemple, meneur) assurant le traitement des requêtes des clients. Un mandataire auxiliaire ne possède pas de module spécifique.

Une architecture tolérante aux intrusions pour serveurs Internet 86 expirée, il re-vérifie sa table et s’il y a changement d’état, il dispose alors d’une information cohérente avec l’alerte reçue, il envoie son accord ; dans le cas contraire, il envoie un désaccord. Le message est envoyé à tous les mandataires et non seulement à celui qui a envoyé l’alerte.

- S’il s’agit d’une alerte d’un mécanisme de détection distant, il exécute les mêmes étapes que s’il s’agissait d’une alerte locale.

Avant de commencer un vote, le GA vérifie qu’il n’y a pas un autre vote en cours à propos du même accusé.

3.3.3.2.2 Le vote

Chaque mandataire a le droit de commencer un vote pour vérifier la corruption ou non d’un composant. Un mandataire qui reçoit une alerte de la part de l’un des mécanismes de détection d’erreurs exécute l’algorithme suivant :

vérifier s’il y a un vote en cours à propos de ce composant sinon compteur_alertes ++ si état_accusé=corrompu Ne rien faire Sinon Si état_accusé=suspect ou correct

si type_alerte Œ (CRP, protocole d’accord) état_accusé fl corrompu fin si si type_alerte Œ (IDS) Si compteur_alertes < Nmax état_accusé fl suspect Sinon état_accusé fl corrompu fin si sinon Si état_accusé=corrompu

exécuter un protocole d’accord si la majorité est d’accord

exécuter les actions correspondantes sinon si la majorité n’est pas d’accord

état_accusé fl suspect sinon (pas de majorité)

le système hors service fin si

fin si fin si

Figure 3.8 Algorithme du vote

L’algorithme décrit dans la figure 3.8 est exécuté par le GA correspondant au mandataire qui commence le vote. Les autres mandataires reçoivent sa requête concernant la corruption d’un composant de l’architecture, vérifient leurs tables

respectives et répondent AGREE si le composant est déclaré corrompu ou suspect chez

Une architecture tolérante aux intrusions pour serveurs Internet 87

3.3.3.2.3 Recouvrement d’une intrusion

Les mesures à prendre vis-à-vis d’un accusé qui est déclaré corrompu dépendent du rôle joué par celui-ci dans l’architecture. En effet, selon que le composant corrompu est un serveur, qu’il est le meneur ou qu’il est un mandataire auxiliaire, cela change la procédure de recouvrement de l’intrusion.

Il est à noter que la détection d’un composant corrompu dans le système (quel que soit son rôle) déclenche le passage dans un régime plus sévère accompagné de l’augmentation de la fréquence des contrôles effectués par les mécanismes de détection, qui à leur tour, adoptent un mode de fonctionnement plus strict.

Nous rappelons ici que les mandataires sont difficilement attaquables puisque :

- il s’agit de programmes simples développés avec des méthodes rigoureuses garantissant l’élimination de toute faille de sécurité,

- le système d’exploitation est dépouillé de toute fonction inutile, - le vérifieur en ligne vérifie de près leurs comportements,

- les mécanismes de détection et le vote permettent aux mandataires de se surveiller mutuellement.

A. Recouvrement d’un serveur corrompu

La procédure de recouvrement d’un serveur corrompu consiste à redémarrer celui-ci et donner la main à un autre serveur pour traiter la requête. En fait, nous tolérons qu’au plus la moitié des serveurs soit corrompue simultanément. Un serveur ne joue pas un rôle critique dans le fonctionnement du système, et n’importe quel serveur peut répondre aux requêtes des clients puisqu’il s’agit de serveurs fonctionnellement équivalents.

B. Recouvrement d’un mandataire auxiliaire corrompu

Un mandataire auxiliaire n’intervient pas dans le traitement des requêtes des clients, ses activités de supervision sont transparentes à l’utilisateur. Dès lors, la procédure de recouvrement, dans ce cas, se résume au redémarrage de la machine.

C. Recouvrement du meneur corrompu

Le meneur joue un rôle critique dans l’architecture, il est très contrôlé par tous les mécanismes de détection prévus dans l’architecture. Il est très difficile d’imaginer une attaque réussie sur celui-ci. Cependant, dès que les autres mandataires détectent la corruption du meneur, ils le redémarrent en tant que mandataire auxiliaire alors qu’un mandataire auxiliaire prend sa place et toutes les requêtes en cours sont abandonnées.

D. Élection du meneur

Nous avons choisi une procédure simple pour le choix du meneur. En fait, il existe une liste ordonnée pour chacun des rôles. Sur chaque liste, les mandataires sont classés selon les critères suivants : 1) le mandataire le plus récemment redémarré est le mieux qualifié

Une architecture tolérante aux intrusions pour serveurs Internet 88 et 2) le mandataire déclaré le moins souvent suspect par les mécanismes de détection est le mieux classé.

Les listes sont initialement identiques sur tous les mandataires mais au fil des requêtes et des tentatives d’attaques sur le système, ces listes peuvent être modifiées. Les modifications sont les mêmes sur les mandataires sauf en cas de corruption. Au moment de l’élection, chaque mandataire donne le premier nom sur la liste ce qui permet de vérifier la cohérence des mandataires et de détecter d’éventuelles incohérences. Il est possible d’utiliser un consensus byzantin pour revenir à un état commun cohérent entre les mandataires qui permettrait aussi d’identifier, s’ils existaient, les mandataires corrompus.

3.4 Une architecture tolérant les intrusions pour des systèmes