Sécurisation basique d'Apache

Retour à la liste des tutoriels

Ensemble de configurations faciles qui permettent d'augmenter la sécurité d'Apache.


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.

Pour éditer les fichiers du site, il faudra donc se connecter avec cet utilisateur en sftp (ftp over ssh, port 22)

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.

Les différentes valeurs possibles sont :
  • 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, …).

Les différentes valeurs possibles sont :
  • 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)


Liens