Authentik
Objectifs
- Installer et exposer Authentik
- Paramétrer le Multi-Facteur
- Protéger une app native ou via reverse proxy
Authentik est un outil d'authentification unique permettant de vous logger une seule fois sur les plateformes compatibles OpenID. Il permet également de sécuriser l'accès aux services que vous exposez, en s'injectant via SWAG aux requetes vers vos services.
Ainsi, si vous exposez Dockge sur internet via dockge.mondomaine.fr
, au moment de l'accès à cette page, vous tomberez sur une page de login d'authentik. Si vous avez déjà été identifié sur un autre service sécurisé par authentik auparavant, alors vous serez déjà identifié. cela permet d'avoir à vous identifiez qu'une seule fois par jour sur l'ensemble des services protégés par authentik.
Authentik permet aussi d'utiliser le multi-facteur, notamment par TOTP (code généré par une application d'authentification de votre choix. Enfin, authentik permet aussi de se connecter directement via un compte Microsoft ou Google, si vous avez configuré une application d'un de ces services.
C'est une bonne manière de se passer de VPN pour exposer vos services, et d'exposer des services qui ne sont pas protégés par du MFA voir pas protégés par des login (comme le dashboard de swag).
Authentik dipose d'une doc très fournie et des fabuleux tuto de Cooptonian. Ici, nous montrerons juste les bases, avec l'exemple de l'exposition de Dockge.
Deux modes principaux sont à connaitre:
- Le premier permet à une application qui dispose nativement d'une intégration avec du SSO compatible OpenID de se connecter directement à Authentik. C'est la solution à privilégier car elle permet de laisser l'application décider de ce qui est public et de ce qui est protégé.
- Le second permet d'injecter une authentification via authentik grace à SWAG avant d'arriver sur le service désiré.
Les deux modes son configurables application par application.
Installation
Structure des dossiers :
Créez les dossiers :
Positionnez vous dans le dossier authentik
et générez un mot de passe et une clé secrete que l'on va intégrer dans le .env :
Info
Afin de générer la clé, nous avons créé les dossiers en amont du déploiement via Dockge. Dockge vous empechera de créer une stack du meme nom dans ces dossiers s'il n'existe pas de compose.yml
.
Il faut donc créer un compose.yml
vide afin que ce dernier la reconnaisse comme existante dans les stacks inactives :
Ouvrez dockge, et cherchez "authentik" dans les stack inactives.
Nommez la stack authentik et collez la configuration suivante, en changeant les chiffres de {AUTHENTIK_TAG:-2024.2.3}
par la dernière version de Authentik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
|
Note
Ici nous partons du principe que le réseau de Swag est swag_default
.
Dans le point .env
, les variables PG_PASS
et AUTHENTIK_SECRET_KEY
sont déjà remplies.
Déployez la stack.
Vous pouvez alors commencer le set-up d'authentik en tappant http://ipduserveur:9000/if/flow/initial-setup/
.
Attention
Il est conseillé de créer un nouveau compte admin, et de désactiver le compte admin de base akadmin
.
Exposer authentik
Pour être utilisable hors de chez vous, vous devez exposer authentik.
Au préalable
Nous partons du principe quer vous avez créé dans votre zone DNS un sous domaine du type auth.mondomaine.fr
avec pour CNAME mondomaine.fr
et, à moins que vous utilisiez Cloudflare Zero Trust, vous avez déjà redirigé le port 443
de votre box vers le 443
de votre serveur dans les règles NAT.
Ouvrez le fichier authentik-server.conf
.
Astuce pour les allergiques au terminal
Vous pouvez utiliser File Browser pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
Vérifiez que dans chaque cas les variables ci-dessous sont correctes :
Si ce n'est pas le cas, passez en mode modification en tapant i
et éditez les. Sauvegardez et quittez en tapant sur Echap
puis :x
.
Créez le fichier auth.subdomain.conf
Appuyez sur i
pour rentrer en mode modification puis collez la configuration suivante :
Sauvegardez et quittez en appuyant sue Echap
puis en tapant :x
Et voilà ! Vous pouvez accéder à authentik via https://auth.mondomaine.fr
Activer le multifacteur
Tout l'intérêt de authentik c'est de disposer du multifacteur pour toutes les apps que l'on protègera.
- Rendez vous sur
https://auth.mondomaine.fr
- Identifiez-vous
- Rendez-vous dans paramètres
- Cliquez sur la section MFA
- Cliquez sur s'inscrire
- Choisissez une méthode comme TOTP device ( dans ce cas vous devrez utilisez une app d'authentification telle que Google Authenticator par exemple)
- Suivez les étapes
Et voilà, vous serez invité à saisir un code à usage unique à chaque connexion.
Protéger une app native
Authentik est compatible nativement avec un certain nombre d'application, vous retrouverez la liste et le support ici
Protéger une app par reverse proxy
Swag permet d'intercaler la page d'authentik entre la requête et l'accès à votre service. Pour cela il va falloir :
- Configurer le service d'authentification dans authentik.
- Configurer le fichier proxy du domaine pour que swag puisse intercaler la page.
Pourquoi le faire alors que Dockge a déjà une page d'authentification ? Tout simplement parce que l'authentification HTTP utilisée par Dockge est faible. Avec Authentik, vous aurez directement une authentification forte par MFA, et vous serez loggé automatiquement à toutes vos apps déjà protégées par authentik. Cela permet de sécuriser l'accès à Dockge et aux autres apps que vous protégerez, sans avoir à passer par un VPN.
Configuration de Authentik
- Rendez vous dans Authentik
- Allez dans le panneau d'administration
- Sélectionnez application puis créer avec l'assistant
- Renseignez les champs comme suit :
- Puis à l'étape suivante choisissez "Transférer l'authentification (application unique)" et éditez comme suit (attention aux flow, c'est important) :
- Ensuite, allez dans le menu à gauche dans Avant-poste et éditez authentik Embedded Outpost
- Ajoutez l'application
dockge
en la faisant passer à droite et validez.
Configuration de SWAG
Ensuite rendez-vous dans le fichier dockge.mondomaine.fr
.
Puis entrez en modification en appuyant sur i
et enlevez les #
des deux lignes #include /config/nginx/authentik-server.conf;
.
Appuyez sur Echap
puis tapez :x
et appuyez sur Entrée
pour sauvegarder et quitter.
Et voilà ! En tapant https://dockge.mondomaine.fr
, vous tomberez à présent sur la mire d'authentification de authentik.
Astuce
Dans Dockge, dans les paramètres, vous pouvez désactiver l'authentification de Dockge afin de ne pas avoir à vous identifier deux fois. Attention, cela voudra dire que si vous avez exposé un port sur votre réseau local, il n'y aura plus aucune authentification.
Note
Vous pouvez répétez l'opération pour chaque application que vous souhaitez protéger (si elle ne dipose pas d'intégration directe avec Authentik).
Voilà votre nouvelle architecture :
Protéger un service sur un serveur distant
Dans le cas d'une application native (via OAuth 2.0 ou autre), rien ne change.
Dans le cas d'une application non native à protéger derrière un reverse proxy, vous devrez déployer un avant-poste. Un avant-poste est un conteneur qui jouera le rôle de proxy local, c'est à dire que c'est vers ce conteneur que les requêtes d'authentification de vos applications seront redirigées. C'est le seul qui est autorisé à dialoguer avec l'API de votre instance authentik.
Prérequis
Pour déployer cet avant-poste, vous aurez besoin :
Ce conteneur redirigera ensuite les requetes vers votre instance Authentik principale, à travers le web (ou votre réseau local). Le serveur executera les controle et renverra la réponse à l'avant-poste, qui bloquera ou non la connexion à l'app protégée.
Configuration d'Authentik
Créez vos fournisseurs et applications comme nous l'avons vu plus haut.
Puis, dans votre panneau admin, allez dans la rubrique Applications > Avant-postes, puis créez un nouvel avant-poste.
Remplissez comme suit :
Champs | Valeur |
---|---|
Nom |
Le nom que vous souhaitez |
Type |
Proxy |
Intégration |
Laissez vide |
Applications |
Sélectionnez le ou les applications que vous avez créées précédemment |
Dans la section Paramètres avancés
, supprimez l'existant, et complétez comme suit :
Enrtegistrez et quittez.
Sur l'écran affichant les avant-postes créés, vous verrez le nouvel avant-poste que vous venez de créer. A la fin de la ligne, cliquez sur afficher les informations, et copiez précieusement le jeton d'accès.
Configuration de la machine distante
Nous partons du principe que vous avez déjà installé Docker et SWAG sur cette machine distante.
Sur votre machine distante, à l'aide de Dockge, créez une stack authentik-outpost
.
Si vous n'avez pas installé Dockge, créez un dossier /docker/authentik-outpost
, ou directement en ligne de commande :
Astuce pour les allergiques au terminal
Vous pouvez utiliser File Browser pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
Créez le fichier compose.yaml
ou copiez la configuration directement dans le champs si vous avez Dockge Dockge)
En ligne de commande :
i
et collez la configuration suivante, en changeant les chiffres de {AUTHENTIK_TAG:proxy:2024.2.3}
par la meme version que celle de votre serveur Authentik.
Appuyez sur Echap
puis tapez :x
et appuyez sur Entrée
pour sauvegarder et quitter.
Note
Ici nous partons du principe que le réseau de Swag est swag_default
.
Creez (ou remplissez directement si vous avez Dockge) le fichier .env
dans le même dossier.
En ligne de commande :
Entrez en mode modification avec i
et collez la configuration suivante
Variable | Valeur | Exemple |
---|---|---|
HOST= |
L'url de votre serveur authentik | https://auth.domaine.fr |
TOKEN= |
Le token que vous avez précédemment copié précieusement | Q2pVEqsTNRkJSO9SkJzU3KZ2 |
Appuyez sur Echap
puis tapez :x
et appuyez sur Entrée
pour sauvegarder et quitter.
Si vous avez Dockge, déployez la stack.
Sinon, via le terminal :
Le conteneur est en route, vous pouvez vérifier son état dans votre panneau admin de votre instance Authentik, section Applications > Avant-postes.
Nous allons a présent configurer SWAG.
Ouvrez le fichier authentik-server.conf
.
Dans le fichier, passez en mode modification en tapant i
et changez authentik-server
par authentik-outpost
comme suit :
Sauvegardez et quittez en tapant sur Echap
puis :x
et sur Entrée
.
Ensuite, configurez les applications à protéger selon si elles sont natives ou par proxy comme vous l'avez fait sur votre serveur principal.
Migrer une base authentik
Sur la machine d'origine, dumper la bdd :
Puis l'envoyer sur la machine cible. Sur la machine cible, copier le fichier dans le container docker
(Optionnel) Purgez les tables existantes :
Restaurez la bdd