Advertisement
PhoenyxRLP

Untitled

Nov 20th, 2024
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 10.30 KB | Source Code | 0 0
  1. Authelia Integration in Traefik-Crowdsec-Stack (Traefik3)
  2.  
  3. Anlegen von Verzeichnissen.
  4.  
  5. mkdir -p /opt/containers/traefik-crowdsec-stack/data/authelia/config
  6. mkidr -p /root/secrets/authelia
  7. chmod 644 /root/secrets/authelia
  8.  
  9. Erstellen der Secrets
  10.  
  11. tr -cd '[:alnum:]' </dev/urandom | fold -w "64" | head -n 1 | tr -d '\n' | sudo tee /root/secrets/authelia/authelia_jwt_secret
  12. tr -cd '[:alnum:]' </dev/urandom | fold -w "64" | head -n 1 | tr -d '\n' | sudo tee /root/secrets/authelia/authelia_storage_encryption_key
  13. tr -cd '[:alnum:]' </dev/urandom | fold -w "64" | head -n 1 | tr -d '\n' | sudo tee /root/secrets/authelia/authelia_session_secret
  14.  
  15. Das Secret authelia_notifier_smtp_password enthält euch Password zum Email Account wenn Ihr SMTP Notifications nutzen wollt.
  16. Wenn ihr File Notifications nutzen wollte dann lasst dies bitte weg.
  17.  
  18. Ergänzen der docker-compose.yml
  19.  
  20.  
  21. include:
  22.  ...
  23.   - compose/authelia.yml
  24.  
  25.  
  26. Erstellen der .env File in /opt/containers/traefik-crowdsec-stack/data/authelia/
  27. Legt hier bitte eine .env File mit folgendem Inhalt an.
  28.  
  29.  
  30. SECRETDIR=/root/secrets
  31. TZ=$TZ
  32. # Rest ist optional, wenn ihr hier was anpassen wollt.
  33. # Da ich lieber Feste IP Adressen einsetze auch bei Docker werden diese hier bei mir festgelegt.
  34. # Damit ich keine vergesse, wird das in der authelia.yml noch mal wiederholt.
  35. # Wenn ihr das nicht wollt dann lasst es einfach weg.
  36. SERVICES_AUTHELIA_HOSTNAME=authelia
  37. SERVICES_TRAEFIK_LABELS_AUTHELIA_HOST=HOST(your.domain.tld)
  38. SERVICES_AUTHELIA_NETWORKS_PROXY_IPV4=172.31.191.200
  39. SERVICES_AUTHELIA_NETWORKS_PROXY_IPV6=fd00:1:be:a:7001:0:3e:7f00
  40. SERVICES_AUTHELIA_NETWORKS_SOCKET_PROXY_IPV4=172.31.255.200
  41. SERVICES_AUTHELIA_NETWORKS_SOCKET_PROXY_IPV6=fd00:1:be:a:7001:0:3e:8f00
  42.  
  43.  
  44. Erstellen authelia.yml im compose Verzeichnis.
  45. nano /opt/containers/traefik-crowdsec-stack/compose/authelia.yml
  46.  
  47.  
  48. services:
  49.   authelia:
  50.     container_name: 'authelia'
  51.     depends_on:
  52.       traefik:
  53.         condition: service_healthy
  54.     hostname: ${SERVICES_AUTHELIA_HOSTNAME:-authelia}
  55.     image: 'docker.io/authelia/authelia:latest'
  56.     restart: 'unless-stopped'
  57.     env_file: ${ABSOLUTE_PATH}/data/authelia/.env
  58.     networks:
  59.       proxy:
  60.         ipv4_address: ${SERVICES_AUTHELIA_NETWORKS_PROXY_IPV4:-172.31.191.200}
  61.         ipv6_address: ${SERVICES_AUTHELIA_NETWORKS_PROXY_IPV6:-fd00:1:be:a:7001:0:3e:7f00}
  62.       socket_proxy:
  63.         ipv4_address: ${SERVICES_AUTHELIA_NETWORKS_SOCKET_PROXY_IPV4:-172.31.255.200}
  64.         ipv6_address: ${SERVICES_AUTHELIA_NETWORKS_SOCKET_PROXY_IPV6:-fd00:1:be:a:7001:0:3e:8f00}
  65.     volumes:
  66.      - /etc/localtime:/etc/localtime:ro
  67.       - ${ABSOLUTE_PATH}/data/authelia/config:/config
  68.     secrets: ['JWT_SECRET', 'SESSION_SECRET', 'STORAGE_ENCRYPTION_KEY', 'NOTIFIER_SMTP_PASSWORD']
  69.     environment:
  70.       AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET_FILE: '/run/secrets/JWT_SECRET'
  71.       AUTHELIA_SESSION_SECRET_FILE: '/run/secrets/SESSION_SECRET'
  72.       AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: '/run/secrets/STORAGE_ENCRYPTION_KEY'
  73.       AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE: '/run/secrets/NOTIFIER_SMTP_PASSWORD'
  74.     labels:
  75.       traefik.enable: true
  76.       traefik.http.routers.authelia.rule: HOST(auth.domain.tld)
  77.       traefik.http.routers.authelia.entryPoints: websecure
  78.       traefik.http.routers.authelia.tls: true
  79.       traefik.http.routers.authelia.tls.certresolver: tls_resolver
  80.       traefik.http.services.authelia.loadbalancer.server.port: 9091
  81.       traefik.http.middlewares.authelia.forwardAuth.address: https://authelia:9091/api/authz/forward-auth
  82.       traefik.http.routers.authelia.middlewares: default@file
  83.       traefik.http.routers.authelia.service: authelia
  84.     security_opt:
  85.      - no-new-privileges:true
  86. secrets:
  87.   JWT_SECRET:
  88.     file: ${SECRETDIR}/authelia/authelia_jwt_secret
  89.   SESSION_SECRET:
  90.     file: ${SECRETDIR}/authelia/authelia_session_secret
  91.   STORAGE_ENCRYPTION_KEY:
  92.     file: ${SECRETDIR}/authelia/authelia_storage_encryption_key
  93.   NOTIFIER_SMTP_PASSWORD:
  94.     file: ${SECRETDIR}/authelia/authelia_notifier_smtp_password
  95.  
  96.  
  97. Erzeugen Traefik Middelware Yml für Authelia.
  98. Erzeugt im Verzeichnis /opt/containers/traefik-crowdsec-stack/data/traefik/dynamic_conf
  99. eine Datei http.middlewares.middlewares-authelia.yml mit folgendem Inhalt.
  100.  
  101.  
  102. http:
  103.   middlewares:
  104.     middlewares-authelia:
  105.       forwardAuth:
  106.         address: "http://authelia:9091/api/verify?rd=https://auth.domain.tld"
  107.         trustForwardHeader: true
  108.         authResponseHeaders:
  109.          - "Remote-User"
  110.           - "Remote-Groups"
  111.  
  112.  
  113. Erzeugen der Authelia Configuration in /opt/containers/traefik-crowdsec-stack/data/authelia/config
  114. mit nano /opt/containers/traefik-crowdsec-stack/data/authelia/config/configuration.yml die entsprechende Datei erstellen.
  115.  
  116. Inhalt:
  117. ###############################################################
  118. #Authelia configuration#
  119. ###############################################################
  120.  
  121. theme: dark
  122. identity_validation:
  123.   reset_password:
  124.  # Wird durch das Secret gesetzt
  125.     jwt_secret:
  126. server:
  127.   address: tcp://0.0.0.0:9091/
  128.  
  129. # https://www.authelia.com/configuration/miscellaneous/logging/
  130. log:
  131.   level: error
  132.   format: json
  133.   file_path: /config/authelia.log
  134.   keep_stdout: true
  135.  
  136. # https://www.authelia.com/configuration/second-factor/time-based-one-time-password/
  137. totp:
  138.   issuer: domain.tld
  139.   period: 30
  140.   skew: 1
  141.  
  142. # https://www.authelia.com/reference/guides/passwords/
  143. authentication_backend:
  144.   password_reset:
  145.     disable: false
  146.   refresh_interval: 5m
  147.   file:
  148.     path: /config/users.yml
  149.     password:
  150.       algorithm: argon2id
  151.       iterations: 1
  152.       salt_length: 16
  153.       parallelism: 8
  154.       memory: 256
  155.  
  156. # https://www.authelia.com/overview/authorization/access-control/
  157. access_control:
  158.   default_policy: deny
  159.   rules:
  160.     - domain: "auth.domain.tld" # Hier deine Authelia Domain einsetzen.
  161.       policy: bypass
  162.       networks: # Optional
  163.         - 10.0.0.0/8
  164.         - 192.168.0.0/16
  165.         - 172.16.0.0/12
  166.     - domain:
  167.      - "*.domain.tld" # Wildcard Adresse für Domain optional
  168.       - "traefik.domain.tld" # Hier deine Traefik Domain einsetzen.
  169.       - "domain.tld" # Hier deine Domain einsetzen.
  170.       policy: two_factor
  171.  
  172. # https://www.authelia.com/configuration/session/introduction/
  173.  
  174. session:
  175.   name: authelia_session
  176.   same_site: lax
  177.   secret:
  178.   expiration: 5h
  179.   inactivity: 15m
  180.   remember_me: 10M
  181.   cookies:
  182.     - domain: 'domain.tld'
  183.       authelia_url: https://auth.domain.tld # Authelia URL
  184.       default_redirection_url: https://auth.domain.tld/ # Default Redirect URL
  185.  
  186. # https://www.authelia.com/configuration/security/regulation/
  187. regulation:
  188.   max_retries: 3
  189.   find_time: 10m
  190.   ban_time: 12h
  191.  
  192. # https://www.authelia.com/configuration/storage/introduction/
  193. storage:
  194.  # For local storage, uncomment lines below and comment out mysql. https://docs.authelia.com/configuration/storage/sqlite.html
  195.   # This is good for the beginning. If you have a busy site then switch to other databases.
  196.   local:
  197.     path: '/config/db.sqlite3'
  198.   # Wird durch Secret gesetzt
  199.   encryption_key:
  200. # https://www.authelia.com/configuration/notifications/introduction/
  201. notifier:
  202.   disable_startup_check: false
  203.   # For testing purposes, notifications can be sent in a file. Be sure to map the volume in docker-compose.
  204.   filesystem:
  205.     filename: '/config/notification.txt'
  206.  
  207. # SMTP nur aktivieren wenn es sicher funktioniert bei euch 
  208. #notifier:
  209. #disable_startup_check: false
  210. #   smtp:
  211. #     username: 'admin@domain.tld' # Username für deinen Mailserver
  212. #     password:
  213. #     address: 'smtp://mail.domain.tld:587'
  214. #     sender: 'Authelia Notifier <admin@domain.tld>'
  215. #     subject: "[Notification domain.tld] {titel}"
  216. #     startup_check_address: 'test@domain.tld'
  217. #     disable_starttls: false
  218. #     disable_html_emails: false
  219. #     disable_require_tls: false
  220.  
  221. Mit diesem Befehl erzeugt ihr den Hash für Euren User:
  222. docker run -v /opt/containers/authelia/compose/config/configuration.yml:/configuration.yml -it authelia/authelia:latest authelia crypto hash generate --config /configuration.yml --password "SicheresPassword"
  223.  
  224. den angezeigten String tragt ihr dann in die users.yml ein als password:
  225. Mit nano /opt/containers/traefik-crowdsec-stack/data/authelia/config/users.yml die entsprechende Datei erstellen.
  226.  
  227. Inhalt:
  228.  
  229. ###############################################################
  230. #             Users Database           #
  231. ###############################################################
  232.  
  233. # This file can be used if you do not have an LDAP set up.
  234.  
  235. # List of users
  236. users:
  237.   username: # hier euren eigenen Login Namen eintragen
  238.     displayname: "Mein Name mit Nachname"
  239.     password:
  240.     email: # Eure valide Email Adresse
  241.     groups:
  242.      - admins
  243.       - dev
  244.  
  245. Nach dem ihr dann alle Container mit docker compose -up -d –force-recreate neugestartet habt, ruft ihr
  246. eure Authelia domain auf auth.domain.tld und log euch mit den angelegten Zugangsdaten ein.
  247.  
  248. Durch den rest führt euch dann Authelia. Beachtet der 6 stellige Code der angefordert wird wird euch in der Notification.txt im config Verzeichnis angezeigt.
  249.  
  250. Nach dem erfolgreichen Anlegen des 2FA könnt ihr nun folgende Anpassungen vornehmen:
  251. Manuelle Anpassungen an der traefik.yml im /compose
  252. um Traefik hinter die Authelia Middleware zu bekommen muss folgende Zeile angeasst werden.
  253.  
  254. Original:
  255. traefik.http.routers.traefik-dashboad.middlewares: default@file,traefik-dashboard-auth@file
  256.  
  257. Angepasst:
  258. traefik.http.routers.traefik-dashboad.middlewares: default@file,middlewares-authelia@file
  259.  
  260. Macht das bitte erst wenn euer Authelia Container läuft und ihr euch bei Authelia mindestens einmal angemeldet habt.
  261.  
  262. alternativ kann man hier auch eine traefik.override.yml anlegen.
  263.  
  264. ---
  265. services:
  266.   traefik:
  267.     labels:
  268.       traefik.http.routers.traefik-dashboad.middlewares: default@file,middlewares-authelia@file
  269. ---
  270.  
  271. nach einem erneuten restart mit
  272. docker compose up -d –force-recreate
  273. und ein paar minuten Wartezeit sollte sich beim Aufruf eurer Traefik Domain nun erst Authelia melden.
  274.  
  275. Ich hoffe ich habe dies nun vollständig dokumentiert. Falls doch was schiefgehen sollte fragt einfach.
  276. Ich habe dies auch gleichzeitig an Psycho0verload geschickt zur Prüfung und ggf einbau in den Stack.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement