public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo commit in xml/htdocs/proj/fr/hardened/selinux: hb-selinux-libsemanage.xml
@ 2009-02-23 23:31 Camille Huot (cam)
  0 siblings, 0 replies; only message in thread
From: Camille Huot (cam) @ 2009-02-23 23:31 UTC (permalink / raw
  To: gentoo-commits

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-libsemanage.xml

file : http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/proj/fr/hardened/selinux/hb-selinux-libsemanage.xml?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/proj/fr/hardened/selinux/hb-selinux-libsemanage.xml?rev=1.1&content-type=text/plain

Index: hb-selinux-libsemanage.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sections SYSTEM "/dtd/book.dtd">

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/1.0 -->

<!-- Le contenu de ce document est sous licence CC-BY-SA. -->
<!-- Voir http://creativecommons.org/licenses/by-sa/1.0/deed.fr -->

<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/proj/fr/hardened/selinux/hb-selinux-libsemanage.xml,v 1.1 2009/02/23 23:31:02 cam Exp $ -->

<sections>
<version>1.0</version>
<date>2006-10-15</date>

<section>
<title>L'infrastruction de gestion de SELinux</title>
<subsection>
<body>

<p>
L'infrastructure de gestion de SELinux s'occupe de plusieurs aspects des
politiques SELinux. Ces outils de gestion sont basés sur la bibliothèque
centrale libsemanage. Plusieurs programmes de gestion permettent d'achever
plusieurs tâches, dont notamment <c>semanage</c> et <c>semodule</c>. Ils vous
permettront de configurer certains aspects sans avoir besoin de la source de la
politique.
</p>

</body>
</subsection>
</section>

<section>
<title>Gestion des modules de politiques SELinux</title>
<subsection>
<title>Qu'est-ce qu'un module de politique&nbsp;?</title>
<body>

<p>
SELinux gère les politiques modulaires. Cela consiste en plusieurs morceaux de
politiques qui sont assemblés pour former une politique à charger dans le
noyau. La structure est assez similaire au noyau lui-même et à ses
modules&nbsp;: une image principale du noyau est chargée, puis plusieurs
modules du noyau peuvent être ajoutés (à condition que leurs dépendances soient
satisfaites) et supprimés, à chaud, sans redémarrer le système. De même,
chaque politique est constituée d'un module de base et d'un nombre
éventuellement nul de modules de politiques qui forment la politique. Les
modules sont construits en compilant un morceau de politique et en créant un
paquet de politique (*.pp) contenant la politique compilée et éventuellement
des contextes de fichiers.
</p>

<p>
Le paquet du module de base (base.pp) contient le strict nécessaire de la
politique. Toutes les politiques modulaires doivent au moins avoir leur module
de base. Dans Gentoo, nous avons rajouté dans ce paquet des politiques pour
toutes les parties du profil système. Il est installé par l'ebuild
<c>selinux-base-policy</c>. Les autres ebuilds dans Portage contiennent un ou
plusieurs modules de politiques.
</p>

<p>
Pour plus d'informations à propos de l'écriture d'un module de politique, en
particulier pour pouvoir personnaliser une politique, veuillez consulter le
<uri link="selinux-handbook.xml?part=3&amp;chap=5">guide des modules de
politiques</uri>.
</p>

</body>
</subsection>
<subsection>
<title>Le magasin de modules SELinux</title>
<body>

<p>
Lorsqu'un module de politique est inséré ou supprimé, les modules sont copiés
depuis ou supprimé du magasin de modules. Ce dépôt contient une copie des
modules qui ont été utilisés pour créer la politique courante, ainsi que
plusieurs fichiers annexes. Ce dépôt se trouve dans
<path>/etc/selinux/{strict,targeted}/modules</path>. Vous ne devrez jamais
avoir besoin d'accéder à ces fichiers directement. Un outil basé sur
libsemanage devrait s'en occuper pour vous.
</p>

<p>
Libsemanage manipule le magasin de modules à l'aide de transaction. Cela
signifie que si un ensemble d'opérations (une transaction) sont exécutées sur
le magasin et qu'une partie échoue, alors la transaction entière est annulée.
Cela empêche le magasin de se retrouver dans un état incohérent.
</p>

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

<pre caption="Lister le contenu du magasin">
# <i>semodule -l</i>
distcc  1.1.1
</pre>

<p>
Puisque le module de base est requis dans tous les cas et qu'il n'a pas de
version, il n'est pas affiché dans la liste. Tous les autres modules sont
affichés avec leur version.
</p>

</body>
</subsection>
<subsection>
<title>Ajouter un module de politique</title>
<body>

<p>
Le module est référencé par son nom.
</p>

<pre caption="Insérer un module">
# <i>semodule -i module.pp</i>
</pre>

<p>
Cela insérera le module dans le magasin de la politique actuellement
configurée, comme spécifié dans <path>/etc/selinux/config</path>. Si
l'insertion réussit, la politique sera chargée, sauf si l'option <c>-n</c> est
spécifiée. Pour charger le module dans un autre magasin de modules, utilisez
l'option <c>-s</c>.
</p>

<pre caption="Insérer un module dans un autre magasin">
# <i>semodule -s targeted -i module.pp</i>
</pre>

<p>
Puisque nous spécifions un autre magasin, la politique ne sera pas chargée.
</p>

</body>
</subsection>
<subsection>
<title>Retirer un module de politique</title>
<body>

<p>
Le module est référencé par son nom dans le magasin de modules.
</p>

<pre caption="Supprimer un module">
# <i>semodule -r module</i>
</pre>

<p>
Cela supprimera le module du magasin de la politique courante, spécifiée dans
<path>/etc/selinux/config</path>. Si la suppression a marché, la politique sera
rechargée, sauf si l'option <c>-n</c> a été spécifiée. L'option <c>-s</c>
fonctionne également pour une suppression de module.
</p>

</body>
</subsection>
</section>

<section>
<title>Configurer les associations d'identifiants d'utilisateurs</title>
<subsection>
<body>

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

<p>
La gestion des associations entre utilisateurs Linux et identités SELinux est
réalisée par <c>semanage</c>.
</p>

<pre caption="Associations entre utilisateurs Linux et identités SELinux">
# <i>semanage login -l</i>
Login Name                SELinux User

__default__               user_u
root                      root
</pre>
</body>

</subsection>
<subsection>
<title>Ajouter une entrée</title>
<body>

<p>
Pour faire correspondre l'utilisateur <c>pebenito</c> à l'identité
<c>staff_u</c>&nbsp;:
</p>

<pre caption="Associer une identité à un utilisateur">
# <i>semanage login -a -s staff_u pebenito</i>
</pre>

<p>
La <uri link="selinux-handbook.xml?part=3&amp;chap=1#doc_chap3">vue d'ensemble
de SELinux</uri> contient une description des identités disponibles.
</p>

</body>
</subsection>
<subsection>
<title>Supprimer une entrée</title>
<body>

<p>
Pour supprimer l'association de l'utilisateur <c>pebenito</c>&nbsp;:
</p>

<pre caption="Supprimer l'identité d'un utilisateur">
# <i>semanage login -d pebenito</i>
</pre>

<note>
Les associations d'identités spécifiées par la politique (pas par
l'infrastructure de gestion) ne peuvent pas être supprimées.
</note>

</body>
</subsection>
</section>

<section>
<title>Configurer les valeurs par défaut des booléens</title>
<subsection>
<body>

<p>
Le programme <c>setsebool</c> est maintenant un outil utilisant libsemanage. La
fonction de base de cet outil est d'assigner une valeur à un booléen. Pourtant,
si la machine est redémarrée, les booléens seront tous réinitialisés à la
valeur spécifiée dans la politique. Pour configurer une valeur tout en
demandant qu'elle soit par défaut dans la politique, utilisez l'option
<c>-P</c>.
</p>

<pre caption="Configurer les valeurs par défaut des booléens">
# <i>setsebool -P fcron_crond 1</i>
</pre>

<p>
La commande précédente définit la valeur du booléen fcron_crond à 1 et définit
également cette valeur comme étant celle par défaut.
</p>

</body>
</subsection>
</section>

<section>
<title>Configurer les identités de SELinux</title>
<subsection>
<body>

<p>
En principe, on n'a pas besoin d'ajouter des identités de SELinux à la
politique de sécurité, car les associations identité/login suffisent. Une bonne
raison d'ajouter une nouvelle identité serait pour améliorer les audits, car
l'identité SELinux apparait directement dans le contexte du message de refus
d'accès.
</p>

<p>
La gestion des identités SELinux est assurée par l'outil <c>semanage</c>.
</p>

<pre caption="Lister les identités SELinux">
# <i>semanage user -l</i>
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
</pre>

</body>
</subsection>
<subsection>
<title>Ajouter une identité SELinux</title>
<body>

<p>
En plus de lister les rôles de l'identité, il faut spécifier un préfixe. Ce
préfixe doit correspondre à un rôle, par exemple <c>staff</c> ou <c>sysadm</c>,
et est utilisé pour étiqueter les répertoires racines des utilisateurs. Si le
préfixe utilisé est <c>staff</c>, les utilisateurs Linux qui seront associés à
cette identité auront leur répertoire racine étiqueté <c>staff_home_dir_t</c>.
</p>

<p>
Pour ajouter l'identité <c>test_u</c> contenant les rôles <c>staff_r</c> et
<c>sysadm_r</c> avec le préfixe <c>staff</c>&nbsp;:
</p>

<pre caption="Ajouter une identité SELinux">
# <i>semanage user -a -R 'staff_r sysadm_r' -P staff test_u</i>
</pre>

<note>
Pour pouvoir utiliser l'identité, il faut aussi ajouter une association avec un
login.
</note>

</body>
</subsection>
<subsection>
<title>Supprimer une identité SELinux</title>
<body>

<p>
Pour supprimer l'identité SELinux <c>test_u</c>&nbsp;:
</p>

<pre caption="Supprimer une identité SELinux">
# <i>semanage user -d test_u</i>
</pre>

<note>
Les identités SELinux créées par la politique (par opposition à celles créées
par l'infrastructure de gestion) ne peuvent pas être supprimées.
</note>

</body>
</subsection>
</section>
</sections>






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-02-23 23:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-23 23:31 [gentoo-commits] gentoo commit in xml/htdocs/proj/fr/hardened/selinux: hb-selinux-libsemanage.xml Camille Huot (cam)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox