SELinux permet de protéger et de gérer la sécurité d’un serveur. Il protège les ressources, peut modifier le mode SELinux actif du système et définir le mode SELinux par défaut.
Contexte SELinux
Gérer les règles de politique SELinux déterminant le contexte par défaut des fichiers et des répertoires avec la commande semanage fcontext
et appliquer le contexte défini par la politique SELinux aux fichiers et répertoires avec la commande restorecon
.
Politique générale
Politique générale de SELinux.
# setenforce 0 |
# setenforce 1 |
Pour que le paramètre soit persistant, il faut le changer directement dans /etc/selinux/config
et effectuer un reboot :
# cat /etc/selinux/config |
SELINUX=enforcing |
Cas du site Internet
Cas du site Internet dans un dossier non conventionnel.
# mkdir /myBlog |
# echo "Mon super Blog !" > /myBlog/index.html |
# vim /etc/httpd/conf/httpd.conf |
# systemctl enable httpd.service --now |
# curl http://192.168.1.113/index.html |
# semanage fcontext -a -t httpd_sys_content_t "/myBlog(/.*)?" |
# restorecon -R -v /myBlog |
# curl http://192.168.1.113/index.html |
Booleéns
Activer et désactiver les règles de politique SELinux avec la commande setsebool
, gérer la valeur persistante des valeurs booléennes SELinux avec la commande semanage boolean -l
et consulter les pages MAN se terminant par _selinux
pour trouver les informations utiles sur les valeurs booléennes SELinux.
Cas de l’accessibilité de tous les répertoires ~
Cas de l’accessibilité de tous les répertoires ~<user>.
En root :
# vim /etc/httpd/conf.d/userdir.conf |
<IfModule mod_userdir.c> |
# systemctl enable --now httpd |
En user :
$ mkdir /home/aline/public_html |
$ echo "Aline's personal Blog !" > /home/aline/public_html/index.html |
$ chmod 711 /home/aline/ |
$ curl http://192.168.1.113/~aline/index.html |
En root :
# getsebool -a | grep homedirs |
# setsebool -P httpd_enable_homedirs on |
En user :
$ curl http://192.168.1.113/~aline/index.html |
Exemple dans man setsebool
:
EXAMPLE
Enable container_use_devices boolean (will return to persistent value after reboot)
# setsebool container_use_devices 1
Persistently enable samba_create_home_dirs and samba_enable_home_dirs booleans
# setsebool -P samba_create_home_dirs=on samba_enable_home_dirs=on
Journaux
Utilisation des outils d’analyse des journaux SELinux et afficher des informations utiles.
$ curl http://192.168.1.110/~john/index.html |
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> |
Pour voir les récentes violations d’accès :
# ausearch -m AVC -ts today p |
- --- |
Pour filtrer les événements relatifs à SELinux dans le fichier /var/log/messages
et pour rapidement repérer les messages concernant SELinux dans les logs système sans avoir à parcourir tout le fichier.
Les logs donnent la commande à lancer pour cibler le problème :
# cat /var/log/messages | grep SELinux |
[...] |
Comme indiqué dans les log, lancement de sealert -l b3bfc527-326d-49f8-8e62-910ac6d13ab9
:
# sealert -l b3bfc527-326d-49f8-8e62-910ac6d13ab9 |
SELinux is preventing /usr/sbin/httpd from getattr access on the file /home/john/public_html/index.html. |
Également ici, le résultat donne des solution pour résoudre le problème :
If you want to allow httpd to enable homedirs |
Donc, lancement de setsebool -P httpd_enable_homedirs 1
:
# setsebool -P httpd_enable_homedirs 1 |
Et l’accès à la page web est autorisée :
# curl http://192.168.1.110/~john/index.html |
My Page ! This is John's Blog ! |
Ordre
Pour résoudre les problèmes liés à SELinux :
# ausearch -m AVC -ts today p // Récentes violations d’accès |
Documentation
Internet
MAN