Authentification HTTP avancée sur Nginx et Apache

closeCet article a été publié il y a 8 ans 5 mois 22 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Un peu de nourriture pour Sysadmin, ça vous dit ? Julien vous a rappelé comment protéger simplement un emplacement de votre serveur Web si vous utilisez le serveur Web Nginx. Cette protection est simple, mais a ce souci de loger tout le monde à la même enseigne. On va donc regarder comment gérer plus de situations, et notamment éviter de demander un mot de passe si vous avez la bonne adresse IP.

Apache

Allez, on va commencer par le serveur Web qui reste le plus utilisé encore à l’heure actuelle. Pour rappel pour protéger un emplacement par mot de passe, on placera l’authentification de la façon suivante :

Et donc votre mot de passe doit se trouver dans ce fichier .htpasswd. Mais maintenant, tout le monde y compris vous doit rentrer un mot de passe à chaque nouvelle visite. Voyons donc comment faire en sorte que vous seul (en tout cas votre adresse IP) soit autorisé à accéder sans avoir besoin de saisir le mot de passe en question. Il faudra quelques lignes de plus :

Qu’a-t-on donc ajouté ? On force le serveur à interdire par défaut pour tout le monde (Deny All). On autorise ensuite une adresse IP, puis on rajoute le mot de passe. Et ensuite, la commande magique : Satisfy Any. Cette directive permet d’autoriser l’accès si n’importe quelle condition (any), IP ou mot de passe, est remplie. Et on peut ajouter ça aussi bien dans la configuration du VirtualHost qu’un fichier .htaccess (dans la mesure où Apache est configuré pour les lire).

Nginx

Une fois de plus, Nginx simplifie un peu les choses, et pourtant, la syntaxe est très proche :

J’ai pris un contexte location en exemple, n’importe lequel conviendra (il est possible de placer ce genre de configuration au niveau http ou server également). Contrairement à Apache, on place satisfy dès le début. On ajoute l’adresse IP, puis le mot de passe, et donc, même motif même punition que pour Apache, si on la bonne adresse, on n’a pas besoin de renseigner un mot de passe. Moins de ligne, plus de lisibilité, par contre, contrairement à Apache, on est obligé de modifier la configuration a minima du VirtualHost.

Je vous laisse par contre le soin de trouver les possibilités de configuration aussi bien pour Apache qu’Nginx pour le cas que vous aurez choisi. Je montre la voie, je vous laisse la parcourir 🙂