Apache: obtenir l’IP source depuis un en-tête conditionel dans les logs

Dans le cadre d’un environnement web haute disponibilité il y a généralement des répartiteurs de charge HTTP comme HAproxy ou des reverse proxies comme Apache ou Nginx en frontal qui vont s’occuper de répartir la charge et/ou filtrer une partie des requêtes pour ménager les serveurs d’application de backend.

Le principal problème rencontré dans ce type d’architecture est que, généralement, le service web de frontend va masquer l’IP source du client, réduisant la tracabilité de celui-ci sur les backends. Nous allons ici partir du principe que le service web de frontend retransmet l’IP au backend via un en-tête HTTP nommé X-Real-IP. Continuer à lire

Apache: authentification par certificats

L’authentification par certificats permet de remplacer le traditionnel couple login/password dans un environnement doté de PKI.

Le certificat doit être reconnu par le serveur web, que ce soit par le biais du fait que le CA authentifie côté serveur et qu’on peut également filtrer les utilisateurs par données présentes dans le certificat.

Entre autres, cela permet également d’utiliser des supports externes au clavier pour reconnaître les utilisateurs, comme des lecteurs de carte à puce.

Nous allons voir ici comment activer l’authentification par certificat sous Apache.

Continuer à lire

Sécurité: Apache 2.4

Deux modules Apache 2.4 sont vulnérables.

  • mod_dav: l’envoi d’une requête MERGE vers une URI gérée par mod_dav_svn dont la source pointe vers une URI qui n’est pas configurée pour du DAV engendre un segfault.
  • mod_session_dbd: Assurez vous que le drapeau dirty est respecté lors de la sauvegarde des sessions, et que l’ID de la session est changée à chaque fois qu’une session change. Cela change le format des déclarations d’updatesession SQL. Les configurations existantes doivent être changées.

Si vous utilisez ces modules, assurez vous de les mettre à jour.

Sécurité: Apache 2.2

Le module Apache mod_rewrite (avant la version 2.2.25) écrit des données dans un fichier journal sans vérifier les caractères non imprimables. Ceci permet à un attaquand distant d’exécuter des requêtes HTTP arbitraires par le biais d’une requête HTTP contenant une séquence d’échappement pour un émulateur de terminal.

Nous vous recommandons fortement de mettre à jour ce module.