Centos 7 – Apache 2.4 : Résoudre les accès 403 Forbidden

Centos 7 icone logo

Centos 7 RHEL

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 🙂

Je suis en train d’écrire mon mémoire pour valider mon Master.

Je suis développeur Fullstack J2E pour une PME sur Paris.

#Javascript #Ionic2 #PHP 7 #Slim3 #AutoIT #Linux #CentOS #Debian

Laisser un commentaire