
Traefik V3: Installation, Konfiguration und CrowdSec-Security
4. Netzwerke konfigurieren
[ihc-hide-content ihc_mb_type=“show“ ihc_mb_who=“3,4″ ihc_mb_template=“1″ ]
Table Of Content
- Versionierung
- WICHTIG!
- 0. Testing
- 1. Zielsetzung
- 2. Voraussetzung
- 2.1. Hinweis
- 3. Grundlage: Netzwerke in Docker
- 3.1. Private Adressbereiche in IPv4
- 3.2. Adressbereiche in Docker
- 3.3. Verständnis der Netzwerkproblematik
- 3.4. Lösung
- 4. Netzwerke konfigurieren
- 4.1. Vorbereitung
- 4.2. Docker Konfigurieren anpassen
- 4.3. Ergebnis
- 4.3.1. IPv6-Konfiguration
- 5. Überblick über die Systeme
- 5.1. Traefik
- 5.2. Docker-Socket-Proxy
- 5.3. CrowdSec
- 5.4. CrowdSec Bouncer
- 6. Stack vorbereiten
- 6.1. Hauptverzeichnis erstellen und in das Verzeichnis wechseln
- 6.2. Dateien erstellen und Berechtigungen setzen
- 6.3. Überprüfung
- 7. Stack konfigurieren
- 7.1. docker-compose.yml-Datei
- 7.2. compose-Dateien
- 7.3. DOTENV anpassen
- 7.3.1. Allgemeine .env-Datei
- 7.3.2. .env-Datei für CrowdSec
- 7.3.3. .env-Datei für den Socket-Proxy
- 7.3.4. .env-Datei für den CrowdSec Bouncer für Traefik
- 7.3.5. .env-Datei für Traefik
- 7.3.6. API Key für den CrowdSec Bouncer für Traefik generieren
- 7.4. Traefik konfigurieren
- 7.4.1. Konfiguration der traefik.yml
- 7.4.2. Konfiguration von TLS
- 7.4.3. Konfiguration von http.middlewares.default.yml
- 7.4.4. Konfiguration von http.middlewares.traefik-dashboard-auth.yml
- 7.4.5. Passwort für Traefik-Dashboard festlegen
- 7.4.6. Konfiguration von http.middlewares.traefik-bouncer.yml
- 7.4.7. Integration des Bouncers in traefik.yml
- 7.5. CrowdSec konfigurieren
- 7.5.1. Acquisition anpassen
- 8. Dienst starten
- 8.1. Checkliste
- 9. Traefik-CrowdSec-Stack überprüfung
- 10. Optional
- 10.1. CrowdSec aktuell halten
- 10.2. Traefik-CrowdSec-Stack Update
- 10.3. Erweiterung der Firewall (UFW bzw. IPTables und NFTables) mit CrowdSec
- 10.3.1. Repository für CrowdSec Firewall Bouncer
- 10.3.2. Installation des Firewall Bouncers
- 10.3.3. Access Token generieren
- 10.3.4. Bouncer konfigurieren
- 10.3.5. CrowdSec Firewall Bouncer starten
- 10.3.6. Anzeigen der CrowdSec Bouncer-Liste
- 10.4. Logrotate für Traefik
- 10.5. Mailcow anpassen
- 11. Neuen Container hinzufügen
- 11.1. TLS anstelle von HTTP
- 99. Anleitung in 2 Minuten
- Hinweis zu Kommentaren
- Author: Psycho0verload
4.1. Vorbereitung
Um Docker einen neuen Adressbereich für seine Netzwerke zuzuweisen, müssen zunächst alle vorhandenen Projekte heruntergefahren werden. Bei einem neu aufgesetzten Server, auf dem noch keine Docker-Container laufen, ist dies nicht erforderlich.
Je nach Art der laufenden Projekte auf dem Server müssen diese entweder mit docker stop oder docker compose down gestoppt werden. Dabei ist zu beachten, dass Docker-Netzwerke containerübergreifend definiert sein können. Jedes Mal, wenn ein Container an das Traefik-Netzwerk angebunden wird, interagiert dieser zusätzlich mit dem Docker-Netzwerk von Traefik. Das bedeutet, dass Traefik nur vollständig heruntergefahren werden kann, wenn alle anderen Container ebenfalls heruntergefahren wurden.
Nachdem alle Container erfolgreich heruntergefahren wurden, kann dies mit folgendem Befehl überprüft werden:
docker container ls
Dann können die Netzwerke mit folgendem Befehl entfernt werden:
docker network prune
4.2. Docker Konfigurieren anpassen
Zunächst stoppen wir den Docker-Service:
systemctl stop docker systemctl stop docker.socket
Nun passen wir die Konfigurationsdatei von Docker an. Es kann sein, dass bereits Konfigurationen vorhanden sind oder die Datei bisher gar nicht angelegt ist. Beide Fälle stellen grundsätzlich kein Problem dar, solange auf die richtige Notation innerhalb einer JSON-Datei geachtet wird:
nano /etc/docker/daemon.json
{ "ipv6": true, "fixed-cidr-v6": "fd00:1:be:a:7000::/80", "default-address-pools": [ { "base": "172.25.0.0/14", "size": 23 }, { "base": "fd00:1:be:a:7002::/80", "size": 116 } ], "log-driver": "json-file", "log-opts": { "max-size": "29m", "max-file": "10" } }
Stelle sicher, dass die JSON-Struktur korrekt ist, um Konfigurationsfehler zu vermeiden.
Nun können wir den Docker-Service wieder starten. Sollten an dieser Stelle Fehler auftreten, sollte nochmals die JSON-Struktur der Datei /etc/docker/daemon.json
überprüft werden, da dies 99% der potenziellen Fehler ausmacht.
systemctl restart docker
[/ihc-hide-content]
4.3. Ergebnis
Wir haben erfolgreich einen individuellen Adressen-Pool für unsere Docker-Installation definiert.
- Es stehen mehr als 13.000 Docker-Netzwerke zur Verfügung.
- Jedes Docker-Netzwerk hat nun 512 verfügbare IP-Adressen.
- Es gibt keine Adresskonflikte mit dem Proxy-Netzwerk von Traefik.
- Es gibt keine Adresskonflikte mit dem Crowdsec-Netzwerk von Crowdsec.
- Es gibt keine Adresskonflikte mit der Standard-Netzwerk-Konfiguration von Mailcow.
Mit dieser Konfiguration ist es sehr unwahrscheinlich, dass wir Probleme mit Docker-Netzwerken haben. Das einzige, was wir beachten müssen, sind Projekte wie Mailcow, die eigene Netzwerke definieren. Mir und auf goNeuland ist nur Mailcow als solches Projekt bekannt.
4.3.1. IPv6-Konfiguration
IPv6 ist für viele noch ein schwieriges Thema. Dennoch wird es langsam Zeit, sich damit zu beschäftigen. Daher habe ich auch die Konfiguration von IPv6 in den Adressen-Pool aufgenommen. Auch hier wurde darauf geachtet, dass es keine Überschneidungen mit Mailcow gibt.
No Comment! Be the first one.