Vous êtes sur la page 1sur 12

CONTROLE D’ACCES

Subject → Object Base sur un ensemble de règles

Sujets Module de règles Objets/Ressources

Droits/permissions
Type d’accès

DAC : DISCRETIONARY ACCESS CONTROL


• Le modèle de sécurité utilisé par la plupart des
systèmes d'exploitation courants
• Applique la sécurité par propriété.
• Si un utilisateur possède un fichier, il est autorisé à
définir les autorisations de lecture, d'écriture et
d'exécution pour ce fichier.
• Dans ce modèle, les utilisateurs contrôlent les données
à leur discrétion. Ils définissent les règles d’accès à
leurs ressources.
• Le propriétaire du système n'a pas un contrôle total sur
le système comme les utilisateurs.

TECHNIQUES DAC
Propriété et autorisations
Identités
u — l'utilisateur qui possède le fichier (c'est-à-dire le
propriétaire)
g — le groupe auquel appartient l'utilisateur
o — autres (pas le propriétaire ou le groupe du
propriétaire)
a — tout le monde ou tous (u, g et o)

Autorisations
r — accès en lecture
w — accès en écriture
x — accès en exécution (Pour un répertoire, c’est le
déplacement)

Actions
+ — ajoute l'autorisation
- — supprime l'autorisation
= — en fait la seule autorisation

Notation Octale : Ordre : rwx ; Absence de permission -


• r=4
• w=2
• x=1
• -=0
Exemples :
ls -l
- (r w -) (r w -) (r - -) : Fichier
| | |
4+2+0 4+2+0 4+0+0

chmod 644 fichier.txt


L’utilisateur a les droits de lecture et d’écriture. Le groupe
n'aura pas d'accès en écriture, mais pourra toujours lire le
fichier. Pareil pour les autres

Pas recommander d’utiliser les paramètres suivants : 666


ou 777.
Certaines combinaisons courantes, les valeurs numériques
et de leurs significations :

-rw------- (600) — Seul le propriétaire dispose des autorisations


de lecture et d'écriture.

-rw-r--r-- (644) — Seul le propriétaire dispose des autorisations


de lecture et d'écriture ; le groupe et les autres n’ont que le
droit lecture.

-rwx------ (700) — Seul le propriétaire dispose des autorisations


de lecture, d'écriture et d'exécution.

-rwxr-xr-x (755) — Le propriétaire dispose des autorisations de


lecture, d'écriture et d'exécution ; le groupe et les autres ne
peuvent que lire et exécuter.

-rwx--x--x (711) — Le propriétaire a les permissions de lecture,


d'écriture et d'exécution ; le groupe et les autres ne peuvent
qu’exécuter.

-rw-rw-rw- (666) — Tout le monde peut lire et écrire dans le


fichier. (Soyez prudent avec ces autorisations.)

-rwxrwxrwx (777) — Tout le monde peut lire, écrire et


exécuter. (Encore une fois, ce paramètre d'autorisations
peut être dangereux.)

Sur les répertoires,

drwx------ (700) — Seul l'utilisateur peut lire, écrire et se


déplacer dans ce répertoire.
drwxr-xr-x (755) — Tout le monde peut lire le répertoire et s’y
déplacer, mais son contenu ne peut être modifié que par
l'utilisateur.
Modifier les permissions

g+w — ajoute un accès en écriture pour le groupe


o-rwx - supprime toutes les autorisations pour les autres
u+x — permet au propriétaire du fichier d'exécuter le fichier
a+rw — permet à tout le monde de lire et d'écrire dans le
fichier
ug+r — permet au propriétaire et au groupe de lire le fichier
g=rx — laisse le groupe uniquement lire et exécuter (pas
écrire)

chmod -R a+rw Rep — Ajout des droits r et w de manière


récursive dans le répertoire Rep
chmod go-rw fichier.txt — Les membres du groupe
propriétaire et les autres n’auront plus les droits de r et w
chmod o= fichier.txt — On fixe aucun droit aux autres
chmod ug=rwx fichier.txt — On fixe tous les droits à
l’utilisateur principal et au groupe propriétaire d’utilisateurs

chown owner-user file


chown owner-user:owner-group file
chown owner-user:owner-group directory
chown options owner-user:owner-group file

# ls -l file.txt
-rw-r--r-- 1 root root 0 Mar 31 05:48 file.txt
# chown tchafros file.txt
# ls -l file.txt
-rw-r--r-- 1 tchafros root 0 Mar 31 05:48 file.txt
# chown tchafros:tchafros file.txt
# ls -l file.txt
-rw-r--r-- 1 tchafros tchafros 0 Mar 31 05:48 file.txt
Droits étendus : suid, sgid, sticky bit

