Mise en place d'Authelia sur Nginx Proxy Manager
Authelia est une solution OpenSource qui agit comme un portail d'accès avec authentification, ou SSO. Il permet de centraliser l'authentification des utilisateurs et leur permet l'accès à des ressources protégées. L'authentification peut passer par une simple connexion user / password mais des fonctionnalités avancées sont disponibles : authentification à deux facteurs, utilisation d'une notification push Duo ou activation d'une clé de sécurité Yubikey.
Fonctionnement
Voici un exemple de mise en place d'Authelia avec Traefic / Nginx :
Mise en place d'authelia
Préparation des dossiers de configuration
Nous allons créer les dossiers de configuration et y créer les fichiers de base configuration.yml et users_database.yml :
mkdir -p /data/Dockers/authelia/config
touch /data/Dockers/authelia/config/configuration.yml
touch /data/Dockers/authelia/config/users_database.yml
Fichierconfiguration.yaml de- configurationConfiguration Autheliad'authelia
Le fichier de configuration configuration.yml (Pour générer les tokens suivez le guide)
##############################################################################
# Authelia configuration #
##############################################################################
host: 0.0.0.0
port: 9091
log_level: info
jwt_secret: A4gYb7QFpbfKaNWAX7P7FX5y
default_redirection_url: https://auth.domain.com
totp:
issuer: domain.com
period: 30
skew: 1
#duo_api:
# hostname: api-123456789.example.com
# integration_key: ABCDEF
# secret_key: yet-another-long-string-of-characters-and-numbers-and-symbols
authentication_backend:
disable_reset_password: false
file:
path: /config/users_database.yml
password:
algorithm: argon2id
iterations: 1
salt_length: 16
parallelism: 8
memory: 64
access_control:
default_policy: deny
rules:
- domain:
- "radarr.domain.com"
- "sonarr.domain.com"
- "radarr.domain.com"
policy: bypass
resources:
- "^/api.*"
- domain:
- "auth.domain.com"
- "www.domain.com"
policy: bypass
- domain:
- "radarr.domain.com"
- "sonarr.domain.com"
- "deluge.domain.com"
policy: one_factor
subject:
- ["group:admins", "group:users"]
session:
name: authelia_session
secret: quaeS9MaixieL1aelee0vov3J
expiration: 3600 # 1 hour
inactivity: 7200 # 2 hours
domain: domain.com # Root domain
redis:
host: redis
port: 6379
regulation:
max_retries: 5
find_time: 2m
ban_time: 10m
theme: dark # options: dark, light, grey
storage:
local:
path: /config/db.sqlite3
notifier: # Permet la validation d'un compte si 2FA
# filesystem:
# filename: /config/notification.txt
smtp:
username: contact@domain.com
password: Be1zah2iek7pheNgeileosaev
host: mail.domain.com
port: 587 # 25 non-ssl, 443 ssl, 587 tls
sender: contact@domain.com
subject: "[Authelia] {title}"
disable_require_tls: false # set to true if your domain uses no tls or ssl only
disable_html_emails: false # set to true if you don't want html in your emails
tls:
server_name: mail.domain.com
skip_verify: false
minimum_version: TLS1.2
Fichierusers_database.yml de- base desBase utilisateurs Authelia
Nous allons générer un fichier pour stocker les utilisateurs et groupes pour Authelia :
###############################################################
# Users Database #
###############################################################
# This file can be used if you do not have an LDAP set up.
# List of users
users:
johndoe:
displayname: "John Doe"
password: "$argon2id$v=19$m=1048576,t=1,p=8$MFJSeXh0V2VKVWZEZFJiZg$EOSz2OgjIIV//MWf8"
email: johndoe@domain.com
groups:
- admins
- users
Pour générer le Hash du password, exécutez la commande suivante :
docker run --rm authelia/authelia:latest authelia hash-password 'votre-mot-de-passe'
Mise en place de la stack Docker-compose
Voici un exemple de docker-compose pour Authelia et son gestionnaire de session Redis :
version: '3.3'
services:
authelia:
container_name: authelia
image: authelia/authelia
restart: always
volumes:
- /data/Dockers/authelia/config:/config
ports:
- 9091:9091
healthcheck:
disable: true
environment:
- TZ=Europe/Paris
depends_on:
- redis
redis:
container_name: redis
image: redis:alpine
restart: always
volumes:
- /data/Dockers/authelia/redis:/data
expose:
- 6379
environment:
- TZ=Europe/Paris
Démarrez la stack :
docker-compose -p authelia -f /opt/docker-compose/authelia.yml up -d redis
docker-compose -p authelia -f /opt/docker-compose/authelia.yml up -d authelia
Générer des tokens
pip3 install pwgen
pwgen -1 25
quim5AhNgool9eimooceseegh