Ceci est une ancienne révision du document !


Titre_page

Retour à la liste des tutoriels

Présentation rapide.
Prérequis
  • Aucun prérequis pour ce tutoriel.


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)

!!!! V) Groupe par défaut de user-web Un utilisateur user-web a été créé il y a quelques billets de cela pour gérer tous les sites web. %Seulement par défaut son groupe primaire était user-web (user-web:user-web). %Ce qui signifie que pour tout fichier qu'il crée, apache (www-data:www-data) n'a pas de droits sur le fichier ! (On utilise le groupe pour donner les droits à apache ;-)). %J'ai donc décidé de changer le groupe par défaut de user-web vers www-data. %Le plus simple à été de supprimer l'utilisateur / le recréer dans le bon groupe :-) (aucune perte de données) /[bash] deluser user-web adduser user-web –ingroup www-data / Et pour bien faire, on redonne le répertoire /home/user-web à notre nouvel utilisateur avec son nouveau groupe : /[bash] chown -R user-web:www-data /home/user-web/ / [Doc.|http://www.misfu.com/gestion-utilisateurs-linux.html|fr] % % %%%Voila quelques modifications de faites qui me faciliteront la tâche pour la suite !