Professional Documents
Culture Documents
Gestion de l'incertitude et
codage des politiques de scurit
dans les systmes decontrle
daccs
THSE
Doctorat
de lUniversit dArtois
et
de lUniversit Sidi Mohammed Ben Abdellah
Spcialit Informatique
par
Khalid BOURICHE
Composition du jury
Directeurs de thse :
Rapporteurs :
Examinateurs :
Invit :
________________________________________________________
Rsum de la thse
Remerciements
Ce travail de recherche sinscrit dans le cadre dune thse en cotutelle entre luniversit
dArtois (Lens/France) et luniversit Sidi Mohammed Ben Abdellah (Fs/Maroc).
En prambule cette thse, je tiens tout dabord exprimer ma vive reconnaissance
envers Monsieur Salem BENFERHAT, mon codirecteur de thse ct franais, qui ma
accompagn tout au long de la ralisation de ce travail. Il a consacr de son prcieux temps en
maccueillant en France et en se dplaant au Maroc et en me prodiguant dutiles conseils qui
mont normment aid bien raliser et structurer mon travail. Au cours de mes moments
difficiles, il a fait preuve dune grande disponibilit ainsi quune haute qualit de ses
interventions et secours, et sans qui cette thse ne serait pas ce quelle est. Merci infiniment
Monsieur Salem BENFERHAT, votre rigueur au travail serait un exemple pour moi. Toute ma
reconnaissance et ma gratitude pour laboutissement de plus de trois ans de travail sous votre
direction clairvoyante. Je te souhaite une trs bonne sant.
Je tiens remercier sincrement Monsieur Mohamed OUZARF, qui, en tant que
codirecteur de thse ct marocain, s'est toujours montr l'coute et trs collaboratif tout au
long de la ralisation de cette thse, ainsi pour l'aide et le temps qu'il a bien voulu me consacrer
notamment sur le plan administratif. Monsieur Mohamed OUZARF ma encadr au cours des
travaux de mmoire du DESA-ATNASI, cest un grand honneur pour moi que j'aie eu loccasion
de le voir en tant que codirecteur de mes travaux de recherche.
Jexprime toute ma gratitude Monsieur, Professeur , pour mavoir fait le privilge de
prsider le jury lors de ma soutenance de thse.
Que Monsieur Zied Elouedi Professeur lISG Universit de Tunis, et Monsieur Stphane
Loiseau Professeur l'Universit dAngers, trouvent ici lexpression de mes sincres
remerciements davoir accept dvaluer ce travail.
Jadresse mes vifs remerciements Monsieur Mohammed MEKNASSI professeur la
facult des sciences Dhar El Mahraz de Fs et Monsieur Hussain BENAZZA professeur
lENSAM de Mekns et lun de mes anciens professeurs la FST de Fs. Je suis trs
reconnaissant quils aient accept (respectivement) de rapporter et dexaminer ma thse.
Mes remerciements vont encore Mohammed BOULMALEF professeur lUniversit
Internationale de Rabat qui a rapidement accept dtre parmi le jury, sa prsence entre nous
honorera sans doute la sance. Un grand merci Monsieur Mohammed BOULMALEF.
4
INTRODUCTION ................................................................................................................. 15
POLITIQUE DE SECURITE ................................................................................................... 16
LES POLITIQUES ET LES MODELES DE CONTROLE DACCES ................................................ 17
CONTROLE DACCES DISCRETIONNAIRE (DAC) ............................................................ 17
CONTROLE DACCES MANDATAIRE (MAC) ................................................................... 21
LE CONTROLE D'ACCES BASE SUR LES ROLES (RBAC) .................................................. 31
CONCLUSION .................................................................................................................... 39
CHAPITRE 2 ................................................................................................................................ 41
LA SOLUTION DE SECURITE SELINUX ............................................................................. 41
2.1. INTRODUCTION ................................................................................................................. 41
2.2. SELINUX ........................................................................................................................... 41
2.2.1. HISTORIQUE DE SELINUX ............................................................................................. 41
2.2.2. ARCHITECTURE DE SELINUX ........................................................................................ 42
2.2.3. LES AUTRES SOLUTIONS DE SECURITE ........................................................................... 45
2.3. LE MODELE DE SECURITE DE SELINUX .............................................................................. 45
2.3.1. LE MODELE TYPE ENFORCEMENT (TE) ......................................................................... 46
2.3.2. LE MODLE ROLE-BASED ACCESS CONTROL (RBAC) ................................................. 49
2.3.3. LES MODELES MCS ET MLS DE BELL-LAPADULA ........................................................ 49
2.4. LA POLITIQUE DE SECURITE SELINUX ............................................................................... 50
2.4.1. CONTEXTE DE SECURITE ............................................................................................... 50
2.4.2. FICHIERS ET REPERTOIRES LIES A LA POLITIQUE DE SECURITE ....................................... 53
2.4.3. TIQUETAGE DU SYSTEME AU DEMARRAGE .................................................................. 54
2.4.4. SYSTEMES DE FICHIERS ET ATTRIBUTS ETENDUS. .......................................................... 55
2.4.5. REGLES DU MODELE TE ............................................................................................... 56
2.5. MISE AU POINT SUR LES TRAVAUX DE RECHERCHE UTILISANT LES MODELES DE CONTROLE
D'ACCES DANS SELINUX ............................................................................................................... 61
2.5.1. LE MODELE RBAC DANS SELINUX. ............................................................................. 61
2.5.2. LE MODELE TYPE ENFORCEMENT ................................................................................. 62
2.5.3. LE MODELE RSBAC DANS LINUX ................................................................................. 64
2.5.4. LE MODLE MLS (MULTI-LEVEL SECURITY) ............................................................... 64
2.5.5. LE MODLE MCS (MULTICATEGORY SECURITY) ....................................................... 64
2.6. CONCLUSION ..................................................................................................................... 64
CHAPITRE 3 ................................................................................................................................ 66
INTRODUCTION ................................................................................................................. 66
LEMENTS D'ORBAC ........................................................................................................ 66
NIVEAU ABSTRAIT......................................................................................................... 67
ROLE ............................................................................................................................. 68
VUE .............................................................................................................................. 68
ACTIVITE ...................................................................................................................... 68
CONTEXTE .................................................................................................................... 69
NIVEAU CONCRET ......................................................................................................... 71
RELATIONS ENTRE LES ENTITES ABSTRAITES ET LES ENTITES CONCRETES ........................ 73
RELATION EMPOWER .................................................................................................... 73
RELATION USE .............................................................................................................. 74
RELATION CONSIDER .................................................................................................... 74
LANGAGE DE FORMALISME DU MODELE ORBAC .............................................................. 75
HIERARCHIES DANS ORBAC ............................................................................................. 75
HIERARCHIE DES ROLES ................................................................................................ 75
HIERARCHIE DES ACTIVITES .......................................................................................... 76
HIERARCHIE DES VUES .................................................................................................. 76
HIERARCHIE DES ORGANISATIONS................................................................................. 77
CONTRAINTES ................................................................................................................... 78
MOTORBAC ...................................................................................................................... 79
HISTORIQUE ET ARCHITECTURE DE MOTORBAC .......................................................... 79
MODULES DE MOTORBAC ........................................................................................... 80
CONCLUSION .................................................................................................................... 85
CHAPITRE 4 ................................................................................................................................ 86
CODAGE EN MODELE ORBAC DE LA POLITIQUE DE SECURITE PAR DEFAUT DE
SELINUX....................................................................................................................................... 86
4.1.
4.2.
4.2.1.
4.2.2.
4.2.3.
4.3.
4.4.
4.4.1.
4.4.2.
4.4.3.
4.4.4.
4.4.5.
4.5.
4.6.
INTRODUCTION ................................................................................................................. 86
FICHIERS ET REPERTOIRES LIES A LA POLITIQUE DE SECURITE DEFAUT ............................. 87
LE FICHIER DE CONFIGURATION DE LA POLITIQUE DE SECURITE PAR DEFAUT ................ 87
CONTEXTE DE CONNEXION PAR DEFAUT ASSOCIES AUX UTILISATEURS ......................... 88
CONTEXTE PAR DEFAUT ASSOCIE AUX FICHIERS ET REPERTOIRES ................................. 88
PARAMETRES DE LA POLITIQUE DE SECURITE SELINUX ..................................................... 90
ENCODAGE EN MODELE ORBAC DE LA POLITIQUE DE SECURITE DEFAUT SELINUX .......... 91
LES ENTITES DE LA RELATION EMPLOY ......................................................................... 91
LA RELATION CONSIDER ............................................................................................... 93
LA RELATION USES ....................................................................................................... 93
LA RELATION ABSTRAITE : PERMISSION ........................................................................ 94
LA RELATION CONCRETE IS_PERMITTED ....................................................................... 96
EXEMPLE DILLUSTRATION............................................................................................... 97
CONCLUSION .................................................................................................................. 101
7
INTRODUCTION
Le systme dinformation (SI) et les donnes sensibles dune organisation, reprsentent son
capital essentiel, quil convient de protger contre les accs non autoriss. Les spcialistes de
scurit des systmes dinformation (SSI) sont confronts des enjeux de scurit. Ils doivent,
la fois, avoir une approche globale du SI et une connaissance approfondie du systme
dexploitation ainsi que les applications installes.
En effet, plusieurs possibilits de technique sont offertes aujourdhui laide de la
gnralisation de la connexion Internet, lutilisation intensive des systmes et applicatifs
communicants et la complexit des architectures. Ces possibilits introduisent aussi des risques
comme le cas o des utilisateurs portent atteinte lintgrit du systme en se comportant dune
manire insouciante suite des manipulations gnralement involontaires, risque et qui peuvent
favoriser le danger, cette catgorie des utilisateurs est lorigine de la majorit des problmes lis
la scurit d'un systme d'information (SSI), en plus on trouve le cas des personnes
malintentionnes qui arrivent sinfiltrer en exploitant une vulnrabilit du systme pour
semparer dinformations sensibles aux quelles elle ne sont pas censes avoir accs. Un autre cas
frquent concerne les programmes malveillants (les virus, chevaux de Troie, etc.) qui sont
dvelopps pour nuire un systme, voire mme modifier ou collecter ses donnes pour les
rutiliser des fins malveillantes.
Dune manire gnrale, La SSI consiste assurer lunique utilisation des ressources
systmes d'une organisation dans le cadre prvu. Elle est value par plusieurs proprits et
exigences de scurit, ce sont des caractristiques critiques des ressources, savoir :
La non rpudiation : permet dassurer qu'une personne ne puisse nier avoir effectu une
transaction;
D'autres caractristiques sont galement utilises peuvent sajouter celles prcites, tels
que :
La traabilit : garantit que les accs et tentatives d'accs aux lments considrs sont
audits et que ces traces sont conserves dans des journaux exploitables.
Ces critres sont gnralement assurs par des techniques et mcanismes qui portent
essentiellement sur divers aspects tels que :
La dtection dintrusions : utilise des outils qui compltent les fonctions du pare-feu en
reprant, dune part les intrus sur les ports laisss ouverts et dautre part les requtes
malintentionnes. il existe deux types de systme de dtections dintrusions (ou IDS pour
Intrusion Dtection System) : les IDS bass rseau et les IDS bass hte. Ces deux catgories
d'IDS emploient gnralement deux principes de dtection savoir l'approche
comportementale (ou dtection d'anomalies) et l'approche base sur la connaissance (ou la
dtection de scnarios d'attaque).
10
prcisment au modle OrBAC[10], qui permet dabstraire les entits : sujet, action et objet
respectivement enrle, activit et vue et ce dans le cadre dune mme organisation. Ce concept
permet de rduire le nombre de rgles de scurit et de simplifier galement la tche de
ladministrateur.
11
12
Plan du mmoire
Ce document comporte sept chapitres :
Le chapitre 1prsente dune manire gnrale la scurit des systmes d'informations. Il
rappelle les notions gnrales et les proprits de scurit. Ensuite il dfinit les divers modles de
contrle d'accs dans les systmes d'information. Il fait le point sur les diffrentes politiques de
contrle d'accs ainsi que sur leurs modles proposs dans la littrature. Nous dcrivons les
limites de chaque modle de contrle d'accs.
Le chapitre 2intitul La solution de scurit SELinux, est une prsentation de SELinux
(Security-Enhanced Linux) comme solution de scurit des systmes Linux. Il constitue travers
ces paragraphes une dmystification de plusieurs concepts SELinux et met en relief les divers
aspects en relations avec lobjet de la prsente thse. Enfin, ce chapitre liste, pour chaque modle
de contrle daccs (DAC, TE, RBAC, MCS, et MLS) utilis dans SELinux, les plus importants
des travaux de recherches qui ont t proposs.
Le chapitre 3 prsente le modle de contrle d'accs OrBAC, ce modle est centr sur la
notion d'organisation, ce qui permet de reprsenter une politique de scurit qui diffre d'une
organisation une autre. Nous avons utilis un langage issu de la logique du premier ordre pour
reprsenter les diffrentes entits et relations du modle OrBAC. Ainsi que le codage des
hirarchies et des contraintes. Les exemples dillustration sont gnralement fournis en relation
avec SELinux.La fin de ce chapitre prsente les fonctionnalits de base de loutil dadministration
[12] interface graphique bas sur le modle OrBAC :MotOrBAC (acronyme qui dsigne Moteur
OrBAC) qui permet dexprimer une politique de scurit au niveau organisationnel.
Le chapitre 4 intitul Codage en modle OrBAC de la politique de scurit par dfaut de
SELinux commence par donner quelques brves descriptions de concepts principaux utiliss par
une politique de scurit SELinux par dfaut tels que: le contexte, le rle, de type, etc. Nous
montrons ensuite que chaque concept dans la politique de scurit SELinux possde son
correspondant naturel dans le modle OrBAC ce qui confirme la puissance expressive du systme
OrBAC. Nous avons utilis la distribution Fedora 14et Red Hat 4, pour illustrer notre encodage.
Le Chapitre 5est consacr la prsentation des transitions de types en SELinux et
lattribution dun type (resp. domaine) par dfaut un objet (resp. processus). Il traite en outre le
cas dune transition de domaine partir dune rgle de scurit, ce cas est illustr travers
13
lexemple de changement de mot de passe dans le systme Linux. Le but de ce chapitre est de
montrer comment on peut coder les transitions de domaines en OrBAC.
Le chapitre 6propose une extension du modle OrBAC en intgrant le concept de priorit
qui peut tre associs aux rgles de la politique de scurit. Ces priorits sont reprsentes dans le
cadre de la thorie des possibilits, nous abordons la faon dont laquelle les priorits sont
ajoutes aux diffrentes entits abstraites du modle OrBAC. Nous avons galement proposdes
rgles d'agrgation pour driver les priorits associes aux permissions concrtes partir des
rgles prioritaires des permissions abstraites.
Le chapitre 7propose une implmentation de nos contributions sous forme dun
programme dvelopp en Delphi 7 grant une base de donnes cre en Paradox, plusieurs
images cran sont captures lors de limplmentation de lexemple dillustration.
Enfin, la conclusion rsume les diffrents chapitres ainsi que les contributions et donne
quelques perspectives pour les futurs travaux lis au sujet de cette thse.
14
Chapitre 1
Modles et politiques de contrle d'accs
1.1. Introduction
La scurit des systmes informatiques est un vritable travail, qui consiste sassurer
que les ressources matrielles ou logicielles d'une organisation ne peuvent tre, en aucun cas,
employes en dehors dun cadre prvu et dfini lavance. Elle vise gnralement trois
principaux objectifs :
Les autres proprits peuvent tre vues comme des cas particuliers de ces trois classes, par
exemple
L'authentification : qui peut tre exprime comme lintgrit de la source, elle consiste
sassurer que seules les personnes autorises aient accs aux ressources. Plusieurs
systmes de contrles daccs utilisent des techniques (Exemple : lidentifiant et le mot de
passe dun utilisateur, carte biomtrique) qui permettent d'accder des ressources
uniquement aux personnes autorises.
Tout dpond donc, du systme dinformation scuriser, pour choisir telle ou telle
technique de scurit. La cryptographie est gnralement utilise pour assurer lintgrit, la
confidentialit et la non-rpudiation. Avec le contrle daccs, on sintresse plutt garantir
deux proprits fondamentales : la confidentialit et lintgrit des informations contenues dans
un systme dinformation. Ceci ncessite que chaque accs une ressource soit contrl et
autoris. Le systme dont on veut protger les ressources doit disposer de plusieurs mcanismes
de contrle daccs et ce afin de permettre dy implanter des politiques de scurit (concernant la
confidentialit et lintgrit). Le contrle daccs fonctionne sur les modles utilisant les entits
de modlisation suivantes :
Sujet : est une entit active, elle inclut toujours les utilisateurs du systme et souvent les
processus en cours d'excution pour le compte des utilisateurs. Dans ce contexte, un
utilisateur est soit une personne physique connue par le systme informatique et
enregistre comme utilisateur, soit un serveur, soit une sorte de personne morale
reprsentant des fonctions de service automatique telles que le serveur dimpression, le
serveur de base de donnes, le serveur de messagerie, etc.
Objet : est une entit passive, un conteneur dinformation, sur lequel un sujet peut
effectuer une action (les fichiers, sockets de communication, priphriques matriels,
etc.);
15
Action : elle reprsente les moyens permettant aux sujets de manipuler les objets du
systme.
Le prsent Chapitre se prsente sous forme de plusieurs sections : dans la premire section
nous prsentons dune manire gnrale la scurit des systmes d'information. La section qui
suit rappelle les notions gnrales et les proprits de scurit ainsi que les diffrents modles de
contrle d'accs proposs dans la littrature.
1.2. Politique de scurit
Dfinition : Une politique de scurit est lensemble des lois, rgles et pratiques qui
rgissent la faon dont linformation sensible et les autres ressources sont gres, protges et
distribues lintrieur dun systme spcifique3.
Une politique de scurit se construit en dfinissant les proprits satisfaire par le
systme, et en tablissant un schma dautorisation qui doit avoir, en principe, une politique
cohrente. La politique de scurit prend en compte les aspects organisationnels et techniques qui
dfinissent comment les utilisateurs peuvent manipuler l'information. Les proprits de scurit
peuvent tre dfinies en fonction de la confidentialit, lintgrit et la disponibilit (Cf. 1.1).
Le dveloppement dune politique de scurit peut tre ralis dans trois directions
distinctes, savoir : physique, administrative et logique[13].
Dfinition dITSE : Information Technology Security Evaluation riteria, standard pour la scurit des systmes d'information.
16
Les politiques bases sur les rles (Role-Based Access Control - RBAC)
Gnralement, on adapte des organisations particulires dautres politiques comme:
TBAC (Team-based Access Control Model) [8],TMAC (Task-Based Access Control)[9],
HRU (Harrison, Ruzzo and Ullmann) [15], BLP (Bell et Lapadula)[16]etOrBAC (Organizationbased access control) [10]. Normalement, il faut construire une politique de scurit de telle sorte
quaucune squence valide dapplications des rgles (du schma dautorisation) ne puisse amener
le systme dans un tat tel quun objectif de scurit soit viol, en partant dun tat initial sr (on
parle de politique de scurit cohrente).
Ceci suppose lutilisation dune mthode formelle de construction des rgles du schma
dautorisation, partir dune spcification formelle des objectifs de scurit.
1.3.1. Contrle daccs discrtionnaire (DAC)
Le contrle daccs discrtionnaire (Discretionary Access Control - DAC)[14] permet
un sujet dattribuer des permissions dautres sujets. Ce contrle daccs est flexible mais il peut
gnrer des erreurs.
Les manipulations des droits daccs chaque objet restent lentire discrtion du sujet
qui en est le responsable. Dans un tel modle tout sujet ayant cr un objet en est le propritaire.
Ce type de mcanisme est utilis dans les systmes dexploitation traditionnels : Unix, Linux,
Windows et Macintosh, il est implment gnralement avec des listes de contrle daccs
(Access Control Lists - ACL) (Cf.Tableau 1).
Les modles DAC que nous prsentons dans cette section sont ceux qui se basent sur la
matrice de contrle daccs: le modle de Lampson et le modle de Harrison Ruzzo Ullman.
1.3.1.1.
Modle de Lampson
un ensemble de droits d'accs qui constituent l'ensemble des oprations que le sujet (i) peut
raliser sur l'objet (j).
La construction dune telle matrice ncessite l'identification et le contrle des objets
protger, des sujets qui demandent accs aux objets, et des actions qui peuvent tre excutes sur
les objets. Elle est structure sous forme dune machine tats, o le triplet (S, O, M) reprsente
chaque tat, avec :
S est un ensemble des sujets (dans notre cas S= {s1,..,sM})
O est un ensemble dobjets (dans notre cas O= {o1,..,oN})
M une matrice de contrle daccs (dans notre cas M (si, oj)=Lecture)
Le modle de Lampson associ aux DAC, ne permet pas dexprimer directement des interdictions
ou des obligations, aussi sajoute-t-il la complexit de la mise jour de la matrice daccs.
Sujet/Objet
s1
s2
si
o1
Lecture
criture
Excution
Lecture
sM
Pas
daccs
oj
oN
Pas daccs
Lecture
Lecture
criture
o1 : Lecture
o2 : Pas daccs
oN : Lecture
18
o2
s1 : Lecture
s2 : Pas daccs
sM : criture
Tableau 3-Exemple d'ACL
Liste de contrle daccs (ACL) : Une ACL est un vecteur de la matrice de contrle daccs,
il reprsente l'ensemble des sujets ayant des droits d'accs sur l'objet considr avec pour
chaque sujet l'ensemble des actions que ce sujet peut raliser sur l'objet, cest une technique
utilis pour les routeurs. (Cf. Tableau 3).
A noter que le modle de Lampson associ aux DAC, ne permet pas dexprimer
directement des obligations ou des interdictions qui peuvent tre parfois dune grande utilit pour
exprimer des exceptions. Encore plus, la mise jour de la matrice daccs est trs fastidieuse. En
effet, lajout dun nouvel utilisateur passe par lajout dune ligne de la matrice ce qui correspond
remplir toute les cellules des objets se trouvant la mme ligne que le sujet. Le modle de
Lampson a t progressivement amlior pour donner naissance dautres modles tels que le
modle de (Harrison Ruzzo Ullman - HRU)[15].
1.3.1.2.
Le modle HRU
Kerberos est un protocole d'authentification rseau qui repose sur un mcanisme de cls secrtes (chiffrement symtrique) et
l'utilisation de tickets.
19
Significations
Destory subject s
Dtruire un sujet s
Create object o
Gestion
des objets
Gestion
des sujets
Gestion
de la
matrice
Primitives utilises
par les rgles
Destory object o
s2
o1
o2
s1
rwx rw-
s2
r-x r--
Le problme de protection est indcidable (dans le cas gnral) : Si nous appliquons une
squence de commande la matrice daccs, nous ne sommes pas srs quun droit
particulier soit mis dans une cellule o il ne se trouvait pas auparavant.
Les modles discrtionnaires DAC posent quelques problmes comme la vulnrabilit aux
chevaux de Troie5[16]. En effet la politique discrtionnaire se base sur la confiance totale
attribue aux sujets qui sexcutent aux comptes des utilisateurs et aux utilisateurs eux-mmes.
Des manipulations maladroites ou malveillantes provoquent des abus de pouvoir rendant la
politique vulnrable. En effet, il suffit quun seul utilisateur commette une erreur pour que la
politique globale de scurit soit compromise. De plus, il se peut quun utilisateur non autoris,
reoive une copie dun objet transmis par un utilisateur autoris le lire, cette situation est une
consquence immdiate du fait que ce dernier ne possde pas une vision globale du systme. On
parle donc de lincontrlabilit du flux dinformation.
1.3.2. Contrle daccs mandataire (MAC)
Le contrle d'accs obligatoire (MAC) [14] est gnralement dfini par opposition au
contrle d'accs discrtionnaire (DAC), son objectif est dimposer une politique non modifiable
par les utilisateurs finaux dans le but de garantir la sret du systme afin de pallier aux divers
problmes dus aux fuites d'informations et la vulnrabilit aux chevaux de Troie [16].
Anderson [17] propose dutiliser un Moniteur de Rfrence (Reference Monitor) pour
contrler les accs entre sujets et objets. La matrice correspondante tant fixe, il devient alors
possible de garantir que des droits daccs considrs critiques ou dangereux ne pourront tre
donns ou obtenus par erreur. Ce concept de Moniteur de Rfrence est au cur de la dfinition
du contrle daccs mandataire qui est plus rigide et plus sr que le contrle daccs
discrtionnaire.
Les fuites dinformations et le transfert illgal sont contrs par les rgles des politiques
MAC, qui contrlent les flots dinformations. Ces politiques sont gnralement des politiques
multi-niveaux bases sur la notion de treillis6 et qui consiste en une classification des sujets et des
objets impose par une autorit centrale.
Un cheval de Troie est un programme se prsentant comme un programme normal destin remplir une tche donne, et qui, une fois install
exerce une action nuisible diffrente de sa fonction "officielle".
6
Un treillis est un ensemble E muni dune loi (partiellement ordonn) tel que : x, y E, inf{x,y} et sup{x,y} existent.
21
1.3.2.1.
Dans un environnement multiutilisateur, les donnes et les informations qui circulent dans
le systme dinformation peuvent tre ranges dans diffrents niveaux de sensibilit. En effet,
certaines informations pourront tre qualifies de trs importantes que d'autres.
Une information sensible est une information qui, si elle est rvle des personnes mal
intentionnes, peut entraner la perte d'un privilge ou dun droit. Do la ncessit de mettre en
place des solutions (de contrle daccs) de sorte que seuls certains sujets peuvent tre filtrs
pour accder ces informations.
Exemple: dans une entreprise, les salaires et les primes des employs peuvent tre
qualifis dinformations sensibles et par consquent, seul un nombre restreint de fonctionnaires
(habilits) peuvent avoir accs cette information. ien que dautres informations comme le nom
de lemploy, son adresse etc. ne le sont pas. ette qualification varie dune entreprise une
autre et peut dpendre aussi des lois de chaque pays. En effet, en France par exemple, il n'est pas
illgal de demander l'ge d'un candidat l'embauche, alors quaux tats-Unis cela est interdit et
peut faire l'objet d'un procs en suspicion de discrimination d'ge.
Les modles de scurit multi-niveaux [18] permettent d'viter la divulgation non
autorise de certaines informations aux utilisateurs non fiables. Cette politique est mise en uvre
par un mcanisme qui consiste attribuer des niveaux de scurit aux objets et aux sujets.
Les politiques multi-niveaux classent les sujets et les objets avec diffrents degrs de
sensibilit ou niveau de scurit lesquels constituent un ensemble partiellement ordonn par une
relation de dominance, note:
tant donne deux niveaux de scurit (n1) et (n2) tels que (n1) (respectivement (n2)) est
dfini par sa classification (c1) (respectivement (c2)) et son ensemble de catgories (C1)
(respectivement (C2))
La relation de dominance est dfinie comme suit :
22
Lensemble des niveaux de scurit muni de la relation dordre partiel () possde une
borne infrieure et une borne suprieure. La structure de cet ensemble forme un treillis.
Lutilisation ainsi que la smantique de la classification dpendent de lobjectif vis, c'est--dire :
veut-on prserver la confidentialit ou lintgrit des donnes?
Nous allons prsenter des politiques multi-niveaux bases sur la confidentialit (BellLaPadula) ainsi que celles bases lintgrit (Biba) des objets du systme. Pour ces deux modles
nous dfinissons les entits suivantes:
la proprit simpleNo Read Up : Cest une interdiction explicite de toute lecture en haut.
Cette proprit assure quun sujet s ne peut lire un objet o que si le niveau de scurit de s
domine celui de o (un sujet ne doit pas semparer des informations qui ne lui sont pas
autorises). La figure 1. ci-dessous indique les niveaux de scurit attribus aux objets et aux
sujets, par consquent, les rgles suivantes sont suscites :
23
la proprit toileNo Write Down : cest une interdiction de toute criture en bas, cette
proprit assure quil ny aurait pas de fuite dinformation dun objet vers un autre objet de
classification infrieure. pour cela un sujet s ne peut modifier un objet o que si le niveau
courant de scurit de s est domin par celui de o (un sujet ne doit pas rvler des secrets).
De la mme manire que la proprit simple de BPL, la Figure 2ci-dessous indique les
niveaux de scurit attribus aux objets et aux sujets. Les des rgles suivantes sont respecter :
24
Ce deuxime principe empche, comme illustr dans la Figure 3, de lire un fichier puis de
le copier sur un autre fichier de classification infrieure et qui pourrait tre lu par un utilisateur
non habilit.
Une sur-classification des informations : Aprs modification des objets non classifis par un
sujet ayant une habilitation h ces objets se voient attribuer une classification gale
lhabilitation h, do une croissance automatique des classifications. Les objets en question
doivent tre dclassifies aprs un certain temps par des sujets de confiance.
La classification dune copie dun objet quelconque peut diffrer de celle du fichier originale:
cest la proprit No Write Down qui lexige.
Le non traitement de la gestion de lintgrit des donnes.
25
26
La proprit simple :
La proprit toile :
la proprit simpleNo Read down : Un sujet ne peut accder en lecture un objet que si le
niveau de classification de l'objet domine celui du sujet. D'une faon similaire que pour le
modle de BLP, lattribution de niveaux de scurit aux objets et aux sujets comme indiqu
dans laFigure 5 ci-dessous donne lieu aux rgles suivantes:
28
1.3.2.2.
Laudit et la traabilit de chaque programme excut ainsi que lutilisateur qui l'a
excut.
Les manipulations des utilisateurs ne peuvent tre faites qu travers des procdures qui
prservent l'intgrit des donnes (transaction bien formes).
Si une transaction (de TP) sapplique un lment de CDI, le rsultat reste dans le
CDI.
Pour des transactions particulires, si elles sont appliques un lment de UDI,
elles peuvent gnrer un lment de CDI.
Le modle DTE
Le modle DTE (Domain and Type Enforcement) [22] est une extension8 du modle Type
Enforcement (TE) qui a t mis en uvre pour la premire fois dans le systme Lock, TE est n
8
Dans ce modle les matrices d'expression de la politique de scurit ont disparu au profit de l'utilisation d'un langage intuitif de politique de
scurit, possibilit de transition automatique entre domaines...
29
Pour voir l'intrt du modle DTE, nous allons supposer quune personne vient de pirater
apache (qui fonctionne sous root), et qu'il peut lancer des commandes arbitraires via ce
processus. En tant que root, le pirate peut modifier le fichier /etc/shadow pour s'ajouter un
compte sur le serveur. Cependant, DTE peut tre utilis pour contrler et contrer ce
comportement malveillant en restreignant au serveur apache laccs sauf ses fichiers de
configuration, ses librairies et aux pages web. Et en garantissant galement que seul apache
pourrait accder ses ressources (fichiers de configuration,).
Le modle DTE opre travers les lois daccs sur les domaines (respectivement les
types) sous lesquelles les sujets sont confins (respectivement les objets sont mis).
Tout simplement :
Un sujet s na le droit daccder un objet o que si Ds a le droit daccder To.
Avec:
Ds est le domaine o le sujet s est confin
et
To est le type o lobjeto est mis (ou englob)
Le modle DTE assigne les types aux objets du systme au niveau dune table appele la
table de typage. Une deuxime table : table de dfinition des domaines, note DDTspcifie les
droits daccs (lecture, criture, excution, ajout, suppression) de chaque domaine sur les
diffrents types. La DDT dfinit galement les points dentre (entrypoint) des domaines, c'est-dire quels sont les fichiers binaires qui, une fois excuts, vont crer un processus dans tel ou tel
domaine (Cf. lexemple de mot de passe au b : Transition de domaine lors de lexcution dune
application ).
Finalement les droits daccs entre domaines (cration, destruction, envoi de signal) sont
dfini au niveau de la table dinteraction des domaines, note DIT.
Le modle DTE fait bien partie de la catgorie des contrles daccs obligatoires(MAC),
car la manipulation des tables sus-indiques est effectu par un administrateur et ne relve pas de
la discrtion des utilisateurs finaux.
30
Ajout : une fois un sujet est cr, et avant de lui attribuer des permissions, il doit avoir un
rle dans lequel on doit le mettre et par la suite on attribue lesdites permissions ce rle,
de cette faon tous les sujets jouant le mme rle se voient hriter les mmes permissions.
Suppression : le fait de retirer un sujet dun rle lui supprime automatiquement toutes les
permissions de ce rle.
Il est remarquer quun sujet ne dtient pas le pouvoir dappartenir un tel ou tel rle,
ceci est dtermin par une autorit centralisant la gestion des rles, gnralement un
administrateur de la politique de scurit.
Le modle RBAC convient parfaitement aux entreprises dont la frquence de changement
du personnel est leve.
La famille RBAC[25] est forme des quatre modles RBAC0, RBAC1, RBAC2, et RBAC3
(Cf. Figure 8).
Chaque session est associe un utilisateur pour une priode de temps limite.
31
plusieurs sujets peuvent tre attribus plusieurs rles comme ils peuvent navoir aucun
rle.
plusieurs rles peuvent dtenir plusieurs permissions comme ils peuvent ne dtenir
aucune permission.
un sujet une permission p si et seulement si ce sujet est attribu un rle qui dtient
cette permission p.
Les permissions peuvent tre reprsentes comme un couple (objet, opration), o objet
est une ressource qui peut tre un fichier, une mmoire, etc. et opration est un droit daccs
comme lecture, criture.
Le concept de session est introduit au modle RBAC0en vue de lpurer. Une session
reprsente une priode dlimite pendant laquelle un utilisateur accde aux ressources de
systme. Elle ne peut tre active que par un seul utilisateur, qui peut activer une ou plusieurs
sessions. Dans une mme session, un utilisateur a la possibilit de ne pas activer tous ses rles,
mais au besoin il activera, parmi ces rles, ceux indispensables pour laccomplissement des
tches satisfaire.
Dans une session, un utilisateur se voit attribuer toutes les permissions associes aux rles
que lutilisateur a activs, les autres permissions accordes aux rles qui ne sont pas encore
activs ne sont pas attribues lutilisateur. Par consquent, le principe du moindre privilge est
fortement prsent puisque lutilisateur ne possde que les permissions ncessaires pour accder
aux ressources systme, et rien de plus. Ainsi en cas de dfaillance grave du systme, les
dommages ne peuvent pas dpasser ce qui est autoris par les permissions attribues.
b. Le modle RBAC1
Le modle RBAC1 (Cf. Figure 11) est une extension du modle RBAC0. Les rles
peuvent tre structurs de manire hirarchique ce qui permet dpurer progressivement les
diffrentes permissions attribues chaque rle.
Dmon : rle des processus systme qui s'excutent en arrire-plan, et qui n'ont
pas d'interaction avec les utilisateurs.
Processus : rle des programmes chargs en mmoire centrale et qui sont en cours
d'excution.
Nous remarquons que tous les dmons sont forcment des processus, le rle Dmon est
donc une spcification du rle Processus (Cf. Figure 12) :
33
Le modle hirarchique limit : dans une telle hirarchie l'hritage se rduit une simple
structure darborescence ce qui veut dire qu'un rle ne peut avoir quun seul parent.
Exemple r2 hrite ses permissions du seul rle R1 (Cf. Figure 14). Ce type de hirarchie
est ncessaire dans le cas o l'hritage de plusieurs rles entraine des conflits.
34
35
Le modle de contrle daccs bas sur la notion dquipe (Team-Based Access ControlTMAC) formul pour la premire fois en 1997 par Thomas[8]. Son but tait de fournir un
contrle daccs pour les systmes dinformation ayant des activits de collaboration, do
lintroduction dune nouvelle entit quipe qui abstrait les sujets (de diffrents rles) qui
collaborent pour accomplir des tches prcises. Les autorisations que possde un sujet rsultent
de la combinaison des autorisations associes aux rles exercs par le sujet et des autorisations
associes l'quipe laquelle est affect le sujet. Ainsi, les autorisations que possde un sujet
partir dun rle donn changent suivant lappartenance de ce rle une telle ou telle quipe.
36
Dans le modle TMAC les permissions sont ou bien attribues (il sagit du cas o un
utilisateur choisit un rle au moment de sa connexion), ou bien actives (selon le contexte :
spatial, temporel, etc.). Cest donc le pouvoir dexprimer des contextes qui permet au modle
TMAC dtre flexible et dexprimer des politiques daccs pouvant fournir des permissions plus
fines que celles de RBAC.
Dans TMAC, le contexte de collaboration d'une quipe donne contient :
le contexte d'utilisateur : reprsente les utilisateurs qui forment l'quipe un moment
donn.
le contexte d'objet : reprsente les instances d'objets ncessaires pour que l'quipe
puisse accomplir sa tche.
37
Lapproche de scurit base sur la notion des tches prsente une rupture radicale avec
les modles classiques (ou modles passifs) de scurit, car ces derniers ne prcisent pas la faon
d'utiliser une permission entre un sujet et un objet.
Dans le modle TBAC, les permissions sont contrles et gres de manire ce qu'elles
soient actives et synchronises pendant l'excution des autorisations. Une tape d'autorisation est
une abstraction fondamentale dans TBAC et est utilise pour grouper et grer un ensemble de
permissions relatives une tche.
Le modle TBAC gre et contrle les permissions dune faon dynamique, elles sont
actives et synchronises pendant l'excution des autorisations. Les permissions relatives une
tche donne sont groupes et abstraites dans des autorisations qui reprsentent les abstractions
fondamentales du modle. Dans TBAC, chaque autorisation possde une dure de vie et donc un
cycle de vie (Cf. ).
Valide : Dans cet tat, toutes les permissions associes l'autorisation sont actives. Ainsi
une tape de cette autorisation sera excute et par la suite atteindra la fin de sa vie et
entrera par la suite dans l'tat invalide.
Invalide : quand une autorisation devient invalide, elle sera supprime du systme.
38
TBAC0 : est le modle de base de TBAC, il offre quelques facilits de base aux tches du
modle, des tapes d'autorisation et des dpendances reliant plusieurs tapes
d'autorisation. TBAC0 est un modle trs gnral et flexible, il sagit du minimum requis
pour tout systme incorporant les autorisations bases sur les tches.
TBAC1 : est une extension du modle de base TBAC0, il incorpore la notion d'autorisations
composites qui reprsente une abstraction encapsulant deux ou plusieurs tapes
d'autorisation. Ces tapes d'autorisation sont lies entre elles. Cependant, elles ne sont pas
visibles d'autres tapes d'autorisation n'appartenant pas la mme autorisation
composite. Une autorisation composite est valide si toutes ses tapes d'autorisation sont
dans leur tat valide. D'autre part, elle est considre comme invalide ds qu'une de ses
tapes d'autorisation atteint l'tat invalide.
TBAC2 : est lui aussi une extension du modle TBAC0, il supporte les notions plus
avances de contraintes. Ainsi TBAC2 serait plus appropri pour une organisation qui
trouve TBAC0 assez souple et ouvert.
TBAC3 : combine les deux modles TBAC1 et TBAC2, et donc contient les notions
d'autorisations composites et de contraintes.
1.4. Conclusion
Dans ce chapitre, nous avons prsent diverses politiques de contrle d'accs proposes
dans la littrature. Ces modles ont t classs en trois grandes familles:
Les politiques discrtionnaires (DAC) : Dans ce modle le contrle d'accs est la
discrtion du propritaire de l'objet ou de tout sujet qui est autoris contrler l'accs
l'objet. Des droits peuvent tre passs d'un sujet un autre.
Les politiques obligatoires (MAC) : Dans le cas d'une politique obligatoire, les droits
d'accs sont imposs par l'administrateur du systme et ne doivent pas tre pris par le
propritaire de lobjet concerns.
Les politiques bases sur les rles (RBAC) : Dans ce modle, les droits d'accs sont
accords aux utilisateurs selon ou le(s) rle(s) qu'il(s) joue(nt) dans le systme.
Lutilisation de rle a permis de simplifier considrablement la gestion de la scurit.
RBAC a permis aussi dorganiser les privilges daccs en utilisant la notion de
hirarchie et de contrainte.
39
Nous avons prsent dans ce chapitre, les limites de chacun de ces modles. En effet, la
politique discrtionnaire DAC se base sur la confiance totale attribue aux sujets (utilisateurs),
par consquent ils sont vulnrables aux chevaux de Troie [16]. Aussi sajoute-t-il que la politique
globale de scurit puisse tre compromise suite des manipulations maladroites ou
malveillantes provoques par des utilisateurs. Les politiques RBAC prsentent galement
linconvnient de garantir la proprit de confidentialit puisque deux sujets jouant un mme rle
se voient possder les mmes droits daccs sur les objets du systme. La hirarchie des rles
constitue un autre inconvnient, car elle est gnralement diffrente de la hirarchie
organisationnelle.
Enfin, bien que les politiques MAC garantissent facilement la confidentialit des donnes,
elles peuvent dans certains cas se rvler inappropries. En effet, par exemple dans le cas o des
utilisateurs sont amens utiliser frquemment de nombreuses donnes, Ils peuvent avoir besoin
de grer eux-mmes les droits daccs.
Outre ces limites, les modles DAC, RBAC et MAC ne permettent ni reprsenter des
politiques spcifiant des interdictions ou des obligations, ni exprimer des rgles contextuelles
relatives aux permissions, interdictions et obligations.
Le chapitre suivant propose une solution de scurit dite SELinux (Security Enhanced
Linux) qui sintgre au noyau Linux et qui repose sur les modles : TE, RBAC, MCS, et MLS.
40
Chapitre 2
La solution de scurit SELinux
2.1. Introduction
SELinux(Security-Enhanced Linux) est une solution de scurit des systmes Linux, la
fois complexe et complte. Il offre une grande flexibilit mais sa mise en application est
relativement plus difficile. Sa complexit vient du trs grand nombre de rgles qu'il faut mettre en
place. Ce chapitre essaiera de dmystifier la plus part des concepts SELinux et mettra en relief les
divers aspects en relations avec lobjet de la prsente thse, dont notamment les politiques de
contrle daccs utilises : TE, RBAC, MCS, et MLS de Bell-Lapadula.
Dans la premire section nous prsentons lhistorique de SELinux, son architecture ainsi
que les autres solutions de scurit, la deuxime section dcrit les diffrents modles de scurit
utiliss par SELinux, la troisime section traite la politique de scurit SELinux, la quatrime
section sintresse aux diffrents types de transition de domaine et enfin la dernire section
recense les principaux travaux de recherches utilisant les modles de scurit en relation avec
SELinux.
2.2. SELinux
2.2.1. Historique de SELinux
Initi par lagence de scurit nationale des tats-Unis (National Security Agency- NSA),
SELinux [27]est une solution de scurit qui sintgre au noyau, elle lui apporte plusieurs
fonctionnalits de protection avances comme le MAC (Mandatory Access Control), qui
sajoutent celles existantes telles que le DAC (Discretionnary Access Control).
Cette intgration de mcanismes MAC dans un systme d'exploitation grand public a
permis la NSA de transfrer les concepts de scurit a une large communaut et de dmontrer
leur viabilit. Elle a permis d'amliorer considrablement la scurit du systme en activant la
protection contre les vulnrabilits [28]. Elle a pu limiter strictement les dommages causs par
des applications malveillantes ou dfectueuses.
Le projet SELinux a connu, ensuite lappui des organismes industriels suivants:
Les laboratoires NAI Labs(Network Associates Laboratories) ont contribu au projet
SELinux par le biais du groupe SEE (Secure Execution Environments) comme suit :
MITRE corporation a labor des politiques de scurit pour les applications ainsi
que la documentation pour le serveur web Apache, Sendmail et crond. Ils ont aussi
dvelopp des outils d'analyse des politiques comme loutil Polgen[29].
41
CSC (Secure Computing Corporation), tait une entreprise publique (rachete en 2008
par la compagnie McAfee), elle a dvelopp des services pour la protection des
utilisateurs et des donnes. elle a dvelopp galement beaucoup dutilitaires ainsi
quune configuration prliminaire de la politique de scurit pour le systme. Cette
configuration a t utilise comme point de dpart pour la configuration des
laboratoires NAI Labs.
La premire version publique de SELinux a t donne la communaut du logiciel libre
(licence GPL) vers la fin de lanne 2000 par lInformation Assurance Research Office qui pilote
le projet. Cette version de SELinux prsente sous forme dun patch du noyau Linux a lanc une
impulsion significative et supplmentaire en ce qui concerne la scurit bas niveau du fameux
noyau (kernel). La communaut Linux en particulier (Linus Torvalds10) dcida alors de crer une
architecture modulaire, Crispin Cowan11proposa alors LSM (Linux Security Module)comme
interface fournissant suffisamment de crochets ( hooks en anglais) dans le noyau Linux pour
crer des modules permettant de renforcer le contrle d'accs obligatoire.
2.2.2. Architecture de SELinux
SELinux utilise une architecture globale appele Flask (FLux Advanced Security Kernel)
qui sintgre au Noyau Linux existant travers le framework LSM afin dassurer une grande
souplesse de branchement des divers types de contrle daccs, et de dfinir des politiques de
scurit granulaires et adaptes.
SELinux est utilis dans de nombreuses grandes distributions, telles que:
Fedora depuis la version Core 2 (en 2004) : il est install et activ par dfaut
RedHat depuis la version 4 (en 2005) : il est install et activ par dfaut
Ubuntu depuis la version Hardy Heron 8.04 (en 2008) comme alternative AppArmor.
2.2.2.1.
Le Framework LSM
Le rle du Framework LSM est de permettre aux modules de scurit (diffrents type de
contrles daccs) de se brancher, travers une srie de points de contrle (hooks ou ancres) sur
le noyau Linux. Ces crochets sont gnralement placs aprs les contrles standard d'accs
(DAC) Linux, mais avant que la ressource relle est accessible par le noyau au nom du processus
appelant.
On y trouve actuellement une implmentation de divers types de contrles daccs
comme : SELinux, LIDS, DTE et mme les capabilities12 ont t sorties du noyau pour sappuyer
sur le projet LSM. La Figure 20 illustre le framework LSM de base.
En anglais Capability List : liste reprsentant les lignes de la matrice de contrle daccs. Pour chaque sujet on
associe les objets auxquels il peut accder, avec les oprations autorises.
42
Le module LSM
SELinux est bas sur le modle de larchitecture Flask (hrite de GFAC[30]) qui,
dploye dans le noyau, permet dimplmenter diffrents modles de scurit autres que RBAC et
TE, ce qui assurent la puissance[31] et la finesse du langage de configuration utilis. Ce langage
est jug relativement simple puisquil dispose dun nombre rduit de mot-cl.
La principale caractristique de Flask est la sparation du code dcision et lecode
application de la politique de scurit.
Le code dcision (policy decision-making code) est contenu dans un composant particulier
du noyau, il permet dtablir les lois appliquer sur le systme, il sappelle rfrentiel de
scurit.
La partie concernant le code dapplication (policy enforcement code) est directement
intgre dans le composant du noyau grant les processus, les systmes de fichier, les IPC (InterProcess Communication) et le rseau, il se charge donc dexcuter et dappliquer les lois dictes
par le rfrentiel de scurit.
Entre ces deux parties, SELinux fournit un systme de cache appel AVC (Acces Vector
cache) pour un accs rapide aux dcisions daccs qui sont dj calcules par le rfrentiel de
scurit.
Flask prsente une architecture indpendante de la politique de scurit mettre en place.
En effet, les interactions entre les entits (Sujets ou objets) suivent un modle bien dtermin:
Chaque entit du systme reoit un label (une tiquette) qui reprsente un contexte de scurit
(Cf. Figure 21) contenant des informations sur lentit elle-mme ainsi que sur les autres entits
avec lesquelles elle va interagir et comment les interactions peuvent se produire.
SELinux attribue chaque contexte un numro identificateur de scurit appel SID
(Security IDentifier), cest la partie Policy enforcement qui se charge de cette attribution. Le SID
avec le contexte correspondant sont enregistrs au niveau du rfrentiel de scurit (Security
server) qui est le seul connaitre leurs significations.
43
Dossiers
Descripteurs de dossier
Fichiers Systme
Liens
Processus
Fichiers spciaux de divers types (Block Device, Sockets, FIFO etc.)
Socket
Etc.
Les classes servent identifier la cible des permissions, ainsi chaque classe dobjet sont
associes des permissions, comme openet link pour un fichier, ou listen et accept pour un socket,
le tableau ci-dessous dcrit quelques classes d'objet dfinies par SELinux :
Classe d'objet
Opration
Processus
Fichiers
Systmes de fichiers
Descripteurs de fichiers
Lorsquun sujet (un processus) entre en interaction avec un objet (un fichier), le
rfrentiel de scurit prend sa dcision en se basant sur le contexte de scurit du couple (sujet,
objet) en plus de la classe de l'objet. Il existe deux types de dcision :les dcisions daccs et les
dcisions de transition.(Cf. 2.4.5.3 et 2.4.5.4).
2.2.3. Les autres solutions de scurit
Le Framework LSM avait donc lavantage de ne porter que des changements mineurs au
niveau du noyau lors de la mise en place de nimporte quelle solution de scurit, il a cherch
tre indpendant de limplmentation de la politique de scurit. Il existe plusieurs modules de
scurit qui sont maintenus indpendamment du dveloppement du noyau Linux, cest la raison
pour laquelle le tenu de linterface LSM est argument par le fait qu'il peut y avoir plus quun
seul modle de scurit. Parmi ces modules de scurit, il y a :
LIDS (Systme de dtection d'intrusions Linux) est un patch du noyau Linux, sa premire
version a t conue pour la version du noyau Linux 2.2 et plus tard pour la version 2.4. La
version 2 de LIDS sera transforme en un module pour le framework LSM, il est actuellement
en volution. LIDS comprend plusieurs mesures visant minimiser les dommages en cas de
compromission du systme. Les fichiers peuvent tre marqus comme immuables, et des
modifications aux configurations vitales du systme peuvent tre vites. Mme l'utilisateur
root ne peut pas contourner la protection sans avoir d'abord arrt le systme LIDS, ce qui
ncessite davoir un mot de passe (dfinie au moment de la compilation).
RSBAC (Rule Set Based Access Control) est utilis en production depuis 2000, il constitue
une architecture trs flexible qui reprend les principes de GFAC (Generalized Framework for
Access Control) [30]. Comme SELinux, la modularit de RSBAC a fait de lui un outil facile
dployer sur des environnements dj configurs. Il nemploie pas le mcanisme dattributs
tendus fournis par le systme de fichier comme le fait SELinux (Cf. 2.4.4) pour stocker les
informations de contrle daccs (ACI), mais il utilise simplement un rpertoire appel :
rsbac.dat la racine de chaque partition. Toute configuration de RSBAC se fait
principalement travers des outils en ligne de commande sous le nom dun utilisateur secoff
(officier de scurit). Contrairement la politique de scurit de SELinux, celle de RSBAC,
possde lavantage de ne contenir quun nombre trs rduit de rgle de scurit, bien que le
manque de la documentation et labsence dune politique de scurit standard pour les
services usuels en font un outil complexe utiliser.
2.3. Le modle de scurit de SELinux
En plus de lutilisation du modle DAC (Discretionnary Access Control), SELinux
introduit le modle MAC (Mandatory Access Control) qui intgre les modles reconnus suivants :
13Les inodes contiennent les mtadonnes des systmes de fichiers, et en particulier celles concernant les droits d'accs.
45
Multi-Catgorie (MCS)
46
47
allow : permet didentifier les oprations que le sujet est autoris excuter sur l'objet.
Par dfaut, cette opration nest pas journalise (audite).
Exemple:
allow auth_t shadow_t : file {getattr read};
Cette rgle signifie qu'un processus avec le domaine auth_t est autoris (allow) lire
les attributs ({getattr}) et crire ({read}) dans un fichier (file) possdant le type
shadow_t.
Cette rgle stipule que lorsque les processus unconfined_t possdent les permissions
load_policy, setenforce et setbool sur les objets de type security_t, alors
ces oprations doivent tre journalises.
dontaudit : permet arrter l'audit des oprations quun sujet n'est pasautoris
effectuer sur un objet.
Exemple:
dontaudit named_t root_t : file {getattr read};
Cette rgle stipule que lorsque les processus named_t ne sont pas autoriss lister les
attributs {getattr} ni lire {read} le contenu des fichiers (file) de type
(root_t), alors ces oprations ne doivent pas tre journalises.
Exemple de message de refus daccs :
Il sagit dun extrait de fichier de journalisation /var/log/messages, dans lequel on
peut
(scontext) qui dtermine le sort de lopration daccs (dans notre cas utilisation de
lditeur vi). Le message derreur audit lors dune tentative dutilisation de lditeur vi
est:
2.3.1.2.
Les dcisions de transition se traduisent par le passage dun type un autre pour chaque
objet cre sollicitant un contexte par dfaut autoris par la politique de scurit. Ainsi le type
dun fichier nouvellement cr dpondra du contexte de son rpertoire parent et surtout du
contexte (spcialement le type) du processus qui la cr. En effet, un fichier cre par un
utilisateur normal naura pas le mme type sil a t cr par un processus spcial. Il en est de
mme pour le changement de contexte (spcialement le domaine) dun processus en vue
deffectuer une tche bien prcise qui ncessite des privilges autres que ceux lis son contexte
source.
Lutilit des rgles de transition est de limiter le comportement anormal des processus. En
effet, sans SELinux, on remarque quil y a une vulnrabilit lors de la procdure de changement
du mot de passe par un utilisateur sur lancien systme Linux (Cf. 2.4.5.3).
2.3.2. Le modle Role-Based Access Control (RBAC)
Le modle original de RBAC assigne des rles aux utilisateurs, et associe des permissions
ces rles. Le rle dans SELinux est un groupe qui possde lautorisation daccs un ensemble
de domaines TE.
Le fonctionnement de RBAC dans SElinux est compos de deux parties, la premire
consiste assigner des rles aux utilisateurs et la seconde associe un domaine TE au shell de
lutilisateur :
SELinux garantit que le contexte de scurit dun fichier restera toujours le mme, mme aprs
lavoir renomm ou dplac nimporte o dans larborescence. Il est donc associ directement
l'inode du fichier.
2.4.1.1.
Identit de lutilisateur
Pour contrler lidentit des utilisateurs, SELinux utilise sa propre base de donnes et
tabli un mappage qui lie les identits des utilisateurs Linux UID (User IDentifier) avec celles de
SELinux (ID), le fichier /etc/passwd de linux nest donc pas employ pour mettre en place ce
contrle. Cela confirme lide que le modle DAC de Linux et le modle MAC de SELinux sont
indpendant et distincts.
Dans la majorit des distributions Linux, SElinux attribue chaque utilisateur (ou
processus) une des identits prdfinies dans la politique de scurit (Cf. 1), ces identits sont
fourni comme suit :
root : est lidentit SELinux quon obtient quand on se connecte sur la console en tant
quutilisateur Linux : root.
system_u : est lidentit SELinux par dfaut des processus excuts durant la phase de
dmarrage.
user_u : est lidentit SELinux obtenue par dfaut pour un utilisateur connect sur le
systme.
Remarque : chaque distribution peut ajouter des identits spcifiques, En effet, par exemple la
distribution Gentoo ajoute deux autres identits : staff_u et sysadm_u.
2.4.1.2.
Rle
Le rle object_r est assign tous les fichiers, il ne se trouve pas explicitement dans la
politique de scurit SElinux, car la notion de rle pour les fichiers nest pas obligatoire et que si
un fichier requiert un niveau de scurit, alors un type TE spcifique lui sera assign. Le tableau
suivant montre comment les identits SElinux sont combines avec les rles lors de la connexion
dun utilisateur:
Identits SELinux
Rles
system_u
system_r
user_u
user_r
staff_u
staff_r, sysadm_r
sysadm_u
sysadm_r
root
staff_r, sysadm_r
Description
Pour les processus systmes (noninteractifs). Ne devrait pas tre attribue
un utilisateur.
Pour les utilisateurs sans privilge. La
correspondance par dfaut.
Pour les administrateurs systmes qui se
connectent galement pour excuter des
tches d'utilisateur normal.
Pour les administrateurs systmes qui ne
font que se connecter pour excuter des
tches administratives. Il est suggr de
ne pas utiliser cette identit.
Identit spciale pour root. Les autres
utilisateurs devraient plutt utiliser
staff_u la place.
La transition entre les rles : Role1 et Role2 se fait en utilisant la rgle suivante :
allow Role1 Role2
Un rle Role1 peut tre assign un type Type1 par la commande suivante:
role Role1 type Type1
Remarque : Par convention on utilise le suffixe _r pour identifier les noms des rles.
2.4.1.3.
Type
Llment : type (pour un objet) qui est galement connus sous le nom : domaine (pour un
sujet) utilis dans le modle DTE, est un identifiant dfini par lauteur de la politique de scurit
qui dtermine sa signification selon son utilisation dans ladite politique. Par exemple, un script de
/etc/rc.d est un programme de type initrc_t.
Un type SELinux mlange des sujets et des objets ayant les mmes autorisations. Les
processus dun mme domaine et les objets dun mme type sont traits de faon identiques.
SELinux se base essentiellement pour la prise de dcision daccs sur llment type (ou
domaine) qui confine les processus dans des sandboxes lesquels empchent l'escalade des
privilges en offrant un environnement contrl.
Une politique de scurit SELinux peut tre dfinie seulement avec quelques utilisateurs et
rles, mais des dizaines voire mme des centaines de types, ce qui justifie leurs importances.
Pour des raisons de simplicit on utilise la notion dattribut pour construire des ensembles de
types afin doctroyer, par exemple des autorisations groupes ou de diffrencier entre les types
et/ou les domaines. Les attributs sont donc utiliss pour mieux grer les politiques complexes.
52
Laccs dun processus un fichier se fait seulement lorsque le serveur de scurit trouve
une rgle de type allow (ou dontaudit ou auditallow) qui donne la permission au
domaine source davoir accs au type selon lopration dsire. Il en est de mme lorsquun
processus veut excuter une opration impliquant un autre processus, ou le processus lui-mme.
La politique de scurit reprsente le cur de SELinux, elle spcifie les rgles dans un
environnement dimplmentation des modles TE et RBAC, et elle est crite par un langage conu
spcialement pour crire les politiques de scurit.
La politique de scurit SELinux dfinit les diverses rgles qui noncent comment les
domaines peuvent accder aux types. Par dfaut, et hormis celles qui sont explicitement permises
par une rgle de scurit approprie, toutes les oprations sont refuses puis audites dans le
rpertoire /var/log/messages (cas des distributions : RedHat et Fedora) ou
/var/log/audit, gnralement la valeur de la variable denvironnement: $AUDIT_LOG
indique lemplacement des fichiers de journalisation des dcision de refus daccs.
Ladministrateur de la politique de scurit peut la dfinir en modifiant les fichiers de
scurit existant, tel est le cas des distributions Fedora et RedHat qui proposent des politiques
toutes faites pour les cas courants, ou en ajoutant dans larborescence des fichiers de contextes de
scurit. Il est noter quune politique de scurit peut tre installe chaud dans le noyau.
Dans les paragraphes suivants nous allons expliquer comment la politique est charge
durant la phase de dmarrage du systme par le processus init.
Avant quelle soit charge dans le serveur de scurit du noyau, la politique est compile
dans un format binaire. De cette manire SELinux dfinit dune part, toutes les composantes des
contextes de scurit (identit:rle:type) pour chaque objet et chaque sujet et dautre part les
autorisations daccs et de transition des domaines aux types. SELinux permet travers sa
politique de scurit, de restreindre la visibilit dun processus sur lensemble du systme et de
ses objets.
2.4.2. Fichiers et rpertoires lis la politique de scurit
Avant dnumrer les diffrents fichiers et rpertoires qui constituent la politique de
scurit dploye par des distributions de Linux, il est rappeler que SELinux est install et
activ par dfaut sous les distributions : Fedora, CentOS et RedHat. Cependant le package de
SELinux nest pas install sur dautres distributions comme Gentoo. Le tableau suivant montre
lemplacement des rpertoires source de SELinux pour quelques distributions :
Distribution
Debian
Fedora
RedHat
directory-policy /targeted/policy/ce
sous-rpertoire
contient le fichier binaire de la politique de scurit : policy.NO (cas de RHL4).
directory-policy /targeted/src/policy/
ce
sousrpertoire contient les fichiers sources de la politique de scurit.
directory-policy /targeted/contexts/ce
sous-rpertoire
contient les fichiers de configuration et dinformation sur les contextes de scurit.
Si le processus init ne trouve pas SELinux dans le noyau, ou si SELinux est dsactive
via le paramtre de dmarrage selinux=0, ou si le fichier directorypolicy /config spcifie que le paramtre SELINUX=disabled, le systme est
donc dmarr par le processus du boot sans SELinux.
Au mme temps, init dfinit ltat enforcing si cette valeur est diffrente de celle du
paramtre SELINUX du fichier directory-policy /config. Cela survient
lorsquun paramtre est pass au cours du processus de dmarrage, telles que
enforcing=0 ou enforcing=1. Le noyau napplique aucune politique jusqu' ce
que la politique initiale soit charge.
Si SELinux est prsent, la partition /selinux/ est monte.
La politique est maintenant entirement charge dans le noyau. Les SID initiaux sont
ensuite mapps des contextes de scurit dans la politique telle quelle est dfinie dans
le
fichier: directorypolicy/targeted/src/policy/initial_sid_contexts. Dans le cas
dune
politique
cible
targeted,
le
nouveau
domaine
est:
user_u:system_r:unconfined_t. par la suite le noyau peut commencer
rcuprer dynamiquement des contextes de scurit partir du serveur de scurit dans le
noyau.
init sauto-excute afin qu'il puisse tablir une transition vers un autre domaine,
videment si une rgle de la politique lautorise. Pour la politique cible targeted, le
processus init reste dans le domaine unconfined_t puisquil ny a aucune
transition dfinie dans la politique.
init poursuit normalement le processus de dmarrage.
2.4.4. Systmes de fichiers et attributs tendus.
SELinux utilise les attributs tendus xattr: extended attributes pour stocker des
tiquettes de scurit sur chaque fichier. Ces attributs tendus ncessitent l'utilisation de systmes
de fichiers ext2, ext3 et JFS. Le systme de fichiers XFS est galement support mais
prsente des limites comme loccupation d'espace disque qui ralentit par la suite le systme
cause des oprations supplmentaires pour chaque fichier. Le systme de fichier ReiserFS n'est
pas compatible avec ces attributs tendus.
Le tableau suivant dcrit brivement les systmes de fichiers qui sont disponibles dans le
noyau Linux :
55
Systmes de fichiers
ext2
ext3
JFS
ReiserFS
Description
est un systme de fichiers qui ne journalise pas les mtadonnes,
c'est--dire que le systme prend un temps considrable pour la
vrification du systme de fichier lors de la phase de dmarrage.
Est un systme de fichier trs fiable, stable et performant, cest
la version journalise du systme de fichiers ext2, il minimise le
temps dattente lors dun dmarrage du systme.
Est le systme de fichiers journalis hautes performances
d'IBM. C'est un systme rapide et sr avec de bonnes
performances dans diverses configurations.
Tout comme le JFS, ReiserFS est un systme de fichiers
journalis qui prsente de trs bonnes performances, il est
apparemment moins maintenu que les autres systmes de
fichiers.
Tableau 11- Les systmes de fichiers les plus utiliss sur les systmes Linux
SELinux peut galement monter les systmes de fichiers annexes, tels que vfat14(Virtual
FAT) etiso966015, mais avec une grande restriction : tous les fichiers du montage auront le
mme type SELinux, puisque le systme de fichiers ne supporte pas les attributs tendus. Tmpfs
est le seul systme de fichiers annexe supporter les attributs tendus.
2.4.5. Rgles du modle TE
Les dclarations TE (Type Enforcement) sont les principales composantes de la politique
de scurit. On trouve les dclarations dattributs et les dclarations de types :
2.4.5.1.
Dclarations dattributs
Un attribut est un nom qui identifie un ensemble de types qui ont une proprit similaire.
Les attributs peuvent tre utiliss lors de la dclaration d'un type et peuvent tre associs un
nombre quelconque de types. Les attributs peuvent tre utiliss lors de la spcification des
permissions sur les types, on dclare les attributs dans le fichier de dclaration directorypolicy/targeted/src/policy/attrib.te de la faon suivante :
attribute Nom_Attribut;
Exemple :
attribute domain1 ;
Cet exemple reprsente la dclaration dun attribut qui peut tre utilis pour dsigner un
ensemble de types regroups sous le nom domain1.
2.4.5.2.
Dclarations de types
Le langage de configuration TE exige que chaque type soit dclar. Chaque dclaration de
type spcifie un nom principal pour le type, un ensemble facultatif d'alias pour le type, et un
14
vfat est u e e te sio des s st es de fichie s de t pe FAT de Mic osoft ui pe et lutilisatio de noms de fichiers longs
ISO 9660 est une norme de l'Organisation Internationale de Normalisation, qui dfinit le systme de fichiers utilis sur les
CDROM.
15
56
ensemble facultatif d'attributs pour le type. La syntaxe d'une dclaration de type est la
suivante:type Nom_type Alias Atributs;
Exemple :
type LeType_t, domain1;
Danscet exemple, il sagit de la dclaration de type LeType_t ayant lattribut domain1.
2.4.5.3.
Transition de type
Transition de domaine
Dans tout ce qui suit, la notion de transition de domaine est illustre travers deux
exemples, Lun concerne la transition de domaine au dmarrage tandis que lautre traite la
transition de domaine lors de lexcution dune application, elle sera illustre par le programme
de changement de mot de passe:
a. Transitions des domaines au dmarrage
Au dmarrage dune machine Linux dont SELinux est install et est activ, chaque
processus nouvellement cre se voit attribuer un domaine appropri, commenant par le
domaine de lancement kernel_t du processus 1jusquaux domaines des processus du
login.
La Figure 23[32] prsente un diagramme qui montre les transitions de domaine au
dmarrage du systme. Il fait ressortir les noms des types/domaines et des macros utiliss
pour mettre en uvre les transitions.
SELinux utilise le langage des macros appel m4 pour l'criture des rgles de politique
rutilisables. Cela facilite la rdaction et par la suite la gestion de la politique de scurit.
Deux macros : domain_auto_trans() et domain_trans() assurent les transitions des domaines
des processus de dmarrage. Ils sont paramtrs et contiennent des rgles telles que : allow,
type_transition, etc.
Au dmarrage du systme, les transitions suivantes entre les domaines seffectuent :
kernel_t lance init, en le mettant en init_t (le type du fichier dans lequel on
trouve le code dinit est init_exec_t).
init_t lance le script dinitialisation initrc dans le domaine initrc_t, ainsi que
la console dans getty_t.
La console lance le processus de saisie de login/(mot de passe) dans le domaine
local_login_t (ou login_t)
Lorsquun utilisateur se connecte, son shell sera plac dans user_t (ou
unconfined_t) la suite dune transition de domaine enclenche par
local_login_t (ou login_t).
Tous les dmons lancs par initrc sont placs dans leur domaine par des rgles de
transition de type appropries.
Un utilisateur ordinaire ne peut pas changer son mot de passe en ditant directement le
fichier /etc/shadow(/etc/passwd pour les systmes Unix classiques), il n'a donc pas les
permissions suffisantes pour crire dans ce fichier. Par contre la commande usr/bin/passwd
peut le faire sa place puisquelle possde lautorisation spciale SUID qui lui permet d'accder
au fichier shadow sur lequel Il n'y a que le root qui possde les permissions de lecture et
d'criture.
Bien que cette technique ait rsolu beaucoup de problme, elle possde le risque de
compromettre la scurit de tout le systme puisque le processus qui excute la commande
passwd dispose automatiquement de tous les droits que lutilisateur root possde tout au long
de lexcution de cette commande. En effet, puisque la commande /usr/bin/passwdest la
proprit de lutilisateur root et non pas de lutilisateur qui la lanc, le fichier /etc/shadow
qui est lui aussi la proprit du root (Cf. Listing 1), peut tre modifi par nimporte
quelle processus ayant lutilisateur root comme propritaire :
# ls -la /etc/shadow
-rw-r----- 1 root root 1543 Feb 10 11:43 shadow
Listing 1- Le propritaire du fichier /etc/shadow
unconfined_t
passwd_t
shadow_t
passwd_exec_t
Les domaines et types ci-dessus sont utiliss par des rgles de la politique de scurit
(Type Enforcement), de la faon suivante:
La premire rgle :
Cette rgle permet au shell, qui tourne dans le domaine unconfined_t de lutilisateur
sollicitant le changement de son mot de passe, dexcuter (etpar consquent dinitier un appel
systme execve()) la commande passwd qui possde le type passwd_exec_t.
Le shell consulte les autorisations du fichier passwd avant d'essayer de lexcuter, d'o
la ncessit davoir lautorisation getattr en plus de execute.
La deuxime rgle :
La troisime rgle :
La rgle principale :
type_transition unconfined_t
passwd_exec_t : process
60
passwd_t;
Cette rgle est introduite pour supporter les transitions qui se produisent par dfaut, elle
sappelle la rgle de transition de type : type_transition, elle spcifie les transitions par
dfaut qui devrait se produire si aucune transition explicite nest prsente.
Gnralement les rgles type_transition sont dfinies par des macros qui les
combinent avec un ensemble de rgles TE (dans notre exemple, il sagit des rgles
susmentionnes).
Dans cet exemple, la rgle type_transition indique que, par dfaut et lors dun
appel systme execve(), si le processus appelant est de type unconfined_t et le type du
fichier excutable est passwd_exec_t, une transition de domaine vers un nouveau domaine
passwd_t se produirait.
2.5. Mise au point sur les travaux de recherche utilisant les modles de contrle d'accs
dans SELinux
2.5.1. Le modle RBAC dans SELinux.
2.5.1.1.
En 1992, David et Rick Ferraiolo Kuhn ont propos dans[24] un usage gnral du modle
RBAC, lequel a intgr les proprits des approches existantes des applications spcifiques.
RBAC est devenu le plus dominant des modles de contrle d'accs. En effet, Il a t considr
comme une alternative au modle MAC (Mandatory Access Control) et au modle DAC
(Discretionary Access Control).
2.5.1.2.
En 1996, Ravi et al. ont introduit dans [7]un Framework pour les modles RBAC qui
intgrent les fonctionnalits suivantes :
RBAC0 a t dfini comme tant le modle de base, dfinie travers les utilisateurs, les
rles et les autorisations.
RBAC1 comprend RBAC0 mais incorpore des hirarchies comme une relation d'ordre
partiel entre les rles.
RBAC2 intgre galement RBAC0, mais ajoute des contraintes. RBAC1 et RBAC2 sont
indpendants les uns des autres, de telle sorte quun systme peut mettre implmenter un
sans lautre.
RBAC3 est un modle qui rassemble pleinement les proprits de RBAC, incorporant
RBAC0, RBAC1, et RBAC2. RBAC3 est quivalent au modle[24], l'exception de
RBAC3 qui permet une hirarchie d'ordre partiel alors que le modle [24] dfinit la
hirarchie comme un arbre enracin.
En termes orients objet, le modle [7] peut tre considr comme incorporant l'hritage
multiple alors que [24] utilise l'hritage unique.
61
2.5.1.3.
Zhao et al. [33] montrent comment utiliser la Logique de description pour modliser la
hirarchie des rles, des permissions et sessions qui lui sont associs. Elle ne couvre pas les
autres types de contrles de scurit trouvs dans SELinux, mais dfinit une structure pour la
modlisation de RBAC et montre comment effectuer des requtes sur le modle.
2.5.1.4.
Hallyn[35] dcrit la confusion apparente qui rsulte de la manire dont RBAC est intgr
au modle Type Enforcement (TE), car la politique de scurit implment dans SELinux et Type
Enforccement (TE) sous une couche RBAC, le modle MLS y est galement implment dune
faon optionnelle.
SELinux spcifie laccs bass sur les rles en terme de TE, Cependant, le but de RBAC
dans SELinux est de permettre la gestion des privilges bass sur les rles que chaque utilisateur
autoris puisse jouer, ensuite de restreindre laccs des rles aux domaines dinfluence (domaines
de scurit sur le systme) toute en ayant un contexte valide dans lequel on peut combiner le rle
avec les types/domaines correspondant.
TE est le plus prsent en matire de scurit, car il est le plus probablement responsable
de tout refus daccs dun sujet a un objet donn.
Enfin, larticle montre travers un simple exemple comment RBAC et TE sont
troitement intgrs.
2.5.2. Le modle Type Enforcement
2.5.2.1.
62
2.5.2.3.
TIS (Trusted Information Systems)16 conservait son systme DTE (Domaine and Type
Enforcement) bas sur (Berkeley Software Distribution) BSD17, qui est connu dtre au
dmarrage de FreeBSD18[38].
TIS implmente le modle DTE dans ses pare-feu propritaires, mais les dtails de son
implmentation ne sont pas accessibles au public, et TIS semble avoir cess d'utiliser DTE.
2.5.2.4.
Hallyn et al. [39]ont dtaill limplmentation du modle DTE sous Linux, offrant ainsi
aux administrateurs systme un avantage en matire de la scurisation de ses systmes. Ils ont
invoqu galement, sur la base d'une politique qui est lu au dmarrage, les points suivants :
Le contrle d'accs des domaines aux types.
Les transitions de domaine.
Loscocco et Smalley [41] dcrivent la faon dont SELinux a t utilis pour rpondre un
certain nombre dobjectifs de scurit du systme. Ils montrent comment la configuration TE
rpond un ensemble spcifique d'objectifs de scurit. Ils fournissent et expliquent des
exemples dtaills de la configuration pour chaque objectif fix :
La limitation de l'accs aux donnes brutes
La protection de l'intgrit du noyau
16
17
18
63
La nature discrtionnaire de MCS (possibilit quun utilisateur attribue des catgories ces
propres fichiers)
2.6. conclusion
Dans ce chapitre nous avons montr que SELinux prsente une solution de scurit
flexible et granulaire car il permet dexprimer des rgles de scurit pour tous les sujets et les
objets du systme. Ces rgles consistent autoriser des domaines accder des types ce sont
64
des rgles daccs, ou dautoriser des sujets (respectivement des objets) a transiter vers de
nouveaux domaines (respectivement des types) se sont des rgles de transition. Ces rgles
constituent la politique de scurit de SELinux, elles sont nombreuses car leur nombre dpasse
plusieurs centaines de rgles.
Nous avons vu, dans ce chapitre, que plusieurs travaux de recherche concernant
lutilisation des modles DAC, RBAC et MAC dans SELinux ont t invoqus. Nous navons
recens par contre, aucun travail de recherche en relation avec lutilisation du modle OrBAC
dans SELinux.
De ce fait, nous allons voir dans le chapitre 4 que si on utilise le modle OrBAC alors la
politique de SELinux sera allge puisque le nombre de rgles sera diminu considrablement. Le
chapitre 3 prsente le modle OrBAC en tant que modle de scurit qui a introduit de nouveaux
concepts.
65
Chapitre 3
Les Modles de Contrle d'Accs Bass sur
l'Organisation (OrBAC)
3.1. Introduction
OrBAC (Organization Based Access Control) est un modle d'accs qui a repris de ses
prdcesseurs lide dabstraire les entits (dans le modle RBAC un sujet est abstrait en rle).
l'origine, OrBAC a t propos dans larticle [10] pour rpondre aux exigences des politiques de
scurit dans les domaines de soins de sant (les cliniques, les hpitaux, etc.), ainsi pour
amliorer la pertinence et lefficacit des systmes informatiques de ces secteurs. Cest dans le
cadre dun projet national MPSSICSS (Modles et Politiques de Scurit d'Informations et de
Communications en Sant et Social) par le Rseau National de Recherche en Tlcommunication
en France.
Actuellement lutilisation dOrBAC peut concerner des domaines autres que ceux de la
sant. Le but de notre travail est de coder une politique de scurit fine et granulaire comme la
politique de scurit SELinux[46] en utilisant OrBAC, ce qui confirme la puissance expressive de
ce modle.
Les politiques de scurit [47]qui s'appliquent au domaine des soins de sant exigent la
prsence des rgles exprimant des autorisations, interdictions, obligations et recommandations.
Ce sont exactement les qualits du modle OrBAC qui permet dinclure des rgles contextuelles
lies aux permissions, contrairement aux autres modles de contrle d'accs classiques tels que
DAC, MAC, RBAC, TBAC ou TMAC qui se limitent lexpression des permissions dune faon
statique.
La premire section du prsent chapitre sintresse aux lments abstraits et concrets du
modle OrBAC, la deuxime section prsente les diffrentes relations fournie par OrBAC, la
troisime section traite la relation qui existe entre les entits abstraites et les entits concrtes du
modle, la quatrime section prsente un survol sur le langage de formalisme du modle OrBAC,
la cinquime section traite la hirarchie dans OrBAC, la sixime section montre lutilisation des
contrainte en OrBAC et enfin la dernire section expose lutilitaire dadministration dOrBAC :
MotOrBAC.
3.2. lments d'OrBAC
OrBAC est un modle centr sur la notion d'organisation qui est considre comme
lentit active la plus importante de ce modle, c'est donc son principal apport. Ainsi, au sein
dun mme systme, chaque organisation peut dfinir sa politique approprie en utilisant OrBAC
et par la suite plusieurs politiques de scurit associes aux diffrentes organisations peuvent
cohabiter et tre gres de faon simultane.
La smantique de lorganisation dans OrBAC ne se limite pas seulement aux concepts lis
au domaine de la sant (exemple : organisation=clinique, hpital), mais elle peut stendre
66
un concept plus gnral, en la considrant comme un sujet ou comme tant un groupe organis
de sujets qui jouent certains rles.
Lorganisation au sens dOrBAC impose la prsence dun accord (agrment) entre les
entits actives (les sujets) qui sont censes, pour chacun dentre eux, jouer un certain rle.
OrBAC exige donc une certaine synergie structure entre les diffrentes entits actives afin de
former une organisation.
Le modle OrBAC[10][48] dfinit plusieurs entits (sujet, action, objet, rle, activit et
vue) et relations (Empower, Consider, Use, Permission, Is_permitted).
67
68
3.2.5. Contexte
OrBAC utilise une nouvelle entit, appele contexte pour exprimer diffrents types de
conditions supplmentaires qui limitent laccs de certains sujets certains objets. Ce sont des
contraintes qui contrlent l'activation des rgles exprimes dans la politique de contrle d'accs.
Un contexte sert spcifier les circonstances concrtes dans lesquelles les organisations
accordent des permissions de raliser des activits sur des vues. Il est noter que les contextes
assurent le principe de moindre privilge en restreignant les privilges attribuer un rle et par
la suite aux sujets jouant se rle pour la ralisation des tches autorises. Les dommages qui
peuvent rsulter dun accident, dune erreur, ou dune utilisation non autorise19 sont ainsi
limits.
Selon le modle OrBAC un contexte est vu comme une relation entre un sujet, un objet et
une action dans une certaine organisation, cette relation est note :
Dfinit (organisation, sujet, action, objet, contexte) et est schmatise comme suit (Cf.
Figure 26) :
Contexte temporel
Ce sont des contextes qui rgissent la validit des privilges en mesurant leurs dures en
intervalle de temps ou en se rfrant une date prcise, ce qui suppose que le systme
dinformation dispose dun dispositif mesurant le temps (gnralement une horloge systme) et
que la consultation de ce dispositif soit possible.
Exemple : l'infirmier X la permission de lire le dossier mdical dun patient Y la date
18/12/2012.
3.2.5.2.
Contexte spatial
Cela s'aligne exactement avec la dfinition du principe de moindre privilge dict par le Livre Orange (DOD-5200.28-STD)
69
Dans le cas o un sujet, jouant un certain rle dans une organisation, possde la
permission de manifester son intention daccder (en excutant une certaine activit) une
certaine vue, dans un contexte donn, on dit que cest un contexte dclar par lutilisateur. De
cette faon de nouvelles permissions, et ventuellement de nouvelles obligations, ou de nouvelles
interdictions lui seront attribues. Larticle [49] fixe les trois tapes suivantes pour la dfinition
dun contexte dclar par un utilisateur :
1. Dfinition du contexte associ aux objets appartenant une vue Purpose, ou bien lune
des sous vues qui en drivent.
2. Spcification des rles qui ont la permission de dclarer un but donn.
3. Spcification des rles qui lon permet dexcuter certaines activits dans le contexte
associ, dclar par lutilisateur.
3.2.5.4.
Contexte prrequis
Contexte provisionnel
Avant de modliser cette rgle, il y a lieu de noter que OrBAC utilise un langage (Cf.3.4)
pour reprsenter, d'une faon formelle, ses diffrentes entits et relations.
Pour modliser cette rgle, on dfinit d'abord un contexte provisoire appel
Urgent_activity comme suit:
sS, A, oO,
(Define (H 1 , s, o, , Urgent_activity)
l, (Use(H 1 , l, Log) (actor(l)=s)
(activity(l)=consult) (context(l)=Urgency))
Dans lorganisation H 1 , un sujet s excute une action sur lobjet o dans un contexte
provisionnel Urgent_activity si une activit consult a t journalise dans la vue Log dans
un contexte durgence Urgency avec le sujet s comme acteur (actor).
Nous dfinissons ensuite une vue appele Medical_report possdant les trois attributs
suivants :
Adressee : le sujet qui est suppos recevoir le rapport.
Patient : le patient concern par le rapport.
Content : Le contenu du rapport mdical.
En utilisant ce contexte provisionnel et cette vue, on peut alors prciser que le mdecin a
une obligation provisoire denvoyer un rapport mdical au mdecin traitant de ce patient:
Obligation(H 1 , Physician, send,
Med_repport_to_attending_physician, Urgent_activity)
3.2.6. Niveau concret
Cest ce niveau que les politiques concrtes prcisent quun certain sujet la permission
de raliser une certaine action sur un certain objet et ce partir des politiques abstraites, cest-dire en drivant la relation abstraite qui autorise le rle (jou par le sujet) de raliser lactivit
(considrant laction) sur la vue (utilise par lobjet scuriser). On dit que la politique concrte
est drive de la politique abstraite (Cf. 3).
OrBAC a introduit des relations concrtes : Est_permis, Est_interdit, Est_obligatoire et
Est_recommand (Cf. Figure 27) qui sont drives respectivement des relations abstraites :
Permission, Interdiction, Obligation et Recommandation, Afin de dcrire des actions concrtes
que ralisent les sujets sur les objets, et surtout pour spcifier aussi exactement que possible les
entits concrtes qui demeurent hors champs dapplications des rgles abstraites de la politique
de scurit dune organisation donnes. Il sagit donc dune autre faon pour exprimer des
71
exceptions la politique de scurit gnrale spcifie par lesdites relations. Ce qui rend les
politiques exprimes dans le modle OrBAC reproductibles et volutives.
Sujet
Un sujet (comme le montre la Figure 28) est soit une entit active, comme un utilisateur,
c'est--dire un tre humain comme Tom , ou une organisation comme un service particulier
d'un hpital donn, une version dune distribution Linux, etc.
Action
Au sens dOrBAC, Une action dsigne lacte (le verbe) par lequel un sujet agit sur un
objet. Ils correspondent principalement des actions informatiques concrtes telles que lire,
crire, Envoyer, etc. Cest la politique de scurit qui autorise, oblige, recommande ou interdit
ces accs travers une ou plusieurs rgles de scurit dune faon indirecte, puisque le modle
OrBAC contrle principalement les accs des entits abstraites (Rles, Activits et Vues).
Nanmoins, et en cas de traitement des cas particuliers, des rgles spcifiques peuvent
sappliquer aux entits concrtes (Sujets, Actions et Objets). Cest une technique visant
minimiser lcriture dun grand nombre de rgle. En effet, si par exemple la politique de scurit
dune organisation autorise tous les sujets jouant le rle R deffectuer laction A (entrant dans
lactivit a) sur lobjet o (faisant partie dune vue v), lexception dun sujet particulier Sp qui
nest pas autoris. Alors, au lieu dcrire autant de rgle (autorisant les actions des sujets sur des
objets) que de sujet, daction et/ou dobjet, on crit une rgle qui permet dautoriser le rle R
72
dexercer lactivit a sur la vue v, et ensuite crire une autre rgle de scurit qui exclue le sujet
concret Sp de cette autorisation (le formalisme de ce concept sera traiter plus tard dans ce
chapitre)
3.2.6.3.
Objet
Les objets dans le modle OrBAC, reprsentent gnralement les entits passives qui ne
contribuent pas aux dynamismes du systme (quoi quen appliquant, par exemple, le modle
OrBAC SELinux, il est possible de considrer des processus, qui sont des entits actives comme
des objets. Il est noter que l'ensemble de sujets peut tre inclus dans l'ensemble des objets). Les
objets reprsentent donc les ressources du systme informatique auxquels l'accs est sollicit. Ils
peuvent tre des rpertoires, des fichiers, des lments dune base de donnes ou carrment des
composants matriels comme les mmoires et les disques.
La dfinition dun objet dans une organisation (un tablissement, une administration ou
un hpital) peut tre considrer de diffrentes manires : un dossier de facturation de lentreprise
X, un dossier des congs du fonctionnaire Y ou un dossier de vaccination du patient Z.
3.3. Relations entre les entits abstraites et les entits concrtes
Outres les relations abstraites et concrtes vues prcdemment dans ce chapitre,
OrBACutilise dautres relations (Ce sont les relations verticales reprsentes dans le schma
gnrale dOrA: Cf. Figure 24) qui permettent de relier, dans une organisation particulire,
chaque entit concrte avec sa correspondante abstraite. C'est--dire elles relient les sujets aux
rles, les objets aux vues et les actions aux activits. Les trois relations ternaires utilises sont :
Empower, Use et Consider (Cf.Figure 24).
3.3.1. Relation Empower
Le prdicat Empower est utilis sous forme dune relation ternaire reliant un sujet s un
rle r et incluant une organisation org (Cf. Figure 29).Il est utilis de la faon suivante :
Empower(org, s, r ) est vrai signifie que lorganisation org habilite le sujet s jouer le rle r.
Exemple :
Empower (Distribution_Linux, init, init_t)
Signifie que lorganisation Distribution_Linux emploie le processus init dans
le rle init_t(il sagit dans notre formalisme dun rle OrBAC).
Remarque :
Nous remarquons que le modle OrBAC abstrait les entits (sujet, action, objet) en mta-entits
(rle, activit, vue). Les oprations joignant les sujets aux rles, les actions aux activits et les
objets au vues, ne peuvent tre dtermines dune faon prcise sans intervention de
lorganisation qui abrite ces entits concrtes. est pour cette raison quon peut trouver un
sujet jouant le rle R1 dans lorganisation Org1et R2 (diffrent de R1) dans lorganisation Org2.
(Il en est de mme pour les actions et les objets).
OrBAC utilise des relations ternaires entre les entits concrtes et leurs correspondantes
abstraites. Et ce contrairement aux modles TMAC [8] et RBAC[7]qui considrent seulement des
relations binaires entre les organisations et les sujets ou entre les sujets et les rles.
3.4. Langage de formalisme du modle OrBAC
Abou El Kalam et al. [10]ont dfini un langage issu de la logique du premier ordre pour
reprsenter les diffrentes entits et relations du modle OrBAC. Ainsi, les variables, les prdicats
et les relations sont reprsents par un ensemble de symboles. Les termes du langage sont
constitus par des symboles et des constantes qui correspondent aux instances des entits
abstraites et concrtes dOrBAC, de symboles de variables qui sont elles aussi types de la mme
manire, et de symboles de prdicats qui correspondent aux relations : Empower, Use, Consider,
Permission, Interdiction, Define.
Les formules du langage sont construites partir des formules atomiques, des connecteurs
boolens : (, , , ) et des quantificateurs (, ).
3.5. Hirarchies dans OrBAC
Dans un schma OrBAC, le fait de grer facilement un nombre important dentits
quelles soient abstraites ou concrtes nest pas une tche vidente, do leur rangement en sous
entits cohrentes (au sens de lorganisation), c'est--dire quune organisation peut tre scinde
en sous-organisation, un rle en sous-rle, une activit en sous activit et une vue en sous vue.
Ces dcompositions gnrent des liens hirarchiques entre lentit parent (gnralisation) et
lentit Enfant (spcialisation).
3.5.1. Hirarchie des rles
Les rles OrBAC sont gnralement organiss, dune faon similaire que dans le modle
RBAC [25] sous forme de hirarchie base sur le principe de spcialisation/gnralisation, ce qui
permet au sous-rle Enfant dhriter des privilges du rle parent. Pour exprimer cette hirarchie,
OrBAC introduit le prdicat : sub_role(org, R1, R2) qui signifie que dans lorganisation org, le
rle R1 est un sous-rle du rle R2.
Si on dispose d'une organisation org, de deux rles R1 et R2 (avec R1 un sous-rle de R2),
d'une activit activ, d'une vue vue et d'un contexte cont, alors R2 hrite de R1 le privilge
permission, cette hritage est modlis par la rgle suivante :
75
La hirarchie organisationnelle : tant donns deux sujets s1 et s2, jouant respectivement les
rles R1 et R2 dans une organisation org, tels que s1 est hirarchiquement suprieur s2. Dans
certainscas20, s1 peut hriter de toutes les permissions du rle R2. On dit que R1
(respectivement R2) est senior (respectivement junior) de R2 (respectivement R1). Cette
relation est modlise par le prdicat : senior_role (org, R1, R2).
La hirarchie spcification/gnralisation : Ce type de relation est modlis en introduisant
le prdicat : specialized_role(org, R1, R2) qui signifie que dans lorganisation org, le rle R1
est une spcialisation du rle R2. Par exemple Le rle chirurgien est une spcialisation du rle
mdecin.
Cuppens et al. [52]ont prsent quartes rgles de lhritage de rle (RH1, RH2, RH3, RH4)
qui permettent dexprimer lhritage des permissions et/ou des interdictions attribues aux rles.
3.5.2. Hirarchie des activits
D'une faon similaire que les rles, les activits sont aussi structures sous forme de
hirarchie, ainsi on peut dire que dans lorganisation org, lactivit a1 est une sous-activit de a2.
Ce type de relation hirarchique est modlis au moyen du prdicat sub_activity (org, a1, a2).
Une telle hirarchisation nest autre quune spcialisation. Ainsi, dans une organisation
org, lactivit MAJ_X (mise jour de base de donnes X) est spcialise en deux activits :
INSERT_X (insertion des enregistrements dans des tables de la base X) et WRITE_X (criture
dans des tables de la base X), nous avons donc :
sub_activity(org, INSERT_X, MAJ_X)
et
sub_activity(org, WRITE_X, MAJ_X)
3.5.3. Hirarchie des vues
De la mme faon que pour les rles et les activits, lensemble des vues est structur par
des hirarchies dpendant de lorganisation. Le fait de dire que la vue v1 est une sous-vue de la
vue v2 dans lorganisation org signifie que v1 est une spcialisation de v2, le prdicat
sub_view(org, v1, v2) modlise cette hirarchisation. Ainsi les permissions sont hrites de la vue
v1 vers la vue v2 selon la rgle suivante :
org, r, a, v 1 , v 2 , c
permission (org, r, a, v 2 , c) sub_view (org, v 1 , v 2 )
permission (org, r, a, v 1 , c)
20
Lexception a la gnralit est que dans le cas o R1 = directeur d'hpital et R2 = mdecin un utilisateur jouant le rle R1
n'hritera pas forcment du rle R2.
76
Lhritage des interdictions est dfini par une rgle similaire celle concernant la
permission, elle consiste transcrire le fait que si la vue v1 est une sous-vue de la vue v2dans
lorganisation org et si un rle linterdiction de raliser une certaine activit sur la vue v2, alors
ce rle aura linterdiction de raliser cette activit sur la vue v1.
3.5.4. Hirarchie des organisations
Comme pour les rles, les activits et les vues, OrBAC construit aussi la hirarchie
dorganisation, et introduit le prdicat sub_organization qui est suppos dfinir une relation
dordre partiel sur lensemble des organisations.
On crit, par exemple sub_organization( organisation1 , organisation2) pour signifier que
lorganisation organisation1est une sous-organisation de lorganisation organisation2.
Dans certains cas, la modlisation de laffectation dune ou de plusieurs sousorganisations a un rle est dfinit en utilisant loprateur de conjonction () entre le prdicat qui
dfinit la (ou les) sou-organisation(s) avec la (ou les) relation(s) Empower qui permettent
demployer la (ou les) sous-organisation(s) dans ledit rle :
Dans cette rgle le remplacement respectif du prdicat sub_role par les prdicats
specialized_role, sub_ activity et sub_ view permet dappliquer le mme principe de lhritage
des privilges dans la hirarchie de spcialisation respectivement, des rles, des activits et des
vues.Lhritage des permissions et des interdictions est modlis par la rgle suivante :
s, Empower(organisation, s, role 1 )
Empower(organisation, s, role 2 ) error()
Cependant, il existe certains rles particuliers qui doivent tre jou par un seul utilisateur,
ils sont indiqus par une contrainte qui concerne lattribution des rles aux utilisateurs, appele
contrainte duale.
Exclusion dynamique : Ce type de contrainte indique que bien quun utilisateur puisse
jouer plusieurs rles, il n'est pas autoris les activer simultanment.
OrBAC peut utiliser des contraintes appliquer aux organisations dans un but de vrifier
quune entit abstraite (rle, activit ou vue) est bien dfinie dans une organisation donne, ce
sont des conditions ncessaires satisfaire pour quune organisation org habilite un sujet s dans
un rle r, considre laction A comme faisant partie de lactivit a ou utilise lobjet o dans la vue
v, nous avons donc les contraintes suivantes :
org, s, r:
Empower(org,s,r) Relevant_role(org,r) error()
org, A, a:
Consider(org,A,a) Relevant_activity(org,a) error()
78
org, o, v:
Use(org, o, v) Relevant_view(org, v) error()
Semblablement a ces dernires, OrBAC utilise dautre rgles, mais concernant les
permissions et les interdictions :
Les permissions :
org,
s, r, A, a, o, v, c :
Permission(org,r,a,v,c) Relevant_role(org, r)
Relevant_activity(org,a) Relevant_view(org, v)
error()
Les interdictions :
org,
s, r, A, a, o, v, c :
Interdiction(org,r,a,v,c) Relevant_role(org, r)
Relevant_activity(org,a) Relevant_view(org, v)
error()
3.7. MotOrbac
La complexit est au cur des systmes d'information (SI) d'aujourd'hui. Souvent on
constate que ces systmes grent des architectures htrognes : rseaux, systmes dexploitation,
bases de donnes, applications web, etc. Ce qui rend les tches des administrateurs des politiques
de scurit trs fastidieuses. En effet, ces politiques sont gnralement dfinies et ensuite gres
en manipulant des lignes de commandes ou en configurant artisanalement les lments en
relations avec la scurit du systme au risque et pril de ladministrateur qui les manipulent.
Beaucoup doutils dadministration existent et sont oprationnels, bien quils permettent
dallger remarquablement les tches ardues des administrateurs, ils sont ou bien de porte
restreinte (par exemple ils se limitent la scurit rseau) ou bien ils ncessitent une expertise
importante. Au titre de la prsente thse, on sintresse principalement la politique de scurit
SELinux qui est gnralement cre par la personnalisation d'un modle de politique appel
refpolicy21. Toutefois, la description et la vrification des configurations de cette politique de
scurit est difficile parce que, dans refpolicy, on trouve plus de 100.000 lignes de configurations,
des milliers d'lments tels que les permissions, les macros et les labels (les contextes de scurit
SELinux).
3.7.1. Historique et architecture de MotOrBAC
Cuppens et al. [12] ont prsent un prototype appel MotOrBAC (acronyme qui dsigne
Moteur OrBAC), qui a t dvelopp en langage Java pour administrer les politiques de scurit
bases sur lorganisation (OrBAC), dautres fonctionnalits telles que la simulation de la
politique de scurit, lanalyse de la cohrence de la politique et la spcification de la politique
dadministration sont galement fournies par ce prototype. Larchitecture de MotOrBAC est
prsente dans la Figure 32.
MotOrBAC a permis principalement dintgrer dans un unique modle de scurit
lexpression de toutes les exigences de scurit rseau, systme ou applicatives. En effet,
MotOrBAC est bas sur le modle OrBAC qui permet dexprimer une politique de scurit au
21
refpolicyest un modle de politique dvelopp et maintenupar la communautSELinux. Il est composde macros et deconfigurationspour les
applicationstypiques.
79
80
81
6. Barre d'tat en bas : la barre d'tat au bas de l'interface affiche diverses informations:
l'utilisateur AdOrBAC connect, le nombre de conflits abstraits et concrets, le nombre
d'interdictions concrets et abstraits, etc.
Le prototype MotOrBAC assure cinq fonctionnalits :
1) Saisie dune politique de scurit : Cette fonctionnalit permet ladministrateur de
la politique de scurit dun systme dinformation, de saisir via linterface
MotOrBAC les diffrentes entits abstraites dOrBAC en plus des contextes et des
rgles de la politique de scurit. En effet, il peut dfinir des organisations, avec
ventuellement des sous-organisations comme il peut visualiser une politique de
scurit relative une organisation en utilisant un menu droulant destin cet effet.
Ensuite il y a possibilit de dfinir des rles, des activits, des vues ainsi que leurs
sous-entits correspondantes (sous-rles, sous-activits et sous-vues). Il est noter que
le modle OrBAC inclut quatre vues prdfinies role, activity, view et context qui
permettent respectivement de grer les rles, activits, vues et contextes de chaque
organisation. La manipulation de ces entits conduit linsertion dans la politique de
scurit des faits rcapituls dans le tableau suivant :
Faits
sub_organization(org1,org2)
use(Org,Object,View)
Senior_role(Org, role1, role2)
Description
org1 est une sous-organisation de org2
Dans lorganisation Org, lobjet Object est utilis
dans la vue View
dans lorganisation Org, le role role1 est
hirarchiquement suprieur au rle role2.
Le contrle des dates : Ladministrateur peut utiliser l'onglet de simulation pour fixer la
date utilise par le gestionnaire du temps de la politique. Cette horloge est utilise par
certains types de contexte.
Longlet concrete security rules : la table liste les autorisations concrtes en vert, les
interdictions
concrtes
en
rouge
et
les
obligations
concrtes
en bleu. Chaque entre dans cette table prcise l'tat de la rgle, son type, le sujet, l'action
et l'objet. La colonne state affiche l'tat des rgles. Les autorisations et les interdictions
peuvent tre soit actives soit inactives, en fonction de ltat de contexte associ. Les
obligations peuvent tre dans quatre tats diffrents: active ou inactive comme les deux
autres types de rgles, et violated et fullfiled.
L'onglet context: prsente les listes de tous les dfinitions pour chaque contexte ainsi que
les tats correspondants.
Aprs avoir dfinies dans MotOrBAC les entits concrtes, on leur applique la politique
abstraite par drivation, pour cela, on introduit le prdicat is_permitted.
3) Vrification de la cohrence de la politique de scurit : MotOrBAC permet de
dtecter les conflits au niveau concret ou abstrait de la politique de scurit spcifie
par ladministrateur.
La prsence des conflits au niveau concret est due gnralement aux simulations des
politiques prsente prcdemment. MotOrBAC offre une fonction pour analyser ces conflits au
niveau organisationnel. Ensuite, on introduit le prdicat conflit pour les dtecter laide de la
rgle suivante :
Rgle
conflit
permission(Org1,Role1,Activity1,View1,Context1,Priority1),
prohibition(Org2,Role2,Activity2,View2,Context2,Priority2),
not (separated_role(Org1,Role1,Org2, Role2)),
not (separated_activity(Org1,Activity1,Org2,Activity2)),
not
(separated_view(Org1,View1,Org2, View2)),
not (separated_context(Org1,Context1,Org2,Context2)),
not (Priority1< Priority2),
not (Priority2< Priority1).
Signification
Un conflit est driv si
une permission et une interdiction
organisationnelles existent dans les
organisations Org1 et Org2
Et il nexiste pas de contraintes de
sparation entre les rles, activits, vues et
contextes
Et les priorits associes respectivement
la permission et linterdiction ne sont pas
comparables.
Lajout dune (ou plusieurs) contrainte(s) de sparation pour sassurer que les entits
abstraites ne peuvent plus rentrer en conflit. (Exemple : sparation des rles)
6) Gestion des privilges : Les affectations des privilges aux rles sont gres par la
vue pra qui est aussi une classe pourvue des attributs (des proprits) caractrisant les
diffrents paramtres dun privilge. Ces attributs sont dfinit comme suit :
type : il sagit du type du privilge ayant les trois valeurs possible : permission,
Prohibition, obligation.
authority : lorganisation dans laquelle le privilge est appliqu au rle.
(Exemple :authority(Obj, Auth)).
Privilege : lactivit qui pourra tre considre lorsque le privilge est utilis.
(Exemple : privilege(Obj, Activity)).
84
3.8. Conclusion
Nous avons prsent dans ce chapitre, le modle de contrle d'accs OrBAC, il est centr sur la
notion d'organisation qui donne un sens aux entits abstraites et aux relations qui existent entre
elles, la notion de contexte est lun des plus intressant apports dOrBAC car il permet dexiger
certaines conditions dapplication des rgles de scurit. Dans le modle OrBAC, la politique de
scurit peut tre exprime par des permissions, interdictions, obligations et recommandations.
Or nous pouvons rduire considrablement le nombre de rgles de la politique de scurit de
SELinux si on essaye dabord dadapter les entits SELinux aux entits OrBAC puis de les
abstraire, ces oprations ainsi que dautres agissements seront traits dans le chapitre 4 suivant.
85
Chapitre 4
Codage en modle OrBAC de la politique de scurit
par dfaut de SELinux.
4.1. Introduction
SELinux est l'une des solutions de scurit les plus utilise dans les systmes
d'exploitation Linux, il offre la possibilit d'utiliser diffrents modles de contrle d'accs.
Ce chapitre fournit un codage d'une politique de scurit SELinux par dfaut en utilisant le
modle de contrle d'accs bas sur l'organisation (OrBAC). Nous allons utiliser Fedora
14, comme un exemple de distribution Linux afin d'illustrer notre codage. Pour chaque
concept (rle, type, contexte, ..) utilis dans SELinux, nous fournissons son homologue
dans le modle OrBAC pour confirmer la puissance expressive de ce modle.
La solution de scurit SELinux a t incorpore dans plusieurs distributions Linux
comme RedHat, Fedora, Gentoo, et SUSE Linux. Elle fournit une couche supplmentaire
de scurit afin de protger et de contrler l'accs aux diffrents objets d'un systme
d'information.
Dans ce chapitre nous allons commencer par explorer lemplacement des fichiers
et rpertoires lis la politique de scurit installe et analyser leurs configurations.
Ensuite, nous tudions les contextes de scurit associs par dfaut aux utilisateurs et aux
fichiers du systme. Les paramtres de la politique de scurit par defaut de Fedora 14
sont aussi tudis pour avoir des statistiques concrtes sur leurs nombres.Nous montrons
ensuite que chaque concept dans la politique de scurit SELinux possde une contrepartie
naturelle dans le modle OrBAC ce qui confirme la puissance expressive du systme
OrBAC[46]. A la fin de ce chapitre nous prsentons un exemple de politique de rfrence
SELinux pour le dmon dhcpd [61] que nous coderons avec le modle OrBAC.
Comme nous lavons dtaill au le chapitre 1, Il existe diffrents modles de
contrle d'accs qui ont t proposes dans la littrature:
86
diffrentes modalits dontiques22 tels que les permissions, les obligations et les
interdictions.
Il prend galement en charge une infrence des rgles qui permettent de driver des
permissions (interdictions, obligations) concrtes sur des utilisateurs (objets, actions)
spcifiques.
Ce chapitre montre aussi comment les politiques de scurit (installe par dfaut)
utilises par SELinux peuvent tre codes par le modle OrBAC. Pour illustrer notre
travail, nous allons utiliser Fedora 14[64] en tant quun exemple de distribution Linux. Il
est bien entendu facile dadapter notre travail pour les autres distributions. Fedora 14
nest donc quun exemple pour montrer les principales tapes de notre encodage.
Tout dabord, ds linstallation de la distribution Fedora 14, celle-ci active par
dfaut SELinux et fournie une politique toute faite pour les cas courants.
Nous avons vu dans le chapitre 2, lutilisation de SELinux des deux
paramtres :SELINUX et SELINUXTYPE, en particulier sous Fedora 14 ils sont stocks
dans le fichier /etc/selinux/config et possdent des valeurs par dfaut telles
que :SELINUX=enforcing et SELINUXTYPE=targeted.
La premire section de ce chapitre explore et analyse les configurations des fichiers
et des rpertoires qui hbergent la politique de scurit SELinux de la distribution
Fedora_14, la deuxime section prsente les paramtres de la politique de scurit
SELinux par dfaut de Fedora 14, la troisime section montre que chaque concept dans la
politique de scurit SELinux possde son correspondant dans le modle OrBAC. Enfin,
dans la dernire section de ce chapitre nous prsentons un exemple de codage de la
politique SELinux.
4.2. Fichiers et rpertoires lis la politique de scurit dfaut
Sous Fedora14, l'emplacement de la politique de scurit (politique source et
politique binaire) est dans le dossier: /etc/selinux qui contient le sous-rpertoire
targeted/ racine de la politique cible.
4.2.1. Le fichier de configuration de la politique de scurit par dfaut
Le fichier de configuration par dfaut de SELinux est/etc/selinux/config,
il est lu par libselinux pour interprter comment le systme est configur. Il contient
deux variables d'environnement: SELINUX et SELINUXTYPEdfinies (par dfaut)
respectivement aux valeurs enforcing et targeted.
SELINUX=Enforcing cette valeur indique au systme de fonctionner avec
SELinux en contrlant tous les accs au systme et de stopper tous ceux qui sont
refuss. Dans ce mode le noyau bloque tous les accs sauf s'ils sont explicitement
autoriss. Tous les accs refuss sont rapports dans le systme de journalisation
22
La logique dontique est l'origine des systmes normatifs, qui permettent de modliser les obligations, les violations et les sanctions dans une
organisation, et notamment dans un systme multi-agents.
87
AVC (Access Vector Cache), moins quil y existe un vecteur dontaudit, crit
explicitement qui dit que le noyau ne doit pas journaliser le message.
Les deux exemples suivants montrent la faon dont les contextes de scurit sont
affects aux rpertoires de travail home-directory (le rpertoire par dfaut associ un
utilisateur quand il se connecte dans le systme).
SELinux attribue diffrents contextes aux fichiers/rpertoires en fonction de leurs
importances.
Ces
contextes
sont
stocks
dans
le
fichier
/etc/selinux/targeted/modules/actifs/file_contexts.homedirs
sous forme dentres, ce fichier est spcialement utilis pour attribuer les contextes par
dfaut aux rpertoires de travail des utilisateurs.
Exemple 1 :
/home/[^/]*
-d unconfined_u:object_r:user_home_dir_t:s0
88
de travail des
unconfined_u:object_r:user_home_dir_t:s0.
Exemple 2 :
/home
system_u:object_r:home_root_t:s0
Le rpertoire /etc/selinux/targeted/modules/active/contient un
fichier nomm file_contexts qui est utilis pour initialiser le contexte de scurit
pour des fichiers et des rpertoires. Les exemples suivants illustrent trois diffrents
contextes associs aux fichiers :
Exemple 3 :
/srv/.*
system_u:object_r:var_t:s0
Cet exemple signifie que tous les objets sous le rpertoire /srv qui ont un nom
qui commence par le caractre. (point) et se termine par nimporte quel
caractre
*
(toile),
auront
le
contexte
de
scurit
system_u:object_r:var_t:s0.
Exemple 4 :
/dev/.*tty[^/]*
-c
system_u:object_r:tty_device_t:s0
Exemple 5 :
/dev/.mdadm\.map -- system_u:object_r:mdadm_var_run_t:s0
Ce dernier exemple signifie que seuls les fichiers nomms.map auront le contexte
de scurit system_u:object_r:tty_device_t:s0.
89
system_u:object_r:home_root_t:s0
allow: par dfaut, Fedora 14 utilise 268004 rgles allow. Un exemple de rgle
allow est :
allow unconfined_t cert_t : dir { ioctl read getattr
lock search open };
Cette rgle signifie que si un utilisateur possde un contexte avec le domaine
unconfined_t alors celui-ci est autoris excuter les actions suivantes:
ioctl, read, getattr, lock, search et open, pour tous les rpertoires qui
sont confins dans le type cert_t. les rgles allow sont tout simplement des
rgles de permission.
90
Permission: Chaque classe est associe une liste d'actions autorises. Par
exemple, la classe file dispose d'un ensemble de 21 actions autorises qui sont
{append, entrypoint, execute, getattr, link, mounton,
quotaon, relabelfrom, rename, swapon, write, create,
execmod, execute_no_trans, ioctl, lock, open, read,
relabelto, setattr, unlink}.
Notez que ces actions sont des actions lmentaires. Ainsi, les permissions de
SELinux sont dfinies un bas niveau sur les actions lmentaires, et non sur
toutes les actions. Par exemple, dans SELinux une rgle de permission ne
s'applique pas sur l'action de haut niveau comme par exemple la commande ls ou
grep, mais sur la liste des actions de bas niveau produites par ces commandes.
4.4. Encodage en modle OrBAC de la politique de scurit dfaut SELinux
Cette section montre comment une politique de scurit SELinux (par dfaut)peut
tre code avec le modle OrBAC. Cela signifie que nous avons besoin de montrer
comment chaque concept introduit dans SELinux peut tre traduit dans le systme
OrBAC. Autrement dit, on a besoin de montrer comment remplir chaque table (Cf. Figure
24) du modle OrBAC partir de la politique SELinux.
Deux concepts du modle OrBAC ne sont pas directement utiliss dans SELinux.
En effet :
Le concept de contexte du modle OrBAC n'est pas utilis dans SELinux (le
contexte SELinux na absolument rien voir avec celui utilis dans OrBAC). Il
aura la valeur par dfaut True ce qui signifie qu'il n'ya pas de condition
supplmentaire pour l'application des rgles de scurit.
Le concept d'organisation du modle OrBAC est suppos avoir une valeur fixe,
c'est--dire que nous supposons ici que nous n'avons qu'une seule organisation que
nous appellerons simplement SELINUX_DISTRIBUTION (dans notre cas, il sagit
de la distribution Fedora 14).
Le contenu de chaque concept (ou table) dans OrBAC, dfini et obtenu partir de
SELinux est dcrit comme suit :
4.4.1. Les entits de la relation Employ
4.4.1.1.
Sujet
Pour chaque sujet, nous allons dfinir un attribut qui reprsentera son identit
SELinux : ID_SELinux(identit de l'utilisateur SELinux).
Par exemple, le sujet root possde ID_SELinux(root) gal
unconfined_u.
4.4.1.2.
Rle
Employ
La relation Employ relie des sujets des rles, autrement dit, elle autorise un
sujet jouer un rle.
Lorganisation SELINUX_DISTRIBUTION attribue un rle OrBAC un utilisateur
u.
Si et seulement si
Il existe un rle SELinux attribu un utilisateur u et tel que ce rle (de SELinux)
est confin dans le domaine type_t.
Plus formellement:
Employ(SELINUX_DISTRIBUTION, u, r) est valide
Default_role_Selinux(ID_SELinux (u)) = role_SELinux
et
Type (role_SELinux) =r est valide dans SELinux
92
Action
Les actions dans OrBAC sont ceux utilises dans les politiques de scurit
SELinux telle que : getattr, execute, and open.
Il est rappeler quune rgle allowest de la forme :
allow types_source types_cible:classes{list_actions};
Ainsi, les actions dans le systme OrBAC sont l'union de toutes les listes des
actions qui sont fournies dans les rgles de SELinux.
4.4.2.2.
Activit
Compte tenu du fait que le nombre d'actions n'est pas lev, nous supposons
simplement que chaque action reprsente une activit : activit = action.
4.4.2.3.
Consider
Objets
Un objet est une entit passive qui peut tre un fichier ou un rpertoire (il peut
tre mme une entit active comme un processus) du systme. Chaque objet possde
deux attributs: classe d'objet et type d'objet.
Par exemple, le rpertoire racine("/") possde la classe rpertoire : dir et il
est confin dans le type :root_t.
4.4.3.2.
Vues
93
Distributions
Nombre de classes
Nombre de types
Nombre de vues
Fedora 14
77
3177
244629
CentOS 5.6
61
1868
113948
RHEL 6
77
3073
236621
4.4.3.3.
Use
Lentit Use est une relation ternaire qui relie les objets leur vue, et puisque
chaque vue peut tre reprsente sous forme dun couple (class, type), alors la
relation Use (org, o, V) est dfinie comme suit:
Use (SELINUX_DISTRIBUTION, o, V)
Si et seulement si
class (o) =class
et
type (o) =type
O
Exemple :
Use (SELINUX_DISTRIBUTION, /,
Si et seulement si
classe ("/") = dir
et
type ("/") = root_t.
O:
-
Activity{list of actions};
95
Exemple:
Permission (SELINUX_DISTRIBUTION, foo_t, read, View, T) est valide
Si et seulement si
Il existe une rgle allow telle que :
allow foo_t root_t : dir { read } ;
et
readperms(class(/)) = perms(dir))
= {add_name, create, getattr, link, mounton,
quotaon, relabelfrom, remove_name, reparent,
search,
swapon,
write,
append,
execute,
ioctl, lock, open, read, relabelto, rename,
rmdir, setattr, unlink}.
(Car root_t estle type du repertoire /)
et
View= (dir, root_t)=( class(/),type(/)).
Alors
Root possde la permission d'effectuer l'action write sur le fichier /root/fich1.
Plus formellement:
Si
Permission(SELINUX_DISTRIBUTION, foo_t, {write}, View, T) et
Employ(SELINUX_DISTRIBUTION, root, foot_t) et
Use(SELINUX_DISTRIBUTION, /root/fich1, View) et
Consider(SELINUX_DISTRIBUTION, write, {write}) et
Define(SELINUX_DISTRIBUTION, root, /root/fich1, write, T)
Alors
Is_permitted (root, /root/fich1, write)
4.4.4)que:
-
View= (class(/root/fich1),type(/root/fich1))
admin_home_t).
(file,
La troisime relation signifie que (comme nous l'avons dfinie dans 4.4.3.2), nous
La quatrime relation suppose que write est en mme temps une action et une
activit.
La cinquime relation signifie que, dans SELINUX_DISTRIBUTION, le contexte Test
sein de laquelle sont dfinis les concepts principaux de notre politique. Nous supposerons
donc : SELINUX_DISTRIBUTION=RHL4.
Emplacements des fichiers de politique de dhcpd :Les deux fichiers ci-aprs constituent
la politique de scurit du dmon dhcpd.
/etc/selinux/domains/program/dhcpd.te : Dans ce fichier, sont
dfinies les rgles de scurit pour le domaine dhcpd_t du dmon dhcpd.
/etc/selinux/file_contexts/program/dhcpd.fc :
Ce fichier
dfinit le contexte de scurit pour les fichiers associs avec le dmon dhcpd
serveur, en attribuant chacun dentre eux le type dhcp_<*>_t.
Un extrait de ce fichier se prsente comme suit :
# dhcpd
/etc/dhcpd.conf -- system_u:object_r:dhcp_etc_t
/etc/dhcp3(/.*)? system_u:object_r:dhcp_etc_t
/usr/sbin/dhcpd.* -- system_u:object_r:dhcpd_exec_t
/var/lib/dhcp(3)?/dhcpd\.leases.* -- \
V= (file, dhcp_etc_t));
Cette rgle autorise tous les processus confins dans le domaine dhcpd_t( en particulier
dhcpd) denvoyer et recevoir sur les sockets TCP et UDP, toutes les interfaces rseau
(netif ) ayant le type netif_type.
En OrBAC cette rgle se traduit par les deux relations suivantes:
permission (RHL4, dhcpd_t, tcp_send, V= (netif, netif_type),
Default);
et
permission
Default);
(RHL4,
dhcpd_t,
udp_send,
V=(netif,
netif_type),
En effet :
Default est la valeur par dfaut du contexte OrBAC, Cest la valeur pour
laquelle on ne prend pas en considration les conditions (spatiales, temporelles,
etc.) dexcution de la permission.
99
Le fait que dhcpd joue un rle qui soit confin dans dhcpd_t, se traduit en
OrBAC par:
Le sujet dhcpd possde ID_SELinux(dhcpd ) gal system _u ;
Default_role_Selinux(ID_SELinux (dhcpd )) =
Default_role_Selinux(system _u)=object_r;
tcp_send,
V=
(netif,
est la suivante :
Si dans le contexte T (=Default) , l'organisationRHL4 accorde au rle
dhcpd _t
la permission d'excuter lactivit {tcp_send } sur la
vueV=(netif, netif_type) ,
Si l'organisationRHL4 emploiele sujet dhcpd dans le rle dhcpd _t,
Si l'organisationRHL4 utilise l'objet eth0 dans la vue V=(netif,
netif_type) ,
Si l'organisationRHL4 considre que laction tcp_send relve de lactivit
{tcp_send } et Si dansl'organisationRHL4 , le contexte T(=Default) est
vrai entre : dhcpd , eth0 et tcp_send
Alors
dhcpd
eth0 .
100
Plus formellement:
Si
permission(RHL4, dhcpd_t, tcp_send, V=(netif, netif_type),
Default)et
Employ (RHL4, dhcpd,dhcpd_t) et
Utilise(RHL4, eth0, V=(netif, netif_type)) et
Consider(RHL4, tcp_send,{tcp_send}) et
Define(RHL4, dhcpd, eth0, tcp_send, Default)
Alors
Is_permitted (dhcpd, tcp_send, tcp_send).
4.6. Conclusion
Nous avons vu dans ce chapitre quil est possible de fournir un codage d'une
politique de scurit SELinux par dfaut en utilisant le modle OrBAC. Pour cela nous
avons utilis Fedora 14, comme un exemple de distribution Linux afin d'illustrer notre
codage. Nous avons utilis galement la distribution RHL4 pour coder quelques rgles de
la politique SElinux du dmon dhcpd avec le modle OrBAC. Le chapitre 5 va se pencher
sur le codage en OrBAC des rgles de transition. Ce qui justifie lexpressivit du modle
OrBAC et la capacit dutilisation dautres modles daccs pour SELinux.
101
Chapitre 5
Codage des rgles de transition SELinuxen modle
OrBAC
5.1. Introduction
En SELinux, plusieurs processus sexcutent dans leurs domaines dorigine,
cependant dautres processus spciaux ne peuvent tre excuts que dans des domaines
particulier, par consquent un changement de domaine est alors ncessaire.
Ce chapitre montre comment lon peut coder les rgles de transition en OrBAC. Il
complte le Chapitre 4 qui sest concentr seulement sur le codage des rgles daccs.
La premire sous-section de la section principale du prsent chapitre traite le
codage en OrBAC de lattribution de type par dfaut un objet nouvellement cr, la
deuximesous-section montre comment lon peut coder la spcification dun domaine par
dfaut pour un processus et ce dans les deux cas de prsence ou dabsence dune rgle de
la politique de scurit qui force lattribution de domaine, lexemple de la procdure de
changement de mot de passe est invoque au niveau de la dernire sous-section afin
dillustrer le cas de transition de domaine partir dune rgle de la politique de scurit.
5.2. Transition de types en SELinux
Une nouvelle rgle fut introduite pour supporter les transitions qui se produisent
par dfaut. Comme elle est utilise dans le cas du programme des mots de passe, cette
rgle sappelle la rgle de transition de type type_transition. Elle spcifie les
transitions par dfaut qui devraient se produire si aucune transition explicite nest
prsente. La forme dune rgle type_transition est comme suit :
type_transition source_t destination_t : classes defaut_t
O :
classes : elle peut tre ou bien process pour designer la transition de type
processus ou bien file (ou autre classe de fichier) pour designer la transition de
cration de fichier.
2ime Cas : Si aucune rgle explicite qui force ltiquetage du type par dfaut nest
prsente dans la politique, alors lors de la cration dun objet o, celui-ci se voit, par
dfaut, attribuer le type de son rpertoire parent. Il y a donc hritage de type.(A)
La cration dun objet o nest autre que la cration dune instance de la classe de
lobjet en question :
Par exemple pour crer un fichier vide sous Linux, on utilise la commande touch:
[khal@A410E15 ~]$ touch fich1
Comme nous lavons invoqu dans les articles [46] et [65], la vue correspondante a
lobjet nouvellement cre est :
V= (class(o), type(o)) = (file, defaut_t). (1er Cas ci-dessus)
V=(class(o), type(o)) = (file, Type(parent_dir(o)))
=(file, rep_t). (2ime Cas ci-dessus)
103
{create
ioctl
append
write
...};
ou
cont= Trans_rule_context
- permission
(SELINUX_DISTRIBUTION,
defaut_t), cont); avec :
Activity,
(file,
- permission
(SELINUX_DISTRIBUTION,
rep_t), cont); avec :
shell_t,
shell_t,
Activity,
(file,
En labsence dune rgle explicite qui attribue des domaines par dfaut (voir utilisation de
la rgle type_transition), un processus tourne toujours dans le domaine du
processus qui la lanc, cest son processus parent :
Si P un processus tournant dans le domaine Dp, lance un programme Prgde
typePrg_exec_t (on suppose quil existe une rgle qui autorise lexcution de Prg par
P), alors le processus P (fils du processus P) tourne dans le domaine Dpgale Dp. (2)
Cela signifie que :
Si
PPID (p) = PID (p)
(P tant le processus enfant de P issus de lexcution du programme Prg, que nous
pouvons noter : P(Prg)=P, PID et PPID tant respectivement
le Process
Identification et Parent Process Identification)
Il existe une rgle TE :
allow Dp Prg_exec_t : file {...execute};
Alors
Dp = Dp
5.2.2.2.
a.
NO_TRANS_RULE_CONTEXT
En SELinux
travers des rgles SELinux, il peut tre permis un domaine dun processus
Linux de transitionner, durant l'excution d'un programme, vers un nouveau domaine et
la sortie du programme le domaine initial est alors restaur. Gnralement, le nouveau
domaine est ncessaire pour effectuer certaines fonctionnalits dites de confiance, telles
que par exemple, la gestion des fichiers des mots de passe des utilisateurs Linux.
Une application de la transition de domaine dun processus est dmontre par
l'exemple de la gestion des mots de passe (Cf. 2.4.5.4 et 2.4.5.3) :
[khal@A410E15 ~]$ id
uid=518(khal)gid=519(khal)
groupes=519(khal)
contexte=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Il sagit du shell, de lutilisateur khal, qui tourne dans le domaine des utilisateurs
ordinaires unconfined_t.
jour
russie
de
tous
les
106
jetons
d'authentification.
Une fois la commande passwd est lance par le shell de lutilisateur khal, la
rgle:
allow unconfined_t passwd_exec_t : file {getattr execute} (1);
khal
24075
La rgle :
allow passwd_t passwd_exec_t : file entrypoint (2);
signifie que les fichiers excutables de type passwd_exec_t servent comme point
dentre pour le type passwd_t.
La permission transition qui est ncessaire pour permettre le changement du
type d'un processus est assure par la rgle :
allow user_t passwd_t : process transition (3);
(4);
Veut dire que seuls les processus tournant dans le domaine passwd_t puissent excuter
les oprations : iocl, read, write, etc. sur le fichier ayant le type
shadow_t.
Enfin la rgle suivante :
type_transitionunconfined_t passwd_exec_t : process
passwd_t;
Dans cet exemple, la rgle type_transition indique que, par dfaut et lors dun
appel systme execve(), si le processus appelant est de type unconfined_t et le
type du fichier excutable est passwd_exec_t, une transition de domaine vers un
nouveau domaine passwd_t se produirait.
b.
En OrBAC
Le fait quun processus P1(par exemple le bash dun utilisateur) tourne dans le
domaine unconfined_t, il jouera en consquence le rle unconfined_t. car
108
/usr/bin/passwd,(file,
Cela signifie que si un sujet s veut transiter d'un domaine Ds= unconfined_t
un autre domaine Ds= passwd_t, il doit excuter un programme (Entry Point)
ayant le type passwd_exec_t, soit le programme (ou la commande)
/usr/bin/passwd note :
EP (Ds, Ds). Nous avons donc :
passwd_exec_t = EP(unconfined_t, passwd_t)
Il est remarquer que la rgle allow concernant le point dentre ne suffit pas
pour assurer la transition partir du domaine unconfined_t un domaine
passwd_t. Pour cela, il est donc indispensable quune autre rgle explicite de
transition figure dans la politique, cette rgle scrit comme suit :
allow unconfined_t passwd_t : process transition;
La transition entre deux domaines SELinux implique une transition entre deux rles
OrBAC, dans [66]la rgle exprimant la transition entre les domaines et mettant en
place la notion de point d'entre, possde la forme suivante :
SR (permission, org, D1, Enter, D2, through(EP (D1, D2))).
109
d. through(EP (D1, D2))est un contexte qui peut tre utilis pour dfinir
un point dentre (Entry point) que nous avons reprsent par :EP (D1, D2),
par consquent la prsente rgle nest valide que si ce contexte lest aussi.
Dans notre cas, la rgle ci-dessus scrit :
SR (permission, SELINUX_DISTRIBUTION,
passwd_t, through(passwd_exec_t)).
unconfined_t,
Enter,
Remarque : cette rgle rassemble les deux rgles SELinux : celle concernant le
point dentre et celle autorisant la transition.
user_t,
execute,
getattr,
(file,
(file,
Tout en sachant que le contexte Cont puisse avoir une valeur par dfaut (Exemple :
Cont = TRUE) pour signifier que ces permissions sont toujours valides sans
restrictions ni conditions supplmentaires.
Cont peut tre enrichi avec d'autres contextes OrBAC (temporels, spatiales)
utiliss en jonction avec le contexte des points dentre, afin de restreindre ou
conditionner lapplication de la rgle qui lutilise.
Gnralement nous pouvons avoir :
Cont=
DEFAULT
through(EP(D1,D2)
ContTemp
ContSpacial
Finalement la rgle :
allow passwd_t shadow_t : file {iocl read write
getattr setattr lock relabelfrom relabelto append
link rename};
create
unlink
passwd_t,
permsi,
Avec:
permsi
{iocl, read, write, create, getattr,
setattr,
lock,
relabelfrom,
relabelto,
append,
unlink, link, rename}, nous avons autant de prdicats permissions
que depermsi. dans la Figure 35 nous avons reprsent seulement permsi=
write pour allger la figure.
(file, shadow_t) : dsigne la vue des fichiers des mots de passe.
Cont : dsigne le contexte qui peut tre paramtr selon les conditions
dexcution du prdicat.
5.3. Conclusion
Dans ce chapitre nous avons montr comment coder les rgles de transition en
OrBAC. Pour cela nous avons commenc par coder les cas de spcification des types et
domaines par dfaut, ensuite nous avons trait le cas de prsence ou dabsence dune
rgle de transition qui force lattribution de type ou de domaine. Le concept du point
dentre (Entry point) connu dans le modle DTE a t introduit dans le modle OrBAC
pour pouvoir correspondre toutes les rgles indispensables la transition de SELinux
celles nouvellement conues dans OrBAC.
Le fait de pouvoir coder en OrBAC, la fois les rgles daccs et les rgles de
transitions de la politique de scurit SELinux, confirme lexpressivit du modle OrBAC.
Le chapitre 6 montre que le modle OrBAC est aussi extensible et volutif car une
nouvelle entit appele priorit a t introduite pour confirmer cette volutivit.
111
Chapitre 6
Gestion possibiliste des priorits dans les modles de
contrle d'accs.
6.1. Introduction
Les modles de contrle d'accs sont des outils importants pour la modlisation des
politiques de scurit. Ils permettent de limiter l'accs des donnes sensibles aux seuls
utilisateurs autoriss. Ce chapitre se concentre sur le modle OrBAC (organisation-based
access control) qui reprsente un cadre gnrique permettant de reprsenter de manire
compacte les rgles gnrales des politiques de scurit. Plus prcisment, nous
proposons d'ajouter au modle OrBAC une nouvelle entit, appele priorit permettant de
coder les diffrentes formes d'incertitude qui peuvent tre rencontres dans les rgles de
scurit. Les entits (priorits) introduites seront modlises en thorie des possibilits qui
reprsente un cadre naturel pour la manipulation et le traitement des informations
incertaines. Nous proposons diffrentes rgles qui permettent de driver des permissions
concrtes partir des permissions abstraites priorises.
Les diffrents modles de contrle d'accs proposs dans la littrature: HRU
(Harrison, Ruzzo and Ullmann) [15], DAC (Discretionary Access Control Model) [4],
TBAC (Team-based Access Control Model) [67], RBAC (Role-Based Access
Control)[5][6][7], OrBAC (Organization Based Access Control) [10], etc. prsentent des
solutions adaptes pour protger les donnes sensibles des utilisateurs non autoriss et ce
en limitant l'accs aux donnes sur la base des politiques de scurit.
Ce chapitre propose d'intgrer une composante d'incertitude dans le modle de
contrle d'accs. Dans la pratique, l'attribution d'une permission, pour atteindre une
certaine action dans un systme d'information, n'est pas toujours complte. En plus de
contextes, une permission peut tre imprgne de l'incertitude due par exemple la
prsence d'exceptions ou tout simplement en raison de la fiabilit de la source. Par
exemple, on peut fournir une certaine rgle de droit qui peut justifier une permission (ou
l'interdiction). Cependant, il peut arriver que certaines doutes/incertitudes sur une telle
rgle (certaine) de droit peuvent exister. Par exemple au sein dune ancienne rgle de
droit il peut tre propos dautres rgles rcentes et prioritaires avec une avec une
recommandation contradictoires.
Au sein du prsent chapitre, Les priorits et les incertitudes sont reprsentes dans
le cadre de la thorie des possibilits.
La thorie des possibilits et de la logique possibilit [7][10][11]permettent de
traiter des informations incertaines d'une manire ordinale, explicitement, seules les
priorits entre les informations sont importantes. La logique possibiliste est une simple
extension de la logique propositionnelle, en attribuant un poids chaque formule. Ce
poids reprsente l'incertitude/priorit de la formule. Et cest partir de la valeur de ce
poids que la formule devienne propritaire.
112
[0, 1]
()
1 si(i , ai) , i
1 max ai : (i , ai) et isinon
114
public.
Supposons que les rgles de classement sont :
les dossiers sont classs en change avec partenaire sur ordre du conseil de
lentreprise
Un dossier est class public ds quil devient caduc (par exemple, il existe un autre
produit plus efficace sur le march, ou encore le dossier a plus de vingt ans, etc.).
Imaginons que le dossier D concerne un nouveau produit. Ce fait est cohrent avec
lensemble des rgles. Supposons maintenant que lagent reoit une information
prioritaire o il est demand de classer D au niveau public. Il est clair que cette nouvelle
information contredit la base, et quil nexiste pas une faon unique de modifier la base et
de restaurer sa cohrence. Dans notre exemple, deux possibilits sont offertes :
Remettre en cause que D porte sur un nouveau produit, ou
Affaiblir la rgle concernant les nouveaux produits.
115
NOD
NOD
NOD
NOD
NOD
NOD
NOD
NOD
Autres
interprtations
()
1
1
1
1
0.7
0.4
0.1
0.1
0
Exemple 2 :
Considrons la base possibiliste suivante : = ( (r (p q),0.3) ,(r p, 0.9) ,(p,
0.1)), avec r, p et q des symboles propositionnels.
Les interprtations possibilistes (i)0i7 formant lensemble sont dfinies
comme suit :
i
0=
r p q
1= r p q
2= r p q
3= r p q
4= r p q
5= r p q
6= r p q
7=r p q
(i)
0.1
0.1
0.1
0.1
0.1
0.7
0.1
1
de .
Quand est cohrente, on pose Inc() = 0. Le degr dincohrence Inc() est le degr
maximal tel que lensemble de formules ayant un poids suprieur Inc() est cohrent.
116
La a-coupe stricte est une notion importante, jouant un rle central dans le
processus dinfrence. Le concept dinfrence est dfini en logique possibiliste de la
faon suivante :
Dfinition :
Dfinition 3 :Soit ( , a) une croyance dans . Alors, ( , a) est dite sous-somme par si
( ( , a))a .
Cest--dire quune formule ( , a) est sous-somme (ou redondante) si elle est
infre par les autres formules ayant un niveau de certitude suprieure ou gal a. On peut
montrer que si ( , a) est une croyance sous-somme de , alors et = ( , a) sont
quivalentes, c'est--dire =
117
118
120
Dans OrBAC, la relation Est_permis (s,, o, p) signifie que le sujet s est autoris
effectuer une action sur l'objet o avec un degr de certitude p. Les relations Est_Interdit
et Est_oblig sont dfinies de la mme manire. Ces relations sont drives logiquement
des permissions (respectivement Interdictions et obligations) accordes au rle de la
faon suivante:
(Pour chaque contextec)
s o r av
fait partie de lactivit a et si, au sein de l'organisation org, le contexte c est vraie entre s,
, et o, alors s est permis de raliser laction sur lobjet o avec lincertitude f(p1, p2, p3,
p4, p5).
De mme pour la relation Interdiction.
La question est maintenant de savoir comment dfinir f (p1, p2, p3, p4, p5)?
Diffrentes stratgies peuvent tre dfinies.
6.4.1. Mode de combinaison pessimiste:
L'ide dans le mode de combinaison pessimiste consiste dfinir le degr
d'incertitude associ une permission concrte comme tant le minimum des degrs
dincertitude des diffrents lments permettant de driver ladite permission concrtes,
savoir:
f (p1, p2, p3, p4, p5) min (p1, p2, p3, p4, p5)
Il s'agit d'une prcaution et par la suite dun moyen sr pour accorder des
permissions concrtes. Un des avantages de ce mode de combinaison, c'est que l'on peut
rutiliser directement la machine de logique possibiliste introduite 6.2 (La logique
possibiliste ci-dessus) l'article 2. L'ide est trs simple. Tout d'abord, les entits (sujets,
objets, vues, des rles, ...) sont reprsentes par des prdicats unaires du premier ordre
alors que les relations (Emploi, Utilise, permission, etc.) sont reprsentes par des
prdicats n-aires du premier ordre, en fonction du nombre darguments des relations. Puis,
nous construisons une connaissance possibiliste o le premier prdicat unaire prend le
degr 1 (il n'y a aucune incertitude), tandis que les prdicats n-aire de la forme Q (x1, ...,
xn, pi) sont transforms en (Q (x1, ..., xn), pi) o pi est le degr d'incertitude.
6.4.2. Mode de combinaison optimiste:
L'ide dans ce mode de combinaison est de dfinir le degr de certitude associ aux
permissions concrtes et ce en choisissant le maximum des degrs dincertitude des
diffrents lments permettant de driver ladite permission concrtes, savoir:
f (p1, p2, p3, p4, p5) max (p1, p2, p3, p4, p5)
p1 p2 p3p4 p5
En considrant que le type SELinux pwriter_t dsigne le rle OrBAC que joue le
sujet pwriter dans lorganisation SELINUX_DISTRIBUTION(=RHL4) . Laffectation du
sujet pwriter au rle OrBAC pwriter_t, peut tre imprgne de l'incertitude due au
moins lune des causes prcites. Cest--dire que lorganisation RHL4 emploie le
sujet pwriter dans le rle pwriter_t avec la priorit p empl :
Emploi(RHL4, pwriter, pwriter_t, pempl);
Notons dabord que V=(file, fich_t) dsigne la vue OrBac, dans laquelle
lorganisation RHL4 utilise lobjet fich.
Des causes comme celles prcites concernant laffectation des sujets aux rles,
peuvent aussi rendre cette utilisation incertaine. En effet, la vue V est compose de
23
Setfiles est un programme principalement utilis pour initialiser la base de donnes de contexte de scurit sur un
ou plusieurs systmes de fichiers.
123
llment fich_t qui suit les mmes procdures de r-tiquetage comme celle des
domaines.
Notons putil l'incertitude associe visualiser l'objet fich dans la vue V=(file,
fich_t) . Nous avons la relation suivante :
Utilise (RHL4, fich, V=( file, fich_t), putil)
On insert galement la relation dfinit un degr dincertitude pcont tel que dans
lorganisationRHL4 , le contexte Cont_taille est vrai entre le sujet pwriter ,
l'objet fich et l'action write :
dfinit (RHL4, pwriter, write, fich, Cont_taille, pcont)
Cont_taille, pinte)
Et
obligation(RHL4, pwriter_t,{write},V=(file, fich_t),
Cont_taille, pobli)
126
Chapitre 7
Implmentation
7.1. Introduction
Ce chapitre prsente l'implmentation du codage de la politique SELinux en
Modle OrBAC, notamment en ce qui concerne les dcisions daccs.La gestion des
incertitudes est les prioritssont illustres et trait traversle dernier exemple du chapitre
prcdant.
Limplmentation de lexemple sus-indiqu, ncessite dans un premier temps,
lajout du sujet pwriter et de lobjet fich la base de donnes que nous avons cre
au pralable afin de la connecter notre application. Ensuite, nous saisissons les contextes
de scurit SELinux : (pwriter_u, pwriter_r, pwriter_t) et (fich_u,
fich_r, fich_t).
Lapplication prvoit la liaison des sujets (ou objets) aux identifiants SELinux, des
identifiants SELinux aux rles et des rles aux types/domaines.Une fois cette tape
termine, nous disposons donc de tous les lments pour remplir, travers lapplicatif, les
tables du modle OrBAC par les entits SELinux correspondantes.
Nous avons paramtr notre programme pour quil supporte par dfaut
lorganisation : CENTOS et le contexte (OrBAC) : DEFAULT.
Pour chaque relation de notre exemple, lapplication lui attribue arbitrairement un
nombre (lment de lintervalle] 0, 1]) qui reprsente une simulation de la priorit qui
pondre la relation en question.
La relation concrteIs_permittedrsultantepossde une priorit calcule en
fonction du mode de combinaison utilis : optimiste, pessimiste ou avanc.
La premire partie de ce chapitre prsente sous un format graphique le Modle
Conceptuel de Donnes (MCD) des entits utilises par SELinux, puis le Modle
Physique de Donnes (MPD) correspondant. Il sagit dune tape prliminaire pour
reprsenter le MCD et le MPD du modle OrBAC lesquels sont prsents la deuxime
partie de ce chapitre. Pour cela nous avons utilis PowerAMC, un logiciel de conception
des modles, sont choix est motiv par le fait quil reste un des seuls logiciels qui permet
de travailler avec la mthode MERISE. Ainsi il est facile de gnrer le script SQL de
cration de la base de donnes, selon le SGBD (Systme de Gestion de Bases de
Donnes) voulue.
Notre application est construite laide de lenvironnement de dveloppement
Borland Delphi qui est un logiciel de dveloppement rapide RAD (Rapid Application
Development). Il permet de raliser rapidement et simplement des applications Windows,
127
avec un minimum de ligne de code. Sa version 7 que nous avons choisiefournit beaucoup
de fonctionnalits ncessaires pour le dveloppent dapplication.
Nous avons encore choisi le SGBDR natif de Delphi qui est Paradox (version 7)
pour crer notre base de donnes. Les tables sont cres manuellement car le logiciel
PowerAMC ne permet pas de gnrer, partir du modle MPD, le script SQL de cration
dune base de donnes de type paradox.
Une base de donnes de type MySQL par exemple peut tre cre facilement
partir du script SQL gnr par le logiciel PowerAMC, mais il reste non vident de
russir la connecter lenvironnement Delphi malgr lutilisation de lODBC (Open
Database Connectivity) sous windows_7.
7.2. Le MCD des lments SELinux
Les lments du systme (Linux) entrant en jeux pour la dcision du contrle daccs
SELinux sont :
Liste des entits :
Objet_Linux(Id_Objet, Objet)
Rle_SELinux(Id_role, role)
Sujet_Linux(Id_Sujet, Sujet)
Type_SELinux(Id_type, type)
User_SELinux(Id_SELinux, User_SELinux)
joue
lie
Est li
lie le
1,n
1,n
0,n
Sujet_Linux
Id_Sujet_Linux <pi> Texte (8) <O>
Sujet_Linux
Texte (16) <O>
pk_suobjet <pi>
...
User_SELinux
Rle_SELinux
Identifiant_2 <pi>
...
Identifiant_1 <pi>
...
1,n
Objet_Linux
1,n
appartient
est proprietarie de
est la proprit de
confine
Identifiant_1 <pi>
...
confine
0,n
1,1
est de classe
Possde
concerne
Classe_Objet
Type_SELinux
pk_classe <pi>
Identifiant_1 <pi>
1,n
est concerne par
action
Id_action <pi> Caractre long variable (16) <O>
action
Caractre long variable (20)
1,n
concerne
dtient
1,n
Identifiant_1 <pi>
...
129
lie
joue
Est li
lie le
joue
Sujet_Linux
User_SELinux
Id_SELinux
TEXT <pk>
User_SELinux TEXT
est proprietarie de
Objet_Linux
est la proprit de
appartient
Id_SELinux TEXT <pk,fk1>
Id_Objet
TEXT <pk,fk2>
est de classe
confine
Classe_Objet
concerne
Type_SELinux
Id_type TEXT <pk>
type
TEXT
dtient
Id_Classe TEXT <pk,fk1>
Id_action TEXT <pk,fk2>
130
Le MCD dOrBAC
Les lments du modle OrBACqui entrent en jeux pour llaboration du MCD sont :
Liste des entits :
action(Id_activite, Activite)
Classe_Objet(Id_Classe, Classe)
Contexte(Id_Contexte, Contexte)
Objet_Linux(Id_Objet, Objet)
Organisation(Id_Organisation, Organisation)
Priorite(Id_priorite, priorite)
Type_SELinux(Id_type, type)
User_SELinux(Id_SELinux, User_SELinux)
131
0,n
Organisation
Id_Organisation <pi> Texte (16) <O>
Organisation
Texte (30)
Identifiant_1 <pi>
...
0,n
Type_SELinux
Vue OrBAC
Classe_Objet
0,n
0,n 1,n
0,n
pk_classe <pi>
Identifiant_1 <pi>
Type_SELinux2
0,n
1,n
Id_type Texte (16) <O>
type
Texte (20)
permission
0,n
0,n
Employ
Use
0,n
0,n
Priorite
Id_priorite <pi> Squentiel (3) <O>
priorite
Rel court
0,n
0,n
pk_priorite <pi>
...
0,n
0,n
Contexte
Id_Contexte <pi> Texte (16) <O>
Contexte
Texte (30) <O>
Is_permitted
Consider
0,n
0,n
0,n
0,n
0,n
1,1
Objet_Linux
Identifiant_2 <pi>
...
1,n
0,n
1,1
action
User_SELinux
pk_contexte <pi>
...
0,n
0,n
0,n
Define
132
Organisation
Id_Organisation text <pk>
Organisation
text
Classe_Objet
Id_Classe text <pk>
Classe
text
Type_SELinux
permission
Id_Organisation
Id_type
Id_action
Id_Classe
Typ_Id_type
Id_priorite
Id_Contexte
Id_activite
Employ
Id_SELinux
Id_priorite
Id_Organisation
Id_type
text
int(3)
text
text
text
text
text
text
text
int(3)
text
text
<pk,fk5>
<pk,fk1>
<pk>
<pk,fk2>
<fk6>
<pk,fk3>
<pk,fk4>
<fk7>
Use
Id_Organisation
Id_Objet
Id_Classe
Id_type
Id_priorite
<pk,fk2>
<pk,fk3>
<pk,fk4>
<pk,fk1>
Priorite
Id_priorite int(3) <pk>
priorite
real
Is_permitted
Id_SELinux
Id_action
Id_Objet
Id_priorite
Id_activite
text
text
text
int(3)
text
<pk,fk1>
<pk>
<pk,fk4>
<pk,fk3>
<fk2>
Consider
Id_Organisation
Id_action
Id_activite
Id_priorite
act_Id_activite
Contexte
text
text
text
int(3)
text
<pk,fk3>
<pk>
<fk1>
<pk,fk4>
<fk2>
Objet_Linux
Id_Objet text <pk>
Objet
text
action
User_SELinux
Id_SELinux
text <pk>
User_SELinux text
Define
Id_organisation
Id_SELinux
Id_Objet
Id_action
Id_Contexte
Id_priorite
Id_activite
text
text
text
text
text
int(3)
text
<ak,fk5>
<ak,fk1>
<ak,fk6>
<ak,fk3>
<ak,fk4>
<ak,fk2>
133
text
text
text
text
int(3)
<pk,ak,fk4>
<pk,ak,fk2>
<pk,ak,fk1>
<pk,ak,fk5>
<pk,ak,fk3>
Saisie des lments Linux : il sagit de saisir des objets, des sujets, des classes dobjet
et des actions du systme. Dans notre cas, nous nous contenterons de saisir seulement
les lments qui entrent en jeux pour former la rgle de scurit SELinux suivante :
allow pwriter_t fich_t : file {write};
134
Le menu Entits SELinux > lment Linux > Actions permet de saisir les actions
supportes par les objets Linux (Cf. Figure 47), laction write est saisie comme suit :
136
137
138
139
Attribution dun Type/Domaine : Chaque rle SELinux est mis dans un type (ou un
domaine), dans notre cas les rles fich_r et pwriter_r sont confins
respectivement dans le typefich_t et le domaine pwriter_t via la fiche (Cf.
Figure 54) qui se trouve au menu : Entits SELinux > Attribution de
Type/Domaine.
Saisie dune Organisation : Lcran Organisation (Cf. Figure 55) qui se trouve dans
le menu : Entits OrBAC> Organisation permet de saisir les organisation OrBAC.
Dans notre cas, lorganisation considrer est la distribution de Linux, elle est
dterminer en utilisant la commande: cat /etc/redhat-release (Cf.Listing
2) pour connatre la distribution/version de Linux (Centos).
140
141
143
144
145
146
CONCLUSION ET PERSPECTIVES
Au sein de la prsente thse, nous avons prsent ltat de lart des diffrents modles de
contrles daccs prsents dans la littrature (DAC, RBAC, MAC), nous avons aussi montr pour
chacun de ces modles prsents, les points forts ainsi que leurs primtres dapplication. Nous
avons aussi mis en exergue les limites de ces modles.
Ensuite, nous avons prsent dans cette thselemodle OrBAC
(Organization Based
Access Control), une extension du modle RBAC. Il permet de dfinir la notion de contexte
comme tant une disposition particulire qui permet d'activer ou de dsactiver des autorisations.
OrBAC permet aussi dexprimer, en plus des permissions, des interdictions et des obligations et
de grer les conflits qui peuvent apparatre en prsence de ces autorisations.
En OrBAC, la notion dorganisation est trs importante, car elle dtermine la smantique
de chaque entit de ce modle, elle peut avoir le sens dun groupe de sujet, dun service dans une
direction, comme elle peut mme avoir le sens dune distribution/version du systme
dexploitation Linux. Ainsi chaque organisation structure ses sujets pour les employer dans des
rles, ses actions pour les considrer dans des vues et ses objets pour les utiliser dans des vues.
Cette structure gnre deux niveaux dabstraction: le niveau abstrait contenant les rles, activit
et vues et le niveau concret qui comprend les sujets, les actions et les objets. Labstraction des
entits permet de sparer la rdaction de la politique de scurit de son implantation.
Nous avons aussi prsent SELinux comme une solution de scurit qui sintgre au
noyau Linux. Elle utilise un ensemble de modles de contrle daccs comme DAC, RBAC, et
MAC pour fournir une couche de vrification supplmentaire, qui va au-del de ce qui est dj
fourni par le modle DAC. Chaque accs un objet sera vrifi par rapport la politique de
scurit du systme. Cette vrification est en plus des vrifications des droits daccs classiques
habituels effectues par le modle DAC.
Les dcisions de contrle d'accs de SELinux sont faites en utilisant les labels de scurit
qui sont reprsents par des chanes comme entite_u:role_r:type_t. Chaque dcision
de contrle d'accs implique deux contextes : celui de l'utilisateur tentant de raliser l'action et
147
celui de l'objet sur lequel l'action est ralise. SELinux utilise les inodes pour stocker les
contextes de scurit des fichiers.
La politique de scurit SELinux possde aussi des rgles spciales connues sous le nom
de rgles de transition, auquel cas un contexte diffrent du contexte initial est affect un sujet
lorsque cela est requis pour excuter un programme, une commande particulire ou une
procdure de confiance ncessitant un accs privilgi une ressource. Les objets nouvellement
crs se voit galement changer leur contexte, et ce dans le cas o cet objet hrite du contexte de
scurit de l'objet parent (par exemple un fichier cr dans un rpertoire).
Les rgles de dcision, de transition et les dclarations des diverses entits du systme
constituent la politique de scurit SELinux. Les rgles de la politique SELinux commencent
gnralement
par
les
mots
cls :
allow,
auditallow,
dontaudit,
rgles de scurit, c'est--dire que le contexte OrBAC est fix la valeur TRUE (ou DEFAULT).
Dautres adaptations ont t faites au niveau de quelques entits pour assurer convenablement le
codage : Les types/domaines SELinux correspondent aux rles OrBAC et les objets SELinux
correspondent la vue forme du couple constitu par le la classe de lobjet et le type de lobjet.
Le codage des transitions a t galement trait, nous avons pu coder lattribution des
types par dfaut en plus des transitions des domaines lies la procdure de changement de mot
de passe (procdure de confiance). Les valeurs des contextes ont t adaptes selon la prsence
ou non dune rgle explicite de transition, les adaptations des entits demeure les mme que pour
les rgles daccs.
148
Nous avons montr ainsi que le modle OrBAC ne concerne pas seulement le domaine
mdical (organisation=Hopital, Service des urgences, etc.), mais aussi bien les systmes
dexploitation (organisation=Distribution_Linux).
Une amlioration importante du modle OrBAC a t apporte par cette thse, il sagit de
lintroduction de lentit priorit chaque relation (Emploie,
Considre,
relations abstraites correspondantes. Il s'agit d'une prcaution et par la suite dun moyen
sr et trs scuritaire pour accorder des permissions concrtes, Il sagit dun mode de
combinaison pessimiste.
une bonne ide, car la relation concrte serait certaine indpendamment des degrs de certitude
des relations abstraites correspondantes.
Plusieurs perspectives peuvent tre traites pour montrer davantage lexpressivit et
lvolutivit du modleOrBAC, telles que par exemple llargissement de son primtre
dapplication, notamment en ce qui concerne le codage des politiques de scurit des bases de
donnesdune part, et le codage des priorits dexcution des processus Linux(voir utilisation de
la commande nice de Linux) dautre part et ce en essayant de trouver une relation entre ces
prioritset celles concernant le degr de certitude trait dans le chapitre 6.
Codage des politiques de scurit des bases de donnes : maintenant que nous avons pu
coder la politique de scurit SElinux en modle OrBAC, nous pouvons tendre notre champ
dapplication pour coder les politiques de scurit des bases de donnes utilisant les mmes
principes et techniquesquutiliseSELinux en matire dtiquetage de ses entits. Nous pouvons
utiliser SEPostgreSQL comme un exemple de SGBDR24afin d'illustrer notre codage. Aux objets
de la base de donnes tels que : les tables, les colonnes, les lignes, les procdures, etc. sont
attribus des contextes de scurit qui contiennent les mmes composantes que celles utilises par
SELinux (Cf. 1) avec une utilisation davantage des composants optionnels : Le niveau MLS et
la catgorie MCS.Par exemple les contextes suivant sont associsrespectivement une table et
ses deux colonnes :
unconfined_u:object_r:sepgsql_table_t:s0:c10(contexte de la table).
Un SGBDR (RDBMS en anglais) (Systme de Gestion de Base de Donnes Relationnel) est un logiciel qui permet de manipuler le contenu des
bases de donnes relationnelles.
150
Dans un environnement OrBAC, on suppose que lorganisation utilise est : Distet que
le contexteOrBACutilisest:Contexte.
Si le processus P (de contexte SELinuxp_u:p_r:p_t) est autoris excuter une
action A sur un objet O(de contexte SELinuxO_u:O_r:O_t),alors nous avons la relation de
drivations suivante :
permission (Dist, p_t,{A},V=(classe(O), O_t), Contexte,
pperm)
concrte
de
P :
f(pperm,pempl,putil,pact,pcont)et
sa
priorit
dordonnancement pN.Si non, faut-t-il considrer les (pi)comme tant des conditions particulires
dexcution et par la suite les assimiler a des contextes OrBAC?
152
Bibliographie
[1] R. William Cheswick and M. Steven Bellovin, Firewalls and Internet security: repelling the
wily hacker, Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc., 1994.
[2] P. Samarati and S. de Vimercati, Access Control: Policies, Models, and Mechanisms,
Sciences and Systems, vol. Princeton University., pp. 437-443, March 1971.
[5] D. F. Ferraiolo,S. Ravi, G. Serban, K. D. Richard , and C. Ramaswamy , Proposed NIST
Standard for Role-Based Access Control, ACM Transactions on Information and System
Security, p. 4(3):224274, August 2001.
[6] S. I. Gavrila and J. F. Barkley, Formal Specification for Role Based Access Control
Control Models, Computer, vol. 29, n %12, pp. 38-47, February 1996.
[8] R.K. Thomas, Team-based access control (TMAC): a primitive for applying role-based
Mige, C. Saurel and G.Trouessin, Organization Based Access Control, 4th IEEE
International Workshop on Policies for Distributed Systems and Networks (Policy'03), 4-6
June 2003.
[11] D. Dubois, J. Lang, and H. Prade, Possibilistic logic. Handbook of Logic in Artifical
Intelligence and Logic Programming, Oxford University Press, vol. 3, pp. 439-513, 1994.
[12] F. Cuppens, N. Cuppens-Boulahia, and C. Coma, MotOrBAC: an administration and
simulation tool of security policies, Security in Network Architectures (SAR) and Security of
Information Systems (SSI), First Joint Conference, 6-9 June 2006.
153
In IEEE Symposium on Security and Privacy (Oakland'87), vol. IEEE Computer Society
Press, pp. 184-195, 1987.
[22] W. E. Boebert and R. Y. Kain, A Practical Alternative to Hierarchical Integrity Policies, In
154
database inference controller, Data Knowl. Eng, N 3, vol. 11, pp. 271-297, Dec. 1993.
[27] B. McCarty , SELinux: NSA's Open Source Security Enhanced Linux, O'Reilly Media, Inc.,
2004.
[28] P. A. Loscocco, S. D. Smalley, P. A. Muckelbauer, R. C. Taylor, S. J. Turner and J. F.
http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/.
[36] W. E. Boebert and R. Y. Kain, A Practical Alternative to Hierarchical Integrity Policies, In
Enforcement {UNIX} Prototype, Trusted Information Systems, Inc., pp. 127--140, 1995.
[39] Hallyn, Serge E. and Kearns, Phil, Domain and type enforcement for linux, Proceedings of
the 4th annual Linux Showcase & Conference, vol. 4, pp. 15-15, 2000.
[40] P. Loscocco and S. Smalley, Integrating Flexible Support for Security Policies into the
155
I, 1973.
[44] C. Hanson, SELinux and MLS: putting the pieces together, Tech. rep. NAI-02-007,
Proceedings of the 7th ACM conference on Computer and communications security, pp. 8796, 2000.
[51] S. Jajodia, P. Samarati and V. S. Subrahmanian, A Logical Language for Expressing
Authorizations, Proceedings of the 1997 IEEE Symposium on Security and Privacy, pp. 3142, 1997.
[52] F. Cuppens, N. Cuppens-Boulahia and A. Mige, Inheritance hierachies in the Or-BAC
156
Access Control Models, ACM Transactions on Information and System Security, February
2003.
[55] Ahn, Gail-Joon and Sandhu, Ravi, The RSL99 language for role-based separation of duty
constraints, Proceedings of the fourth ACM workshop on Role-based access control, pp. 43-54, 1999.
[56] R. Chandramouli, R. Sandhu and R. Ramaswamy, Role-Based Access Control Features in
Annual omputer Security Applications onference (ASA 99), vol. IEEE Computer
Society, 1999.
[61] Red Hat, Inc., Red Hat Entreprise Linux 4 : Red Hat SELinux Guide, 2005. [En ligne].
Issues ans research directions, In 16th NIST-NCSC National Computer Security Conference,
1993.
[64] Fedora
project home
http://fedoraproject.org.
page
http://fedoraproject.org,
[En
ligne].
Available:
[65] S. Benferhat, K. Bouriche and M. Ouzarf, On the modeling of RedHat default security
Security Conference. National Bureau of Standards and National Computer Security Center,
pp. 175-183, September 1986.
[68] D. Kuhn, Mutual exclusion as a means of implementing separation of duty requirements in
role based access control systems. In 2nd ACM Workshop on Role-Based Access Control,
pages 2330. ACM Press,, 1997.
[69] D. Dubois and H. Prade, Necessity measures and the resolution principle. IEEE Trans. on
denial of service. IEEE Transactions on Software Engineering,, IEEE Trans. Softw. Eng., p.
16(6):581592, june 1990.
[71] G. Bossu and P. Siegel, Saturation nonmonotonic reasoning and the closed-world
access control models, the 7th Intelligent System and Knowledge Engineering (ISKE 2012),
15-17 December 2012.
[74] {PostgreSQL Global Development Group}, Postgres 9.0 Manual, [En ligne]. Available:
158