Le modèle formel

  1. Le régionnement par zones de sécurité
  2. La matrice de flux et les flux de directives
  3. Vue technique globale

Le régionnement par zones de sécurité

L'éditeur Era suit un modèle par flux de règles plutôt que par règles simples. Cela signifie que les règles sont classées d'après leur origine et leur destination. Pour pouvoir ordonner ce classement en vue d'une cohérence globale de sécurité, il convient de définir une modélisation du pare-feu nommée matrice de flux.

zone de sécurité
régionnement d'un parc de machines en réseau, sous-réseau, etc suivant un découpage à partir du pare-feu, le pare-feu lui-même étant une zone à part (la zone la plus sécurisée).Cette cartographie permet d'affecter un niveau de sécurité (arbitraire) à chaque zone.
niveau de sécurité
nombre entier (entre 0 et 100) permettant d'ordonner les zones.

Une modélisation générique des zones sécurisées regroupe les différentes zones en "maisons", en "cour", (pour des zones moins sécurisées type dmz), la zone minimale de sécurité étant "l'extérieur".

Le bastion est une zone particulière, par définition la zone la plus sécurisée.

Note: Les cartes ethernet du bastion qui sont reliées aux différentes zones, appartiennent aux zones qu'elles définissent et non à la zone bastion elle-même.

Description des zones dans le format xml interne

Une balise pour chaque découpage en zone

<zones>
<zone name="exterieur" level="10" ip="" network="" netmask="" interface=""/>
<zone name="bastion" level="100" ip="127.0.0.1" network="0.0.0.0" 
                                  netmask="255.255.255.255" interface="lo"/>
</zones>

Les extremités

Les zones sont elles-mêmes découpées en réseaux et sous-réseaux qui sont appelées extrémités. Ces extrémités peuvent être soit des machines, soit des groupes de machines.

 <extremites>
<extremite zone="bastion" name="bastion" libelle="Zone entièe" netmask="255.255.255.255" subnet="1">
    <ip address="127.0.0.1"/>
</extremite>
<extremite zone="exterieur" name="exterieur" libelle="Zone entière" netmask="" subnet="1">
    <ip address="%%adresse_ip_eth0%%"/>
</extremite>
</extremites>
Note: Dans le cas d'une extrémité composée d'une machine unique, l'attribut subnet est fixé à 0.

La matrice de flux et les flux de directives

matrice de flux
Tableau représentant les autorisations et les interdictions, bref la politique de sécurité entre chaque zone, de manière à orienter le flux de règles.

Un exemple

Soient trois zones classées par ordre de sécurité décroissant :

  1. Gestion
  2. Pédagogie
  3. Extérieur
La matrice de flux associée est de la forme suivante :

Chaque zone est donc reliée à une autre zone par des flux de règles. Les "flux montants" concernent les interactions d'un niveau de sécurité plus faible vers un niveau de sécurité plus élevé, et réciproquement pour les "flux descendants".

Ces nom utilisent l'imagerie de l'écoulement des fluides (flux montants, flux descendants, ponts, barrages) pour que le niveau de sécurité reste en mémoire de chacun à chaque instant de la conception du pare-feu. Pour "l'écoulement" de règles d'un niveau plus élevé vers un niveau moins élevé, on parle de flux descendant, et pour le moins élevé vers le plus élevé, on parle de flux montant.

flux montant
pont (acqueduc, pompe pour faire remonter l'eau)
flux descendant
barrage (pour retenir l'eau)

Matrice de flux et politique par défaut

Lorsque les flux montants et les flux descendants sont définis, il est possible de spécifier une politique par défaut à partir de règles d'autorisation ou d'interdiction sur ces flux orientés.

Ici, la politique de sécurité par défaut qui résulte de la matrice de flux est :

Vue technique globale

Récapitulatif des composants de la matrice de flux

Les composantes de la matrice de flux sont :

La hiérarchie des objets

Description des flux dans le format xml interne

Voici des flux entre différentes zones. Pour chaque flux, les directives sont classées en directives montantes et descendantes.

    <flux-list>
        <flux zoneA="bastion" zoneB="exterieur">
            <montantes>
            </montantes>
            <descendantes>
            </descendantes>
        </flux>
        <flux zoneA="exterieur" zoneB="admin">
            <montantes>
            </montantes>
            <descendantes>
            </descendantes>
        </flux>
        <flux zoneA="bastion" zoneB="admin">
            <montantes>
            </montantes>
            <descendantes>
            </descendantes>
        </flux>
	[...]
    </flux-list>

Classeur de directives

Les classeurs (DirectiveStore) de directives sont comme des listes de règles, ils encapsulent les règles iptables en directives.

L'accès aux directives d'une matrice se fait par l'accès aux flux. On se donne une matrice m era.noyau.model.MatrixModel(), cette matrice contient une liste de flux flux_list = m.flux et pour chaque élément de cette liste de flux, il faut repérer les deux classeurs de directives

classeur = flux.up_directives_store # est un objet de type DirectiveStore
classeur = flux.down_directives_store # est un objet de type DirectiveStore
Enfin, les directives sont accessibles pour chaque classeur de directives directives = classeur.directive_list()

Index

Version: 0.7