CT 113 – Authelia

Note

CT 113 hostet Authelia als zentrale vorgeschaltete Authentifizierungs- und 2FA-Schicht für ausgewählte Webdienste hinter Caddy.

Basisdaten

Eigenschaft Wert
CT-ID 113
Name authelia
IP 192.168.178.64
OS Debian 13
Öffentliche URL https://auth.ls-cloud.biz
Interner Port 9091/tcp
Compose-Pfad /opt/authelia/compose.yml
Konfig-Pfad /opt/authelia/config/configuration.yml
User-Datei /opt/authelia/config/users_database.yml
Notification-Datei /opt/authelia/config/notification.txt

Zweck

Authelia sitzt vor ausgewählten Webdiensten und erzwingt dort je nach Regel:

  • kein Login (bypass)
  • Passwort-Login (one_factor)
  • Passwort + zweiter Faktor (two_factor)

Aktuell ist Authelia bereits für folgende Dienste in Benutzung:

  • terminal.ls-cloud.biztwo_factor
  • files.ls-cloud.biztwo_factor

Architektur

Browser
  -> Caddy auf dem Host
  -> forward_auth gegen Authelia (CT 113 :9091)
  -> bei Erfolg weiter zum eigentlichen Backend-Dienst

Portal selbst:

https://auth.ls-cloud.biz
  -> Caddy reverse_proxy
  -> CT 113 :9091

Wie ein neuer Dienst geschützt wird

Es braucht immer zwei Änderungen:

1. Authelia-Regel

In configuration.yml unter access_control.rules eine Domain-Regel ergänzen, z. B.:

- domain: 'files.ls-cloud.biz'
  policy: two_factor

2. Caddy davor schalten

Im jeweiligen Domain-Block:

caddy
forward_auth http://192.168.178.64:9091 {
    uri /api/authz/forward-auth
    copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
}

Danach erst das eigentliche reverse_proxy zum Backend.

Benutzerverwaltung

Aktuell wird der file-based authentication backend genutzt.

Benutzer stehen in:

/opt/authelia/config/users_database.yml

Dort liegen u. a.:

  • Benutzername
  • Anzeige-Name
  • Mailadresse
  • Argon2-Passworthash
  • Gruppen

Aufbau eines Benutzers

Ein einzelner Benutzer sieht im aktuellen Setup z. B. so aus:

users:
  admin:
    disabled: false
    displayname: "Sergej"
    password: "$argon2id$..."
    email: "sergej@ls-cloud.biz"
    groups:
      - admins

Vorlage für einen neuen Benutzer

  neueruser:
    disabled: false
    displayname: "Neuer User"
    password: "$argon2id$HIER_DEN_HASH_EINTRAGEN"
    email: "user@example.com"
    groups:
      - users

Passwort-Hash erzeugen

Ein Passwort wird nicht im Klartext gespeichert, sondern als Hash. Ein neuer Hash kann z. B. so erzeugt werden:

pct exec 113 -- docker run --rm authelia/authelia:latest \
  authelia crypto hash generate argon2 --password 'NEUES_PASSWORT'

Den Digest:-Wert dann in users_database.yml als password: eintragen.

Benutzer hinzufügen – Schritt für Schritt

  1. Passwort-Hash erzeugen
  2. Benutzerblock unter users: in users_database.yml ergänzen
  3. Datei speichern
  4. Authelia neu starten:
pct exec 113 -- bash -lc "cd /opt/authelia && docker compose -f compose.yml restart"
  1. Danach mit dem neuen Benutzer an https://auth.ls-cloud.biz testen

Passwort eines bestehenden Benutzers ändern

  1. neuen Hash erzeugen
  2. beim Benutzer nur den Wert von password: ersetzen
  3. Authelia neu starten

Benutzer deaktivieren

  neueruser:
    disabled: true
Important

Nach Änderungen an users_database.yml ist ein Restart von Authelia der saubere Weg, damit die Änderung sicher übernommen wird.

TOTP / Google Authenticator / Aegis

Für den Benutzer kann in der Weboberfläche unter Sicherheitsoptionen ein Einmal-Passwort (TOTP) hinzugefügt werden. Das funktioniert mit:

  • Google Authenticator
  • Aegis
  • Ente Auth
  • Authy
  • anderen TOTP-Apps

„E-Mails“ / One-Time-Codes

Aktuell ist kein echter SMTP-Versand eingerichtet. Stattdessen schreibt Authelia Benachrichtigungen in eine Datei auf dem Server:

/opt/authelia/config/notification.txt

Dort landen z. B.:

  • Identity-Confirmation-Codes
  • One-Time-Codes
  • Links zum Widerruf
  • andere notifier-basierte Meldungen

Beispiel ansehen

pct exec 113 -- tail -60 /opt/authelia/config/notification.txt
Important

Wenn ein Benutzer behauptet, es komme „keine Mail“, ist im aktuellen Setup zuerst diese Datei zu prüfen.

Prüfung

pct status 113
pct exec 113 -- bash -lc "cd /opt/authelia && docker compose -f compose.yml ps"
curl -k -I https://auth.ls-cloud.biz
curl -k -I https://terminal.ls-cloud.biz
curl -k -I https://files.ls-cloud.biz

Wichtige Dateien

Pfad Zweck
/opt/authelia/compose.yml Docker-Compose-Definition
/opt/authelia/config/configuration.yml Hauptkonfiguration
/opt/authelia/config/users_database.yml Benutzer & Passwort-Hashes
/opt/authelia/config/db.sqlite3 lokaler Storage
/opt/authelia/config/notification.txt serverseitige „E-Mails“ / Codes
/etc/caddy/Caddyfile (Host) Portal + ForwardAuth vor geschützten Diensten

Hinweise

Tip

Für neue Dienste immer in zwei Schritten denken: Authelia-Regel und Caddy forward_auth.

Warning

Nur Webdienste hinter Caddy lassen sich so sauber schützen. Nicht-HTTP-Protokolle brauchen andere Wege.