Chapitre 4. Configuration de SELinux pour les applications et les services avec des configurations non standard
Lorsque SELinux est en mode d'application, la politique par défaut est la politique ciblée. Les sections suivantes fournissent des informations sur la mise en place et la configuration de la stratégie SELinux pour divers services après avoir modifié les valeurs par défaut de la configuration, telles que les ports, l'emplacement des bases de données ou les autorisations du système de fichiers pour les processus.
Vous apprenez à modifier les types SELinux pour les ports non standard, à identifier et à corriger les étiquettes incorrectes pour les changements de répertoires par défaut et à ajuster la politique à l'aide des booléens SELinux.
4.1. Personnalisation de la politique SELinux pour le serveur HTTP Apache dans une configuration non standard Copier lienLien copié sur presse-papiers!
Vous pouvez configurer le serveur HTTP Apache pour qu'il écoute sur un port différent et pour qu'il fournisse du contenu dans un répertoire autre que celui par défaut. Pour éviter les refus SELinux qui en découlent, suivez les étapes de cette procédure pour ajuster la politique SELinux de votre système.
Conditions préalables
-
Le paquet
httpd
est installé et le serveur HTTP Apache est configuré pour écouter sur le port TCP 3131 et pour utiliser le répertoire/var/test_www/
au lieu du répertoire par défaut/var/www/
. -
Les paquets
policycoreutils-python-utils
etsetroubleshoot-server
sont installés sur votre système.
Procédure
Démarrez le service
httpd
et vérifiez l'état :Copy to Clipboard Copied! Toggle word wrap Toggle overflow La politique SELinux suppose que
httpd
fonctionne sur le port 80 :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Modifier le type SELinux du port 3131 pour qu'il corresponde au port 80 :
semanage port -a -t http_port_t -p tcp 3131
# semanage port -a -t http_port_t -p tcp 3131
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Recommencer
httpd
:systemctl start httpd
# systemctl start httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cependant, le contenu reste inaccessible :
wget localhost:3131/index.html
# wget localhost:3131/index.html ... HTTP request sent, awaiting response... 403 Forbidden ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Trouvez la raison à l'aide de l'outil
sealert
:sealert -l "*"
# sealert -l "*" ... SELinux is preventing httpd from getattr access on the file /var/test_www/html/index.html. ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Comparez les types SELinux pour le chemin standard et le nouveau chemin à l'aide de l'outil
matchpathcon
:matchpathcon /var/www/html /var/test_www/html
# matchpathcon /var/www/html /var/test_www/html /var/www/html system_u:object_r:httpd_sys_content_t:s0 /var/test_www/html system_u:object_r:var_t:s0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Modifiez le type SELinux du nouveau répertoire de contenu
/var/test_www/html/
pour qu'il corresponde au type du répertoire par défaut/var/www/html
:semanage fcontext -a -e /var/www /var/test_www
# semanage fcontext -a -e /var/www /var/test_www
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Réétiqueter le répertoire
/var
de manière récursive :restorecon -Rv /var/
# restorecon -Rv /var/ ... Relabeled /var/test_www/html from unconfined_u:object_r:var_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 Relabeled /var/test_www/html/index.html from unconfined_u:object_r:var_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vérifiez que le service
httpd
est en cours d'exécution :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez que le contenu fourni par le serveur HTTP Apache est accessible :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow