Ci-dessous, les différences entre deux révisions de la page.
| 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:13] benoit |
informatique:linux:selinux [2018/09/06 19:10] (Version actuelle) |
||
|---|---|---|---|
| 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 -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 | ||
| ===== 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}} | ||