Outils pour utilisateurs

Outils du site


informatique:linux:selinux

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
informatique:linux:selinux [2010/08/30 18:11]
benoit
informatique:linux:selinux [2018/09/06 19:10] (Version actuelle)
Ligne 54: Ligne 54:
  
 ==== Gestion des utilisateurs SELinux ==== ==== Gestion des utilisateurs SELinux ====
-A savoir :!: : Un utilisateur est mappé sur un utilisateur SELinux. Un utilisateur SELinux est confiné dans un rôle(Les rôles sont abordés plus bas)+A savoir :!: : Un utilisateur est mappé sur un utilisateur SELinux. Un utilisateur SELinux est confiné dans un rôle ou plusieurs rôle (voir section suivante)
  
 Pour connaitre le mapping **Utilisateur** et **Utilisateur SELinux** : Pour connaitre le mapping **Utilisateur** et **Utilisateur SELinux** :
Ligne 91: Ligne 91:
   * L'​utilisateur **user_u** ne peut prendre que le rôle **user_r**   * L'​utilisateur **user_u** ne peut prendre que le rôle **user_r**
  
-Un utilisateur qui souhaite avoir les droits **root** ​ sur le système, doit d'une part passer **root** via la commande **''​su -''​** mais également changer de rôle via la commande **newrole** si son compte SE Linux le permet (**staff_u** est autorisé, mais **user_u** ne l'est pas). Un utilisateur mappé sur **staff_u**,​ devra suivre la procédure suivante pour passer **root** :+Un utilisateur qui souhaite avoir les droits **root** ​ sur le système, doit d'une part passer **root** via la commande **''​su -''​** mais également changer de rôle via la commande **''​newrole''​** si son compte SE Linux le permet (**staff_u** est autorisé, mais **user_u** ne l'est pas). Un utilisateur mappé sur **staff_u**,​ devra suivre la procédure suivante pour passer **root** :
   su -    su - 
   newrole -r sysadm_r   newrole -r sysadm_r
Ligne 101: Ligne 101:
   allow sysadm_r user_r;   allow sysadm_r user_r;
  
-L'​utilisateur ​SELinux ​ayant le rôle **sysadm_r** peut intervenir sur les objets nécessitant le rôle **user_r**. Attention, à ne pas confondre avec le rôle que peut prendre un utilisateur. Par exemple, L'​utilisateur **sysadm_u** peut pas prendre le rôle de **user_u**.+L'​utilisateur ​SE Linux ayant le rôle **sysadm_r** peut intervenir sur les objets nécessitant le rôle **user_r**. Attention, à ne pas confondre avec le rôle que peut prendre un utilisateur. Par exemple, L'​utilisateur **sysadm_u** peut pas prendre le rôle de **user_u**.
  
 ==== Types et transitions ==== ==== Types et transitions ====
Ligne 160: Ligne 160:
   semanage port -d -t http_port_t -p tcp 81   semanage port -d -t http_port_t -p tcp 81
  
-==== Autorisations particulières ==== 
-Pour beaucoup de cas communs, il est possible d'​activer des droits particuliers à l'aide de booléens. Les booléens sont des paramètres que l'on peut activer ou désactiver selon l'​utilisation particulière qu'on fait des services protégés. 
  
-Pour lister les autorisations particulières qui peuvent être autorisées lancer l'une des commandes suivantes : 
-  getsebool -a 
-  semanage boolean -l 
-  ​ 
-SE Linux ne permet pas pardéfaut à un utilisateur **sysadm_u** de se connecter directement en SSH. Pour que SE Linux permette cette action : 
-  setsebool ssh_sysadm_login on 
  
 ==== Labelliser les objets ==== ==== Labelliser les objets ====
Ligne 192: Ligne 184:
   reboot   reboot
  
-==== Auditer les règles ====+==== Auditer les règles ​et ajouter des autorisations ​====
 Auditer les règles permet de régler un certain nombre le problèmes d'​accès lié à SELinux. Auditer les règles permet de régler un certain nombre le problèmes d'​accès lié à SELinux.
  
Ligne 211: Ligne 203:
  
 Pour créer des modules de règles à partir des interdictions suivre les instructions suivantes : Pour créer des modules de règles à partir des interdictions suivre les instructions suivantes :
-  mkdir -p /​etc/​selinux/​default/​src/​policy +  mkdir -p /​etc/​selinux/​default/​src/​policy ​&& ​cd /​etc/​selinux/​default/​src/​policy 
-  ​cd /​etc/​selinux/​default/​src/​policy+  semodule -R
   cat /​var/​log/​audit/​audit.log |audit2allow -l -m local >> local.te   cat /​var/​log/​audit/​audit.log |audit2allow -l -m local >> local.te
   checkmodule -M -m -o local.mod local.te   checkmodule -M -m -o local.mod local.te
   semodule_package -o local.pp -m local.mod   semodule_package -o local.pp -m local.mod
   semodule -i local.pp   semodule -i local.pp
 +  semodule -l
 +  sesearch --allow
  
 Description des actions réalisées ci-dessus : Description des actions réalisées ci-dessus :
   - On crée un répertoire pour stocker nos fichiers sources SELinux et on se positionne dedans   - On crée un répertoire pour stocker nos fichiers sources SELinux et on se positionne dedans
