Ceci est une ancienne révision du document !
Titre_page
grand1
lorem ipsum
Liens
++But : [Sécurisation|tag:Sécurisation] basique d'[Apache|tag:Apache].++ %''(mis à jour pour Ubuntu 10.04 + groupe user-web - 02/07/2010)'' % !!!! I) Propriétaire des fichiers !!! 1) Création d'un utilisateur propriétaire du site Nous allons ajouter un utilisateur système qui sera le propriétaire des fichiers du site. %Maj : Nous attribuons le groupe www-data à cet utilisateur (simplifiera la mise en ligne de nouveaux fichiers) ///[bash] adduser user-web --ingroup www-data /// !!! 2) Attribution des fichiers à l'utilisateur user-web ///[bash] chown -R user-web:www-data /var/www/ /// !!! 3) Droits sur le contenu du site En résumé, 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 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|http://doc.ubuntu-fr.org/droits|fr] % % !! A) Dossiers L'utilisateur user-web à tous les droits, et le groupe à le droit de lecture & exécution (requis pour pouvoir entrer dans le dossier) ///[bash] find /var/www/ -type d -exec chmod 750 {} \; /// Pour éditer les fichiers du site, il faudra donc se connecter avec cet utilisateur en sftp (ftp over ssh) -> sftp://dedi.anael.eu :-) !! B) Fichiers L'utilisateur user-web peut lire & écrire les fichiers du site, le groupe à seulement un droit de lecture. ///[bash] find /var/www/ -type f -exec chmod 640 {} \; /// !! C) 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|http://fr.wikipedia.org/wiki/Permissions_Unix|fr] %
%
!!!! IV) Configuration de la sécurité basique
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
!!! 1) 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 encore activée par défaut, toutefois je l'active afin de me protéger au maximum contre les conséquences d'une intrusion web réussie :)
!!! 2) ServerTokens
Configure les informations délivrées par Apache sur sa configuration au client.
%Cette option est bien évidement à mettre sur une valeur Prod
, renvoyant uniquement “Apache” et aucune autre indication de version !
%[Doc. Apache|http://httpd.apache.org/docs/2.2/mod/core.html#servertokens|en]
!!! 3) ServerSignature
Configure l'apparition d'une ligne d'information sur le type de serveur web (Apache) et le nom de domaine lors de l'affichage de messages générés par le serveur (page d'erreur, listing de fichiers, ...).
%Je trouve visuellement plus propre de ne pas afficher cette information, et met donc la valeur de l'option à “Off”.
%Les informations délivrées sur Apache sont contrôlées par l'option ServerTokens, pas de risque de fuite subtile par là :=)
%
%Ce qui donne :
///[apache]
# commentaires....
<Directory />
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
# commentaires....
ServerTokens Prod
# commentaires....
ServerSignature Off
///
%
!!!! V) Relancer Apache
Voila, notre serveur web est un minima adapté à nos besoins en performance & en sécurité.
%Afin que notre nouvelle conf soit prise en considération, on relance Apache en douceur :
///[bash]
service apache2 reload
///
Le reload permet de faire relire le fichier de configuration à Apache une fois que chaque process fils à finit son travail.
%Le restart stoppe immédiatement le process fils pour relancer le serveur (interruption du service pour le client)