Avec les améliorations des systèmes de fichiers comme les “snapshots”, FreeBSD 5.0 et versions suivantes offrent une nouveauté en matière de sécurité: les listes de contrôle d'accès au système de fichiers (ACLs - “Access Control Lists”).
Les listes de contrôle d'accès étendent le système de permission standard d'UNIX d'une manière hautement compatible (POSIX.1e). Cette caractéristique permet à un administrateur d'utiliser avantageusement un modèle de sécurité plus sophistiqué.
Pour activer le support ACL pour les systèmes de fichiers UFS, ce qui suit:
options UFS_ACL
doit être compilé dans le noyau. Si cette option n'a pas été ajoutée, un avertissement sera affiché lors d'une tentative de montage d'un système de fichiers supportant les ACLs. Cette option est présente dans le noyau GENERIC. Les ACLs reposent sur des attributs étendus rajoutés au système de fichiers. Les attributs étendus sont nativement supportés par la prochaine génération du système de fichiers UNIX, UFS2.
Note : Un supplément de travail d'administration est requis pour configurer les attributs étendus sous UFS1 par rapport à UFS2. Les performances des attributs étendus sous UFS2 sont sensiblement meilleures également. Il en résulte donc, que l'UFS2 est généralement recommandé par rapport à l'UFS1 pour une utilisation des listes de contrôle d'accès.
Les ACLs sont activés grâce l'option
utilisée lors du montage, acls
, qui peut être ajouté dans le
fichier /etc/fstab. Cette option de montage peut être également
automatiquement fixée d'une manière définitive en utilisant tunefs(8) pour
modifier l'indicateur ACL du
“superblock” dans l'entête du système de fichiers. Il est en général
préférable d'utiliser cet indicateur pour plusieurs raisons:
L'option de montage pour les ACLs ne
peut être modifiée par un simple remontage (mount(8) -u
), mais uniquement par un umount(8) complet et
suivi d'un mount(8). Cela
signifie que les ACLs ne peuvent être
activées sur le système de fichiers racine après le démarrage. Cela signifie
également que vous ne pouvez pas modifier la disposition d'un système de fichier
une fois que c'est activé.
Positionner l'indicateur du “superblock” fera que le système de fichiers sera toujours monté avec les ACLs activées même s'il n'y a pas d'entrée dans le fichier fstab, ou s'il y a une réorganisation des périphériques. Cela prévient le montage accidentel du système de fichiers sans les ACLs activées, ce qui peut provoquer une activation impropre des ACLs et par conséquent des problèmes de sécurité.
Note : Nous pourrions modifier le comportement des ACLs pour permettre l'activation de l'indicateur sans le besoin d'un nouveau mount(8) complet, mais nous considérons qu'il est préférable d'éviter un montage accidentel sans les ACLs activées, parce que vous pouvez vous “tirer facilement dans les pieds” si vous activez les ACLs, puis les désactivez, et ensuite les réactivez à nouveau sans réinitialiser les attributs étendus. En général, une fois que vous avez activé les ACLs sur un système de fichiers, elles ne devraient pas être désactivées étant donné que les protections de fichiers résultantes peuvent ne pas être compatible avec celles prévues par les utilisateurs du système, et réactiver les ACLs peut réaffecter les précédentes ACLs aux fichiers qui ont depuis eût leur permissions modifiées, avec pour résultat un comportement imprévisible.
Les systèmes de fichiers avec les ACLs activées présenteront un signe + au niveau de leurs permissions quand elles seront affichées. Par exemple:
drwx------ 2 robert robert 512 Dec 27 11:54 private drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1 drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2 drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3 drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html
Ici nous voyons que les répertoires directory1, directory2, et directory3 utilisent les ACLs. Ce n'est pas le cas du répertoire public_html.
Les ACLs peuvent être affichées par l'utilitaire getfacl(1). Par exemple pour voir les ACLs sur le fichier test, on utilisera la commande:
% getfacl test #file:test #owner:1001 #group:1001 user::rw- group::r-- other::r--
Pour modifier le paramétrage des ACLs sur ce fichier, invoquez la commande setfacl(1). Intéressons-nous à la ligne:
% setfacl -k test
L'indicateur -k
supprimera toutes les ACLs actuellement définies pour un fichier ou un
système de fichiers. Une méthode plus adaptée est d'utiliser l'option -b
étant donné qu'elle conserve les champs de base nécessaires
au bon fonctionnement des ACLs.
% setfacl -m u:trhodes:rwx,group:web:r--,o::--- test
Dans la commande ci-dessus, l'option -m
a été
utilisée pour modifier les entrées ACL
par défaut. Comme il n'y avait pas d'entrées pré-définies, puisqu'elles ont été
supprimées par la commande précédente, cela restaurera les options par défaut
et prendra en compte les options précisées. Prenez soin de noter que si vous
ajoutez un utilisateur ou un groupe qui n'existe pas sur le système, une erreur
“Invalid argument” sera affichée sur la
sortie standard.
Précédent | Sommaire | Suivant |
OpenSSH | Niveau supérieur | Surveillance des problèmes de sécurité relatifs aux programmes tierce-partie |
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.