Access mode Symbolic Octal


suid s with u 4000
sgid s with g 2000
sticky t 1000

suid : Lorsqu'un répertoire a le mode sgid activé, tous les


fichiers ou répertoires qui y sont créés héritent de l'ID du
propriétaire.
chmod u+s ou chmod 4000

sgid : Lorsqu'un répertoire a le mode sgid activé, tous les


fichiers ou répertoires qui y sont créés héritent de l'ID de
groupe propriétaire.
chmod g+s ou chmod 2000

sticky: S'il est défini pour un répertoire, il permet


uniquement à l'utilisateur propriétaire ou au super
utilisateur (root) de supprimer ou de délier un fichier.

On peut combiner: chmod g+ws fichier.txt

SITUATION

Un stagiaire dans le Département de comptabilité


(tchafros) doit être capable de lire certains fichiers (ou
même uniquement les fichiers appartenant à Paul, son
manager) ?

Les membres du service des ventes ont également besoin


d'accéder aux fichiers du propriétaire de la comptabilité
pour créer des factures pour l'équipe de Paul afin de
facturer les clients, mais on ne veut pas que l'équipe des
ventes voient les autres rapports générés par l'équipe de
Paul.

Cette situation peut être délicate car, avec des


autorisations régulières, chaque fichier et répertoire ne
peut avoir qu'un seul propriétaire d'utilisateur et de
groupe à la fois.

Ce type de situation se gère avec les listes de contrôle


d'accès (ACL) Linux.

Listes de contrôle d’accès


Les ACL permettent d'appliquer un ensemble plus
spécifique d'autorisations à un fichier ou à un répertoire
sans (nécessairement) modifier la propriété et les
autorisations de base.

Ils permettent d’ajouter l'accès à d'autres utilisateurs ou


groupes.

getfacl : Afficher l'ACL actuelle

[root]# getfacl /comptabilite


getfacl: Removing leading '/' from absolute path names
# file: comptabilite
# owner: comptabilite
# group: comptabilite
user::rwx
group::rwx
other::---

il n'y a pas d'ACL sur ce répertoire car les seules


autorisations répertoriées concernent l'utilisateur, le
groupe et d'autres.
setfacl : Définir une ACL

setfacl [option] [action/specification] file


action: -m (modifier) ou -x (supprimer)
specification : l'utilisateur ou le groupe suivi des
autorisations qu’on veut définir.
Il vaut -d (defaut)
[root]# setfacl -d -m comptabilite:rwx /comptabilite
[root]# getfacl /comptabilite
[root]# getfacl: Removing leading '/' from absolute path
names
# file: comptabilite
# owner: comptabilite
# group: comptabilite
user::rwx
group::rwx
other::---
default:user::rwx
default:user: comptabilite:rwx
default:group::rwx
default:mask::rwx
default:other::---

Et si Paul crée un fichier dans ce répertoire ?


[paul]$ touch test
[paul]$ ls -la
drwxrwx---+ 2 comptabilite comptabilite 18 Jan 8 17:51 .
dr-xr-xr-x. 18 root root 262 Jan 8 15:13 ..
-rw-rw----+ 1 paul comptabilite 0 Jan 8 17:51 test
[paul]$ getfacl test
# file: test
# owner: paul
# group: comptabilite
user::rw-
user: comptabilite:rwx #effective:rw-
group::rwx #effective:rw-
Que se passe-t-il si tchafros essaie de créer un fichier ?
tchafros n'est pas dans le groupe de comptabilité, il
n'aura pas la permission de créer.

On veut permettre que tchafros ait la possibilité de voir


quels fichiers se trouvent dans le répertoire de
comptabilité, et nous voulons qu'il puisse créer de
nouveaux fichiers :

[root@lab1 comptabilite]setfacl -m tchafros:rwx /comptabilite


[root]getfacl ./
# file: .
# owner: comptabilite
# group: comptabilite
user::rwx
user:tchafros:rwx

Nous ne voulons pas que cet utilisateur crée des fichiers


dans le répertoire de comptabilité ? Mais qu’il puisse les
lire, et créer de nouveaux fichiers dans son propre dossier.

1)
[root@lab1 comptabilite]# setfacl -m tchafros:r-x / comptabilite
[root]# getfacl ./
# file: .
# owner: comptabilite
# group: comptabilite
user::rwx
User:tchafros:r-x

