From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([69.77.167.62] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1LbkGO-00048L-Gv for garchives@archives.gentoo.org; Mon, 23 Feb 2009 23:31:04 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 3FBFFE04A3; Mon, 23 Feb 2009 23:31:03 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id DED66E04A3 for ; Mon, 23 Feb 2009 23:31:02 +0000 (UTC) Received: from stork.gentoo.org (stork.gentoo.org [64.127.104.133]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTP id 6D0DFBC098 for ; Mon, 23 Feb 2009 23:31:02 +0000 (UTC) Received: from cam by stork.gentoo.org with local (Exim 4.69) (envelope-from ) id 1LbkGM-0001tc-37 for gentoo-commits@lists.gentoo.org; Mon, 23 Feb 2009 23:31:02 +0000 From: "Camille Huot (cam)" To: gentoo-commits@lists.gentoo.org Reply-To: gentoo-dev@lists.gentoo.org, cam@gentoo.org Subject: [gentoo-commits] gentoo commit in xml/htdocs/proj/fr/hardened/selinux: hb-selinux-libsemanage.xml X-VCS-Repository: gentoo X-VCS-Files: hb-selinux-libsemanage.xml X-VCS-Directories: xml/htdocs/proj/fr/hardened/selinux X-VCS-Committer: cam X-VCS-Committer-Name: Camille Huot Content-Type: text/plain; charset=utf8 Message-Id: Sender: Camille Huot Date: Mon, 23 Feb 2009 23:31:02 +0000 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 1fa588a1-fb27-42ea-b77c-d9059a53d37e X-Archives-Hash: b7d791129367bfa7f591d1a03dba6612 cam 09/02/23 23:31:02 Added: hb-selinux-libsemanage.xml Log: Sync 1.1 Revision Changes Path 1.1 xml/htdocs/proj/fr/hardened/selinux/hb-selinux-libse= manage.xml file : http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/proj/fr/har= dened/selinux/hb-selinux-libsemanage.xml?rev=3D1.1&view=3Dmarkup plain: http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/proj/fr/har= dened/selinux/hb-selinux-libsemanage.xml?rev=3D1.1&content-type=3Dtext/pl= ain Index: hb-selinux-libsemanage.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 1.0 2006-10-15
L'infrastruction de gestion de SELinux

L'infrastructure de gestion de SELinux s'occupe de plusieurs aspects des politiques SELinux. Ces outils de gestion sont bas=C3=A9s sur la biblioth= =C3=A8que centrale libsemanage. Plusieurs programmes de gestion permettent d'acheve= r plusieurs t=C3=A2ches, dont notamment semanage et semodule.= Ils vous permettront de configurer certains aspects sans avoir besoin de la source= de la politique.

Gestion des modules de politiques SELinux Qu'est-ce qu'un module de politique ?

SELinux g=C3=A8re les politiques modulaires. Cela consiste en plusieurs m= orceaux de politiques qui sont assembl=C3=A9s pour former une politique =C3=A0 charg= er dans le noyau. La structure est assez similaire au noyau lui-m=C3=AAme et =C3=A0 = ses modules : une image principale du noyau est charg=C3=A9e, puis plusi= eurs modules du noyau peuvent =C3=AAtre ajout=C3=A9s (=C3=A0 condition que leu= rs d=C3=A9pendances soient satisfaites) et supprim=C3=A9s, =C3=A0 chaud, sans red=C3=A9marrer le sys= t=C3=A8me. De m=C3=AAme, chaque politique est constitu=C3=A9e d'un module de base et d'un nombre =C3=A9ventuellement nul de modules de politiques qui forment la politique= . Les modules sont construits en compilant un morceau de politique et en cr=C3=A9= ant un paquet de politique (*.pp) contenant la politique compil=C3=A9e et =C3=A9= ventuellement des contextes de fichiers.

Le paquet du module de base (base.pp) contient le strict n=C3=A9cessaire = de la politique. Toutes les politiques modulaires doivent au moins avoir leur m= odule de base. Dans Gentoo, nous avons rajout=C3=A9 dans ce paquet des politiqu= es pour toutes les parties du profil syst=C3=A8me. Il est install=C3=A9 par l'ebu= ild selinux-base-policy. Les autres ebuilds dans Portage contiennent u= n ou plusieurs modules de politiques.

Pour plus d'informations =C3=A0 propos de l'=C3=A9criture d'un module de = politique, en particulier pour pouvoir personnaliser une politique, veuillez consulter = le guide des module= s de politiques.

Le magasin de modules SELinux

Lorsqu'un module de politique est ins=C3=A9r=C3=A9 ou supprim=C3=A9, les = modules sont copi=C3=A9s depuis ou supprim=C3=A9 du magasin de modules. Ce d=C3=A9p=C3=B4t contien= t une copie des modules qui ont =C3=A9t=C3=A9 utilis=C3=A9s pour cr=C3=A9er la politique = courante, ainsi que plusieurs fichiers annexes. Ce d=C3=A9p=C3=B4t se trouve dans /etc/selinux/{strict,targeted}/modules. Vous ne devrez jamai= s avoir besoin d'acc=C3=A9der =C3=A0 ces fichiers directement. Un outil bas= =C3=A9 sur libsemanage devrait s'en occuper pour vous.

Libsemanage manipule le magasin de modules =C3=A0 l'aide de transaction. = Cela signifie que si un ensemble d'op=C3=A9rations (une transaction) sont ex=C3= =A9cut=C3=A9es sur le magasin et qu'une partie =C3=A9choue, alors la transaction enti=C3=A8r= e est annul=C3=A9e. Cela emp=C3=AAche le magasin de se retrouver dans un =C3=A9tat incoh=C3=A9= rent.

La gestion du magasin de modules passe par la commande semodule. L'option -l permet d'en lister son contenu.

# semodule -l
distcc  1.1.1

Puisque le module de base est requis dans tous les cas et qu'il n'a pas d= e version, il n'est pas affich=C3=A9 dans la liste. Tous les autres modules= sont affich=C3=A9s avec leur version.

Ajouter un module de politique

Le module est r=C3=A9f=C3=A9renc=C3=A9 par son nom.

# semodule -i module.pp

Cela ins=C3=A9rera le module dans le magasin de la politique actuellement configur=C3=A9e, comme sp=C3=A9cifi=C3=A9 dans /etc/selinux/config<= /path>. Si l'insertion r=C3=A9ussit, la politique sera charg=C3=A9e, sauf si l'optio= n -n est sp=C3=A9cifi=C3=A9e. Pour charger le module dans un autre magasin de modu= les, utilisez l'option -s.

# semodule -s targeted -i module.pp

Puisque nous sp=C3=A9cifions un autre magasin, la politique ne sera pas c= harg=C3=A9e.

Retirer un module de politique

Le module est r=C3=A9f=C3=A9renc=C3=A9 par son nom dans le magasin de mod= ules.

# semodule -r module

Cela supprimera le module du magasin de la politique courante, sp=C3=A9ci= fi=C3=A9e dans /etc/selinux/config. Si la suppression a march=C3=A9, la pol= itique sera recharg=C3=A9e, sauf si l'option -n a =C3=A9t=C3=A9 sp=C3=A9cifi=C3= =A9e. L'option -s fonctionne =C3=A9galement pour une suppression de module.

Configurer les associations d'identifiants d'utilisateurs

La m=C3=A9thode actuelle pour assigner des ensembles de r=C3=B4les =C3=A0= un utilisateur est de mettre en place une liste d'associations entre les utilisateurs Linux = et les identit=C3=A9s SELinux. Lorsqu'un utilisateur se connecte, le programme <= c>login utilisera cette liste pour associer la bonne identit=C3=A9 SELinux =C3=A0= l'utilisateur. S'il n'y a pas d'association pour un utilisateur, on utilise l'entr=C3=A9= e __default__.

La gestion des associations entre utilisateurs Linux et identit=C3=A9s SE= Linux est r=C3=A9alis=C3=A9e par semanage.

# semanage login -l
Login Name                SELinux User

__default__               user_u
root                      root
Ajouter une entr=C3=A9e

Pour faire correspondre l'utilisateur pebenito =C3=A0 l'identit=C3= =A9 staff_u :

# semanage login -a -s staff_u pebenito

La vue= d'ensemble de SELinux contient une description des identit=C3=A9s disponibles.

Supprimer une entr=C3=A9e

Pour supprimer l'association de l'utilisateur pebenito :

# semanage login -d pebenito
Les associations d'identit=C3=A9s sp=C3=A9cifi=C3=A9es par la politique (= pas par l'infrastructure de gestion) ne peuvent pas =C3=AAtre supprim=C3=A9es.
Configurer les valeurs par d=C3=A9faut des bool=C3=A9ens

Le programme setsebool est maintenant un outil utilisant libsemana= ge. La fonction de base de cet outil est d'assigner une valeur =C3=A0 un bool=C3= =A9en. Pourtant, si la machine est red=C3=A9marr=C3=A9e, les bool=C3=A9ens seront tous r=C3= =A9initialis=C3=A9s =C3=A0 la valeur sp=C3=A9cifi=C3=A9e dans la politique. Pour configurer une valeur = tout en demandant qu'elle soit par d=C3=A9faut dans la politique, utilisez l'opti= on -P.

# setsebool -P fcron_crond 1

La commande pr=C3=A9c=C3=A9dente d=C3=A9finit la valeur du bool=C3=A9en f= cron_crond =C3=A0 1 et d=C3=A9finit =C3=A9galement cette valeur comme =C3=A9tant celle par d=C3=A9faut.

Configurer les identit=C3=A9s de SELinux

En principe, on n'a pas besoin d'ajouter des identit=C3=A9s de SELinux =C3= =A0 la politique de s=C3=A9curit=C3=A9, car les associations identit=C3=A9/login= suffisent. Une bonne raison d'ajouter une nouvelle identit=C3=A9 serait pour am=C3=A9liorer le= s audits, car l'identit=C3=A9 SELinux apparait directement dans le contexte du message = de refus d'acc=C3=A8s.

La gestion des identit=C3=A9s SELinux est assur=C3=A9e par l'outil sem= anage.

# semanage user -l
SELinux User    SELinux Roles

root            sysadm_r staff_r
staff_u         sysadm_r staff_r
sysadm_u        sysadm_r
system_u        system_r
user_u          user_r
Ajouter une identit=C3=A9 SELinux

En plus de lister les r=C3=B4les de l'identit=C3=A9, il faut sp=C3=A9cifi= er un pr=C3=A9fixe. Ce pr=C3=A9fixe doit correspondre =C3=A0 un r=C3=B4le, par exemple staff<= /c> ou sysadm, et est utilis=C3=A9 pour =C3=A9tiqueter les r=C3=A9pertoires racines des = utilisateurs. Si le pr=C3=A9fixe utilis=C3=A9 est staff, les utilisateurs Linux qui se= ront associ=C3=A9s =C3=A0 cette identit=C3=A9 auront leur r=C3=A9pertoire racine =C3=A9tiquet=C3=A9= staff_home_dir_t.

Pour ajouter l'identit=C3=A9 test_u contenant les r=C3=B4les st= aff_r et sysadm_r avec le pr=C3=A9fixe staff :

# semanage user -a -R 'staff_r sysadm_r' -P staff test_u
Pour pouvoir utiliser l'identit=C3=A9, il faut aussi ajouter une associat= ion avec un login.
Supprimer une identit=C3=A9 SELinux

Pour supprimer l'identit=C3=A9 SELinux test_u :

# semanage user -d test_u
Les identit=C3=A9s SELinux cr=C3=A9=C3=A9es par la politique (par opposit= ion =C3=A0 celles cr=C3=A9=C3=A9es par l'infrastructure de gestion) ne peuvent pas =C3=AAtre supprim=C3=A9es= .