
J’ai lu sur un blog en vadrouillant : « You choose Centos, you choose SeLinux enabled by default ». Et c’est bien vrai.
J’ai choisi la distribution Centos pour deux raisons : la première c’est la sécurité, la seconde c’est que je le trouve plus facile à maintenir que Debian (Jessie à l’heure actuelle), enfin passons.
Installation et sécurisation d’Apache / httpd
J’ai du passer au moins 2 gros jours dessus, afin de comprendre d’où venait le problème et comment le corriger.
Le problème dans mon cas, c’est que SELinux empêchait Apache de desservir mes fichiers, même en lecture : d’où une erreur 403, accès interdit.
Lorsque que vous avez fini d’installer vos différents CMS, tout bon développeur lance ces deux commandes :
chmod -R 755 /var/www
chown -R http:httpd /var/www
Trouver le groupe d’Apache
httpd est relatif à l’utilisateur / groupe d’Apache depuis sa configuration dans :
nano /etc/httpd/conf/httpd.conf
Cherchez « User » ou « Group« .
Encore plus simple, on peut chercher quel processus écoute sur le port 80 :
# netstat -tulp | grep 'http\|80'
tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN 497/httpd
tcp 0 0 0.0.0.0:https 0.0.0.0:* LISTEN 497/httpd
SELinux protège les services web
Si la commande au dessus a résolu votre problème, bien joué. Vous êtes peut-être sous Debian, peut-être pas.
La commande suivante vous permettra de savoir si SELinux est activé.
# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 30
Si SELinux est en mode « enforcing », alors SELinux est activé. Pour voir si il vous cause des soucis, désactivez-le, puis testez à nouveau votre URL.
setenforce 0
Si cela fonctionne, souriez et autorisez Apache à servir du contenu web :
chcon -R -t httpd_sys_rw_content_t /var/www/
Puis réactivez SELinux.
setenforce 1
SELinux n’est pas responsable ?
Si ce n’était pas votre problème, vous allez devoir creuser un peu, je vous donne quelques pistes à suivre :
Vérifiez les logs de votre domaine
tail -f /var/log/httpd/domain/error.log
Rechargez la page qui plante, et déchiffrez vos logs. « Denied by server configuration » ou « You don’t have permission to access on this server. » signifient souvent une directive
Options -Indexes
Ou bien
Deny from all
Demandez de l’aide en commentaire si besoin 🙂
Georges LAWSON
Salut. Très brillant exposé surtout que des ressources pareilles sont rares sur le web. J’ai fait toutes les étapes mais ça ne fonctionne pas. Peux tu stp mieux expliquer les dernières recommendation après avoir lu le error.log?
• Lien vers le commentaire
Alex Soyer Auteur(e) de l'article
Salut !
Merci 🙂
Si tu as essayé de désactiver SELinux (avec setenforce 0) et que tu as toujours des erreurs 500, essaye de regarder dans les logs si tu as un indice dedans.
tail -n 50 /var/log/httpd/domain/error.log
Poste le contenu de ceci voir ?
• Lien vers le commentaire