Ceci est une ancienne révision du document !
Sécurisation basique d'Apache
Retour à la liste des tutoriels
Propriétaire des fichiers
Création d'un utilisateur propriétaire du site
Nous allons créer un nouvel utilisateur système qui sera le propriétaire des fichiers du site.
Cet utilisateur fera partie du groupe www-data (utilisateur exécutant apache) afin de faciliter la mise en ligne ultérieure de nouveaux fichiers.
adduser user-web --ingroup www-data
Attribution des fichiers à l'utilisateur user-web
chown -R user-web:www-data /var/www/
On définit comme propriétaire des fichiers des sites web l'utilisateur que l'on a créé précédemment.
Droits sur le contenu du site
Le système de droits de linux peut s'exprimer en 3 chiffres :
- les droits du propriétaire du fichier (moi)
- les droits des membres du groupe du propriétaire du fichier (ma famille)
- et les droits des autres
Chacun de ces chiffres est compris entre 0 et 7, décomposable ainsi :
- Droit de lecture sur le fichier : 4 points
- Droit d'écriture sur le fichier : 2 points
- Droits d'exécution du fichier : 1 point
- Aucun droit : 0 point
Le chiffre correspond à la somme des valeurs assignées aux droits.
Doc. Ubuntu
Dossiers
L'utilisateur user-web à tous les droits, et le groupe à le droit de lecture & exécution (requis pour pouvoir entrer dans le dossier)
find /var/www/ -type d -exec chmod 750 {} \;
Je trouve tous les répertoires (directory) et leur applique un chmod de 750.
Fichiers
L'utilisateur user-web peut lire & écrire les fichiers du site, le groupe à seulement un droit de lecture.
find /var/www/ -type f -exec chmod 640 {} \;
Ecriture par le biais d'un script du site
Les configurations proposées ci dessus ont un avantage important : si un pirate réussi à prendre le contrôle de votre site par une quelconque faille, il sera bloqué dans ses écritures et / ou modifications de fichiers !
Toutefois, nous avons parfois besoin d'envoyer un fichier sur notre site par un formulaire d'upload, ou de modifier un fichier à la volée.
Si vous devez écrire dans un dossier au travers du site, donnez un chmod 770 uniquement au dossier concerné.
Si vous devez écrire dans un fichier au travers du site, donnez un chmod 660 uniquement au fichier concerné.
Doc. chmod
Configuration de la sécurité basique d'Apache
Actuellement notre serveur Apache envoi beaucoup trop d'informations sur sa version aux clients.
Pour résoudre cela, éditons le fichier /etc/apache2/conf.d/security
Directory /
L'option permet une autorisation d'accès aux dossiers du système par un principe de liste blanche uniquement : On interdit tout par défaut, sauf ce qui est autorisé.
Cette option n'est pas activée par défaut. Je l'active afin de me protéger au maximum contre les conséquences d'une intrusion web réussie !
ServerTokens
Configure les informations délivrées par Apache sur sa configuration au client.
- Full : Apache/2.2.16 (Debian) Server at anael.eu Port 80
- OS : Apache/2.2.16 (Debian) Server at anael.eu Port 80
- Minimal : Apache/2.2.16 Server at anael.eu Port 80
- Minor : Apache/2.2 Server at anael.eu Port 80
- Major : Apache/2 Server at anael.eu Port 80
- Prod : Apache Server at anael.eu Port 80
Je définit la valeur à Prod afin de retourner le moins d'informations possible sur l'OS et la version d'Apache.
Ceci permet d'éviter les attaques ciblées qui sont effectuées lorsqu'un vulnérabilité est découverte sur une version particulière d'Apache.
Doc. Apache
ServerSignature
Affiche les informations configurée par ServerTokens lors de l'affichage de messages générés par le serveur (page d'erreur, listing de fichiers, …).
- Email : Apache Server at anael.eu Port 80 avec un lien vers admin@an*el.eu si l'on clique sur “anael.eu”
- On : Apache Server at anael.eu Port 80
- Off : rien n'est affiché
Je ne trouve pas utile d'afficher cette information, et met donc la valeur de l'option à Off.
Fichier de configuration final
- security
# commentaires.... <Directory /> AllowOverride None Order Deny,Allow Deny from all </Directory> # commentaires.... ServerTokens Prod # commentaires.... ServerSignature Off
Relancer Apache
La protection du serveur web a été renforcée. Afin que notre nouvelle conf soit prise en considération, on relance Apache en douceur :
service apache2 reload
L'option reload permet de faire relire le fichier de configuration à Apache une fois que chaque process fils à finit son travail.
L'option restart stoppe immédiatement les process fils pour relancer le serveur (interruption du service pour le client)