2)
[root@lab1 comptabilite]# mkdir ./tchafros
[root]# chown tchafros:comptabilite ./tchafros
[root]# getfacl ./tchafros
# file: tchafros
# owner: tchafros
# group: comptabilite
user::rwx
user: comptabilite:rwx
group::rwx
3)
[root@lab1 comptabilite]# su tchafros
[tchafros]$ touch test
touch: cannot touch ‘test’: Permission denied
[tchafros]$ cd ./tchafros
[tchafros]$ touch test
[tchafros]$ ls
Test

4)
On veut que les fichiers de tchafros soient secrets et aue
Paul ne les voit pas

[root]# setfacl -m paul:- ./tchafros


[root]# getfacl ./tchafros
# file: tchafros
# owner: tchafros
# group: comptabilite
user::rwx
user: comptabilite:---
user:paul:---

LIMITE DAC
• Danger présenté par le compte root.
• Ce super-utilisateur a le pouvoir de contrôler tous les
fichiers et processus.
• Si le compte root, ou un processus qui s'exécute avec
ses privilèges, est compromis, un attaquant peut
prendre le contrôle total du système et de ses
données.

MAC: MANDATORY ACCESS CONTROL


• Objectif : limiter ou même éliminer le besoin d'un
compte root ou le control unique base sur le
détenteur
• Objectif : Renforcer la vérification en associant un
organe tiers en mode Noyau qui détient des règles
avec grain fin pour contrôler les fichiers, les processus,
les utilisateurs et les applications.
• La décision de donner l’accès ne repose plus
uniquement sur l’identité de l’utilisateur authentifié.

• Lorsqu'un accès lié à la sécurité se produit, comme


lorsqu'un processus tente d'ouvrir un fichier, l’organe
intercepte l'opération dans le noyau.

• Si une règle de politique MAC autorise l'opération, elle


se poursuit ; sinon, l’organe bloque l'opération et
renvoie une erreur au processus.

• Le noyau vérifie et applique les règles de politique


DAC avant les règles MAC, il ne vérifie donc pas les
règles de politique de l’organe si les règles DAC ont
déjà refusé l'accès à une ressource.

MODES MAC

• Enforcing (Application) : le noyau refuse l'accès aux


utilisateurs et aux programmes, sauf si les règles de
politique de sécurité de l’organe l'autorisent.
o Tous les messages de refus sont enregistrés en tant
que refus dans une table appelée AVC (Access
Vector Cache).
• Permissive (Permissif) : le noyau n'applique pas les
règles de politique de sécurité mais SELinux envoie des
messages de refus à un fichier journal.
o Cela permet de voir quelles actions auraient été
refusées si SELinux fonctionnait en mode
application.
o Ce mode est destiné à être utilisé pour
diagnostiquer le comportement de l’organe.
• Désactivé : Si on désactive l’organe, le noyau utilise
uniquement les règles DAC pour le contrôle d'accès.

EXEMPLES D’ORGANES MAC (Source : Lien)

SELinux : http://www.nsa.gov/selinux
• Application de type (TE – Type Enforcement),
• Contrôles d'accès basés sur les rôles (RBAC),
• Sécurité à plusieurs niveaux (MLS).
RSBAC (Rule Set Based Access Control):
http://www.rsbac.org/
• Restreindre le pouvoir de root
• Listes de contrôle d'accès
• Prisons de processus
• Limitation des ressources
• Limitation de l'accès au réseau
• Contrôles d'accès basés sur les rôles
• Protection de l'espace d'adressage avec PaX
(http://pax.grsecurity.net/)

Système de détection d'intrusion Linux :


http://www.lids.org/
• Restreindre le pouvoir de root
• Activer le contrôle d'accès précis avec les listes de
contrôle d'accès
• Protéger les fichiers et les processus
• Restreindre l'accès au réseau
• Détecter les scans de port
• Des exemples d'ACL sont disponibles pour Apache,
dnscache, IMAP, MySQL, OpenLDAP, OpenSSH, qmail et
TinyDNS.
Grsecurity : http://www.grsecurity.net/
• Un système RBAC qui génère des politiques de
moindre privilège sans configuration
• Changer le durcissement de la racine (chroot)
• /tmp prévention des attaques race
• Audit approfondi
• Protection de l'espace d'adressage avec PaX
• Caractère aléatoire supplémentaire dans la pile
TCP/IP
• Les utilisateurs ne sont autorisés à afficher que leurs
propres processus
• Alertes et audits de sécurité contenant l'adresse IP de
la machine à l'origine de l'événement

Vous aimerez peut-être aussi