NGINX avec une authentification Kerberos

Salut à tous, ça vous dirait d’apprendre à configurer NGINX avec une authentification Kerberos sous CentOS 7 ? C’est le sujet d’aujourd’hui, vu que j’ai eu besoin de le faire au boulot récemment. Il s’avère que c’est un poil plus suant qu’avec Apache. Bref on y va.

Kerberos ?

Pour ceux qui ne savent pas ce que c’est, kerberos est un protocole d’authentification. Sa particularité est de reposer sur des clés secrètes partagées entre le client et un serveur tiers (le KDC). Vous trouverez pas mal de documentations, plus ou moins exactes, sur le net (c’est un protocole qui date un peu et qui n’est pas forcément super intuitif non plus). On peut vulgariser son utilisation ainsi :

  • A l’ouverture de votre session, le KDC vous délivre un TGT (Ticket Granting Ticket) protégé par un secret partagé entre vous et le KDC.
  • Lorsque vous souhaitez accéder à un service authentifié en kerberos (genre un site web), vous demandez au KDC un TGS (Ticket Granting Service) pour ce service, à l’aide de votre TGT. Ce TGS est protégé (en partie) par la clé secrète du service (que le service partage de son côté avec le KDC)
  • Il vous suffit alors
Lire la suite

De la sécurité des headers HTTP

Sécurité des headers HTTP

Salut à tous, on m’a conseillé de jeter un œil au site securityheaders.com récemment. Celui-ci permet de contrôler la sécurité des headers HTTP d’un site. Et en testant le site, non seulement je me suis rendu compte qu’il m’en manquait quelques-uns. Mais aussi que je ne vous ai jamais fait un point sur la sécurité des headers HTTP. C’est l’occasion !

Quelle sécurité des headers HTTP ?

Bon je ne vais pas vous faire un dessin. Si vous ne savez pas ce qu’est un header HTTP allez faire un tour sur le net (genre ici ou ). Ils ne concernent pas le site à proprement parler (HTML, PHP, JS, CSS) mais la couche précédente du modèle OSI (HTTP). Ces headers permettent au client (le navigateur) et au serveur (nginx) d’échanger des informations relatives à la gestion du site. Comme par exemple : l’authentification, le comportement du cache, les timeouts de connexions ou encore les cookies. Une partie de ces headers concernent directement la sécurité de votre site. On va les détailler une par un ci dessous.

Quels en-têtes pour la sécurité ?

X-Frame-Options

On va commencer par un simple : X-Frame-Options. Ce header serveur permet d’indiquer au navigateur si … Lire la suite

Authentification par certificat client sur nginx

Authentification par certificat client sur nginx

Salut à tous, aujourd’hui on m’a demandé de regarder comment faire de l’authentification par certificat x509 sur un serveur Nginx. Je parle bien ici du client, pas du certificat serveur que vous obtenez avec let’s encrypt par exemple. Donc pour accéder au site web l’utilisateur devra présenter un certificat valide de l’AC que vous aurez défini.

Un certifi-quoi ?

Dans les faits, vous utilisez déjà des certificats x509 (délivrés par let’s encrypt, par exemple) pour authentifier votre site auprès de vos utilisateurs (et comme base pour chiffrer la connexion en HTTPS aussi). Ici ce qu’on souhaite faire c’est l’inverse, c’est à dire que le serveur va demander aux utilisateurs de s’authentifier, en présentant un certificat, avant de les laisser accéder au site.

Alors je suis désolé pour ceux qui ne captent rien aux certificats, ce n’est pas l’objet de cet article. Je pars du postula que si vous cherchez à authentifier vos clients par certificats, c’est que vous savez déjà ce que c’est… Sinon, je vous renvoi quand même (je suis sympa) vers ces sources (ici, , , et ) qui ne sont pas trop mauvaises. Mais ne rêvez pas trop, un bon cours sur … Lire la suite

Support TLS 1.3 pour nginx sous Debian 9

TLS 1.3 pour nginx sous Debian 9

Salut à tous, aujourd’hui on va prendre 15 minutes pour ajouter le support de TLS 1.3 pour nginx sous Debian 9 pour geekeries.org. En effet, la nouvelle version de TLS sortie en sortie en aout 2018 commence à faire son chemin et ajouter son support à geekeries.org est parfaitement inutile, pour l’instant, il est donc totalement indispensable de le faire.

TLS1.3 pourquoi ?

TLS1.3 est une nouvelle version du protocole de chiffrement des communications HTTPS. Il s’agit du dernier rejeton de la famille SSLv2, SSLv3, TLS 1.0, TLS 1.1, TLS 1.2 et TLS 1.3 (par ordre d’apparition). Comme toute nouvelle version d’un logiciel, TLS1.3 apporte des gains de performances, de sécurité et de fonctionnalité (plus de détails ici).

TLS1.3 et nginx

Alors la bonne nouvelle c’est que nginx supporte TLS1.3 depuis sa version 1.13. Il nous suffit donc, en théorie, de rajouter la directive ci-dessous dans le fichier de configuration /etc/nginx/nginx.conf, si vous avez une version ultérieure (et de mettre à jour sinon) :

ssl_protocols TLSv1.3 TLSv1.2;

Pourtant, quand je test cette configuration chez Qualys, on s’aperçoit que le support de TLS 1.3 n’est pas actif. Mais pourquoi donc me direz-vous ?

Simplement parce que nginx n’implémente … Lire la suite