Retour à la liste des tutoriels
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
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.
Le système de droits de linux peut s'exprimer en 3 chiffres :
Chacun de ces chiffres est compris entre 0 et 7, décomposable ainsi :
Le chiffre correspond à la somme des valeurs assignées aux droits.
Doc. Ubuntu
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.
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 {} \;
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
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
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 !
Configure les informations délivrées par Apache sur sa configuration au client.
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
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, …).
Je ne trouve pas utile d'afficher cette information, et met donc la valeur de l'option à Off.
# commentaires.... <Directory /> AllowOverride None Order Deny,Allow Deny from all </Directory> # commentaires.... ServerTokens Prod # commentaires.... ServerSignature Off
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)