Docker Traefik Middleware Passwort Schutz: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Funktion= *Bevor die Anfrage vom Cleint an den Server geleitet wird, muss dieser sich Anmelden *Die Zugangsdaten können entweder in eine Enviroment File, ode…“)
 
 
(16 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Funktion=
+
[[Kategorie:Docker]]
*Bevor die Anfrage vom Cleint an den Server geleitet wird, muss dieser sich Anmelden
+
[[Kategorie:Traefik]]
*Die Zugangsdaten können entweder in eine Enviroment File, oder direkt in die docker-compose File geschrieben werden
+
= Funktion =
*Die Passwörter müssen mit einem der folgenden Hashes MD5, SHA1, or BCrypt gehasht werden.
+
* 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.
  
=Bespiel=
+
= Passwort-Hashes =
<syntaxhighlight>
+
* Der einfachste Weg für die Generation der Passwort-Hashes ist '''htpasswd''', welches im Paket '''apache2-utils''' enthalten ist
      - com.ouroboros.enable=true
+
* '''apt install apache2-utils'''
      - "traefik.enable=true"
+
* Falls $-Zeichen im Hash auftauchen, müssen diese durch ein weiteres $ in YAML entwertet werden
      - "traefik.http.middlewares.fa-fo.basicauth.users=admin:$$2y$$05$$PYbicECOqqefGM4UC7OgUe0LP0csKkVuFKvN.hsJ2xqEn.9cbJF/."
+
* '''echo $(htpasswd -nB ''user'') | sed -e "s/\\$/\\$\\$/g"'''
      - "traefik.http.services.smokeping.loadbalancer.server.port=80"
+
 
      - "traefik.http.routers.smokeping-secured.rule=Host(`smokeping-sym.xinux.net`)"
+
= Benutzer und Passwort in ''docker-compose.yml'' =
      - "traefik.http.routers.smokeping-secured.middlewares=fa-fo"
+
* Damit Traefik weiß, dass die Basic-Auth-Middleware benutzt werden soll, muss der Container/Service das Label tragen
      - "traefik.http.routers.smokeping-secured.entrypoints=websecure"
+
* Die Middleware muss dann einem Router zugewiesen werden
      - "traefik.http.routers.smokeping-secured.tls=true"
+
* '''cd ''/pfad/zum/dienst'' '''
 +
* '''vim ''docker-compose.yml'' '''
 +
 
 +
<syntaxhighlight lang="yaml">
 +
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"
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
= Benutzer und Passwort separat =
 +
== Auf Docker-Host ==
 +
* '''cd ''/pfad/zum/dienst'' '''
 +
* '''vim ''docker-compose.yml'' '''
 +
 +
<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>
 +
 +
== 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

Links

https://doc.traefik.io/traefik/middlewares/overview/