Docker Traefik Middleware Passwort Schutz: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | [[Kategorie:Docker]] | ||
| + | [[Kategorie:Traefik]] | ||
= Funktion = | = Funktion = | ||
* Bevor die Anfrage vom Client an den Server geleitet wird, muss dieser sich anmelden | * Bevor die Anfrage vom Client an den Server geleitet wird, muss dieser sich anmelden | ||
| Zeile 8: | Zeile 10: | ||
* '''apt install apache2-utils''' | * '''apt install apache2-utils''' | ||
* Falls $-Zeichen im Hash auftauchen, müssen diese durch ein weiteres $ in YAML entwertet werden | * Falls $-Zeichen im Hash auftauchen, müssen diese durch ein weiteres $ in YAML entwertet werden | ||
| − | * '''echo $(htpasswd -nB ''user'') | sed -e s/\\$/\\$\\$/g''' | + | * '''echo $(htpasswd -nB ''user'') | sed -e "s/\\$/\\$\\$/g"''' |
= Benutzer und Passwort in ''docker-compose.yml'' = | = Benutzer und Passwort in ''docker-compose.yml'' = | ||
| Zeile 23: | Zeile 25: | ||
labels: | labels: | ||
- "traefik.http.routers.whoami.rule=Path(`/whoami`)" | - "traefik.http.routers.whoami.rule=Path(`/whoami`)" | ||
| − | - "traefik.http. | + | - "traefik.http.middlewares.my-auth.basicauth.users=user1:passwort-hash,user2:passwort-hash" |
- "traefik.http.routers.whoami.middlewares=my-auth" | - "traefik.http.routers.whoami.middlewares=my-auth" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | = | + | = Benutzer und Passwort separat = |
| − | + | == Auf Docker-Host == | |
| − | == | + | * '''cd ''/pfad/zum/dienst'' ''' |
* '''vim ''docker-compose.yml'' ''' | * '''vim ''docker-compose.yml'' ''' | ||
<syntaxhighlight lang="yaml"> | <syntaxhighlight lang="yaml"> | ||
| − | + | version: "3" | |
| − | + | services: | |
| − | + | whoami: | |
| − | + | image: traefik/whoami | |
| − | + | labels: | |
| − | + | - "traefik.http.routers.whoami.rule=Path(`/whoami`)" | |
| + | - "traefik.http.middlewares.my-auth.basicauth.usersfile=/pfad/zur/datei" | ||
| + | - "traefik.http.routers.whoami.middlewares=my-auth" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | ==Traefik | + | == Auf Traefik-Host == |
| − | + | * Die Datei mit Benutzernamen und Passwort-Hashes muss nun für dem Traefik-Dienst zugänglich sein | |
| − | + | * '''htpasswd -Bc ''/pfad/zur/datei'' ''user1'' ''' | |
| − | + | * '''htpasswd -B ''/pfad/zur/datei'' ''user2'' ''' | |
| − | + | * Der erste Befehl benutzt '''Bcrypt''' und erstellt die Datei, falls diese noch nicht existiert | |
| − | + | * Der zweite Befehl benutzt '''Bcrypt''' und fügt zusätzlich ''user2'' hinzu | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=Links= | =Links= | ||
https://doc.traefik.io/traefik/middlewares/overview/ | https://doc.traefik.io/traefik/middlewares/overview/ | ||
Aktuelle Version vom 15. November 2024, 10:42 Uhr
Funktion
- Bevor die Anfrage vom Client an den Server geleitet wird, muss dieser sich anmelden
- Die Zugangsdaten können entweder in docker-compose.yml geschrieben oder in eine andere Datei ausgelagert werden
- Die Passwörter müssen mit MD5, SHA1, or BCrypt gehasht werden.
Passwort-Hashes
- Der einfachste Weg für die Generation der Passwort-Hashes ist htpasswd, welches im Paket apache2-utils enthalten ist
- apt install apache2-utils
- Falls $-Zeichen im Hash auftauchen, müssen diese durch ein weiteres $ in YAML entwertet werden
- echo $(htpasswd -nB user) | sed -e "s/\\$/\\$\\$/g"
Benutzer und Passwort in docker-compose.yml
- Damit Traefik weiß, dass die Basic-Auth-Middleware benutzt werden soll, muss der Container/Service das Label tragen
- Die Middleware muss dann einem Router zugewiesen werden
- cd /pfad/zum/dienst
- vim docker-compose.yml
version: "3"
services:
whoami:
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Path(`/whoami`)"
- "traefik.http.middlewares.my-auth.basicauth.users=user1:passwort-hash,user2:passwort-hash"
- "traefik.http.routers.whoami.middlewares=my-auth"
Benutzer und Passwort separat
Auf Docker-Host
- cd /pfad/zum/dienst
- vim docker-compose.yml
version: "3"
services:
whoami:
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Path(`/whoami`)"
- "traefik.http.middlewares.my-auth.basicauth.usersfile=/pfad/zur/datei"
- "traefik.http.routers.whoami.middlewares=my-auth"
Auf Traefik-Host
- Die Datei mit Benutzernamen und Passwort-Hashes muss nun für dem Traefik-Dienst zugänglich sein
- htpasswd -Bc /pfad/zur/datei user1
- htpasswd -B /pfad/zur/datei user2
- Der erste Befehl benutzt Bcrypt und erstellt die Datei, falls diese noch nicht existiert
- Der zweite Befehl benutzt Bcrypt und fügt zusätzlich user2 hinzu