-  - On affiche les logs ''/​var/​log/​audit/​audit.log''​ et on génère un fichier ​des descriptions ​des nouvelles règles+  ​- On recharge les modules SE Linux... Il faut attendre quelques minutes, voir quelques heures, pour laisser l'​audit relever des interdictions. 
 +  ​- On affiche les logs ''/​var/​log/​audit/​audit.log''​ et on génère un fichier ​de description ​des nouvelles règles ​à partir des interdictions relevées depuis le dernier rechargement des modules SE Linux.
   - On compile le fichier ''​local.te''​ pour en faire un module   - On compile le fichier ''​local.te''​ pour en faire un module
   - On crée le paquetage SELinux ''​local.pp''​   - On crée le paquetage SELinux ''​local.pp''​
   - On installe le paquetage SELinux ''​local.pp''​   - On installe le paquetage SELinux ''​local.pp''​
 +  - On vérifie que le module **local** est bien chargé
 +  - On analyse si nos nouvelles règles sont bien intégrées
  
 **Attention :!: Vérifiez bien le contenu de ''​local.te''​ et modifiez le manuellement si besoin, car il se peut que vous ne vouliez pas autoriser certaines règles.** **Attention :!: Vérifiez bien le contenu de ''​local.te''​ et modifiez le manuellement si besoin, car il se peut que vous ne vouliez pas autoriser certaines règles.**
  
-Vérifiez que le module ​**local** ​est bien chargé ​+Exemple d'un fichier ​**local.te** : 
-  ​semodule -l+  ​module local 1.0; 
 +   
 +  require { 
 +        type semanage_t;​ 
 +        type postfix_pickup_t;​ 
 +        type httpd_sys_content_t;​ 
 +        type crond_t; 
 +        type selinux_config_t;​ 
 +        class capability sys_chroot;​ 
 +        class dir { rename search }; 
 +  } 
 +   
 +  #​============= crond_t ============== 
 +  allow crond_t httpd_sys_content_t:​dir search; 
 +   
 +  #​============= postfix_pickup_t ============== 
 +  allow postfix_pickup_t self:​capability sys_chroot;​ 
 +   
 +  #​============= semanage_t ============== 
 +  allow semanage_t selinux_config_t:​dir rename;
  
-Vérifier que les nouvelles ​autorisations sont bien prises en charge ​à l'aide de la commande ​+   
-  ​sesearch ​--allow+ 
 +On peut distinguer 3 parties dans le fichier : 
 +  * l'​entête 
 +  * Les pré-requis 
 +  * Les règles 
 + 
 +**Entête : **L'​entête doit comporter le nom valide du module local et la version : **module local 1.0;** 
 + 
 +**Pré-requis** : Il faut déclarer les type et les class nécessaires à la création du module : 
 +  * type prérequis : **httpd_sys_content_t,​ postfix_pickup_t,​ crond_t, semanage_t, selinux_config_t** et qu'il faut un certain nombre de class. 
 +  * class pré-requises : **capability sys_chroot**,​ **dir { rename search };** 
 + 
 +**Règles** : Définir ​les autorisations. __Si les types et class ne sont pas déclarés dans les prérequis, les règles ne pourront pas être créées__:​ 
 +  * **allow crond_t httpd_sys_content_t:​dir search;** 
 +  * **allow postfix_pickup_t self:​capability sys_chroot;​** 
 +  * **allow semanage_t selinux_config_t:​dir rename;** 
 + 
 +==== Autorisations particulières ==== 
 +Pour beaucoup de cas communs, il est possible d'​activer des droits particuliers ​à l'aide de booléens. Les booléens sont des paramètres que l'on peut activer ou désactiver selon l'​utilisation particulière qu'on fait des services protégés. 
 + 
 +Pour lister les autorisations particulières qui peuvent être autorisées lancer l'une des commandes suivantes ​
 +  ​getsebool ​-
 +  semanage boolean ​-
 +   
 +SE Linux ne permet pas pardéfaut à un utilisateur **sysadm_u** de se connecter directement en SSH. Pour que SE Linux permette cette action : 
 +  setsebool ssh_sysadm_login on
  
 ===== Quelques conseils pour changer vos habitudes après activation de SELinux ===== ===== Quelques conseils pour changer vos habitudes après activation de SELinux =====
Ligne 259: Ligne 300:
  
 ===== Documentation et articles ===== ===== Documentation et articles =====
-Ci-dessous, tous les articles et tutoriels qui m'​ont ​aider à créer cette page sur SELinux :+Ci-dessous, tous les articles et tutoriels qui m'​ont ​aidé à créer cette page sur SELinux :
   * Voici un article où le concept de SE Linux est très bien expliqué : [[http://​www.linuxcertif.com/​doc/​Comprendre%20SELinux/​]]   * Voici un article où le concept de SE Linux est très bien expliqué : [[http://​www.linuxcertif.com/​doc/​Comprendre%20SELinux/​]]
   * Documentation de SE Linux sous RedHat : {{informatique:​linux:​manage-selinux-rhel5.pdf}}   * Documentation de SE Linux sous RedHat : {{informatique:​linux:​manage-selinux-rhel5.pdf}}
informatique/linux/selinux.1283184679.txt.gz · Dernière modification: 2018/09/06 19:00 (modification externe)