blabla :
Voici une sécurisation supplémentaire d’Apache pour un serveur web.
Elle est réalisable simplement à l’aide d’un script.
Celui-ci permet au seul ‘root’ de créer ou de modifier les dossiers/fichiers contenus dans /var/www.
Le reste du monde ne pourra même pas y accéder, ce qui met à l’abri de la lecture d’éventuels mots de passe dans certains fichiers de config.
En pratique :
- Copiez/collez le script ci-dessous dans un fichier que vous nommerez “www-securiser”.
Il sera placé dans le dossier /usr/local/bin de votre serveur et vous lui donnerez les droits 750.
Ce fichier devra être exécutable.
Vérifiez que le chemin /usr/local/bin soit bien dans le PATH pour réduire la commande à un simple :
Merci à Syam pour l’élaboration du script et pour les précisions supplémentaires qui suivent :
Attention ! Certaines applications web ont besoin de pouvoir écrire dans certains répertoires spécifiques. Si vous les installez manuellement à partir des sources il faudra prendre ça en compte.
Les répertoires concernés sont en principe indiqués dans la documentation d’installation de l’application web en question, que vous avez dû lire (ou devriez avoir lu).
Pour qu’elle fonctionne sans problème il vous faudra ajuster les droits de ces répertoires à la fin du script “www-securiser”.
Par exemple Drupal utilise le répertoire sites/default/files pour stocker des fichiers (temporaires ou ceux que vous uploadez à travers Drupal), il faudra donc rajouter la ligne suivante :
Certains fichiers dans ces répertoires ne devraient pas pouvoir être modifiés (par exemple les .htaccess). Utilisez votre bon sens et modifiez les droits de ces fichiers lorsque nécessaire :
# chmod -R g-w /var/www/chemin/vers/drupal/sites/default/files/.htaccess
Faites bien attention à l’ordre dans lequel vous écrivez ces commandes dans le script “www-securiser”, n’oubliez pas que c’est la dernière commande exécutée qui a raison
SCRIPT
[code]#!/bin/sh
Nom du script : www-securiser
Emplacement : /usr/local/bin
Droits : 750.
Fonction : une fois les interventions effectuées, modifier le propriétaire et le groupe
#+ des nouveaux fichiers/dossiers contenus dans /var/www, puis en modifier les droits
#+ afin que /var/www soit de nouveau sécurisé.
chown -R root:www-data /var/www
find /var/www -type f -print0 | xargs -0 chmod 640
find /var/www -type d -print0 | xargs -0 chmod 750
Dans les lignes suivantes, vous indiquerez les chemins des éventuels fichiers/dossiers
#+ qui nécessitent d’être ouverts en permanence comme expliqué dans le “blabla”.
Vous pourrez ajouter autant de lignes que d’applications concernées
chmod -R g+w /var/www/chemin/vers/dossier/X-X-X (ligne(s) à compléter et à décommenter)
Selon le même principe, vous exclurez des précédents dossiers les fichiers/dossiers
#+ qui doivent, eux, rester invisibles de l’extérieur.
chmod -R g-w /var/www/chemin/vers/dossier/X-X-X/fichier_à_cacher (ligne(s) à compléter et à décommenter)
Reportez-vous au “blabla” pour un exemple concret avec l’application ‘Drupal’
exit[/code]
RÉCAPITULATIF :
[ul]
[li]bloquer l’ensemble de /var/www avec la commande :
[li]Pour intervenir, débloquer les droits des répertoires de cache, upload etc. de façon à le faire en tant que simple utilisateur, avec la commande :
À noter que la précédente commande peut être réduite à # chown -R userftp /var/www
À noter que l’on peut en faire un script plus mémorisable comme, par exemple : www-liberer
.[/li]
[li]Une fois l’intervention effectuée, sécurisez de nouveau avec la commande :