Diese Anleitung beschreibt die manuelle Installation und Konfiguration des Traefik-CrowdSec-Stacks, ohne Verwendung des automatischen Installationsskripts. Bitte folgen Sie den Schritten sorgfältig.
- Root-Zugriff auf den Server
- Docker und Docker Compose müssen installiert sein
- Apache2 Utils (htpasswd) und OpenSSL müssen installiert sein
Als erstes müssen Sie das Repository auf Ihren Server klonen:
mkdir -p /opt/containers/
git clone https://github.com/psycho0verload/traefik-crowdsec-stack /opt/containers/traefik-crowdsec-stack
cd /opt/containers/traefik-crowdsec-stack
sudo chmod +x first_install.sh
sudo ./first_install.sh
Die gesamte Anleitung wird als root
-User durchgeführt!
Als erstes müssen Sie das Repository auf Ihren Server klonen:
sudo su
mkdir -p /opt/containers/
git clone https://github.com/psycho0verload/traefik-crowdsec-stack /opt/containers/traefik-crowdsec-stack
cd /opt/containers/traefik-crowdsec-stack
Falls Docker und Docker Compose noch nicht installiert sind, folgen Sie der offiziellen Anleitung:
Verifizieren Sie die Installation mit den folgenden Befehlen:
docker --version
docker compose version
Um einen Benutzer für die HTTP-Basic-Authentifizierung zu erstellen, benötigen Sie htpasswd, das in apache2-utils enthalten ist. Sie können es mit folgendem Befehl installieren:
apt update
apt install -y apache2-utils openssl
Kopieren Sie die erforderlichen Konfigurationsdateien aus den .sample-Vorlagen. Stellen Sie sicher, dass Sie im Arbeitsverzeichnis des Projekts sind:
cp .env.sample .env
cp data/crowdsec/.env.sample data/crowdsec/.env
cp data/socket-proxy/.env.sample data/socket-proxy/.env
cp data/traefik/.env.sample data/traefik/.env
cp data/traefik/traefik.yml.sample data/traefik/traefik.yml
cp data/traefik/certs/acme_letsencrypt.json.sample data/traefik/certs/acme_letsencrypt.json
chmod 600 data/traefik/certs/acme_letsencrypt.json
cp data/traefik/certs/tls_letsencrypt.json.sample data/traefik/certs/tls_letsencrypt.json
chmod 600 data/traefik/certs/tls_letsencrypt.json
cp data/traefik/dynamic_conf/http.middlewares.default.yml.sample data/traefik/dynamic_conf/http.middlewares.default.yml
cp data/traefik/dynamic_conf/http.middlewares.traefik-bouncer.yml.sample data/traefik/dynamic_conf/http.middlewares.traefik-bouncer.yml
cp data/traefik/dynamic_conf/http.middlewares.traefik-dashboard-auth.yml.sample data/traefik/dynamic_conf/http.middlewares.traefik-dashboard-auth.yml
cp data/traefik/dynamic_conf/tls.yml.sample data/traefik/dynamic_conf/tls.yml
cp data/traefik-crowdsec-bouncer/.env.sample data/traefik-crowdsec-bouncer/.env
Fügen Sie Ihre SSL-Zertifikats-E-Mail-Adresse und die gewünschte Domain für das Traefik-Dashboard in die entsprechenden Konfigurationsdateien ein:
-
Bearbeiten Sie die
data/traefik/traefik.yml
und ersetzen Sie die E-Mail-Adressen (die Adressen müssen identisch sein):certificatesResolvers: http_resolver: acme: email: "[email protected]" storage: "/etc/traefik/acme_letsencrypt.json" httpChallenge: entryPoint: web tls_resolver: acme: email: "[email protected]" storage: "/etc/traefik/tls_letsencrypt.json" tlsChallenge: {}
-
In der Datei
.env
setzen Sie die gewünschte Domain für das Traefik-Dashboard:SERVICES_TRAEFIK_LABELS_TRAEFIK_HOST=HOST(`traefik.yourdomain.com`)
-
CrowdSec Konfigurationsdatein erstellen
cd /opt/containers/traefik-crowdsec-stack/ docker compose up -d crowdsec && docker compose down
-
Acquis.yaml anpassen: Bearbeiten Sie die
/opt/containers/traefik-crowdsec-stack/data/crowdsec/config/acquis.yaml
, löschen Sie alle Zeilen und fügen Sie die folgenden Zeilen hinzu:filenames: - /var/log/auth.log - /var/log/syslog labels: type: syslog --- filenames: - /var/log/traefik/access.log labels: type: traefik ---
-
Token generieren für den CrowdSec Bouncer für Trafik
BOUNCER_KEY_TRAEFIK=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9!@#$%^&*()-_=+[]{}<>?|') BOUNCER_KEY_FIREWALL=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9!@#$%^&*()-_=+[]{}<>?|') echo "BOUNCER_KEY_TRAEFIK=\"$BOUNCER_KEY_TRAEFIK\"" >> /opt/containers/traefik-crowdsec-stack/.env echo "BOUNCER_KEY_FIREWALL=\"$BOUNCER_KEY_FIREWALL\"" >> /opt/containers/traefik-crowdsec-stack/.env echo "Generated BOUNCER_KEY_FIREWALL: $BOUNCER_KEY_FIREWALL"
-
Speichern Sie sich den Token für BOUNCER_KEY_FIREWALL! Diesen benötigen Sie später nochmal!
Erstellen Sie einen Benutzer und ein Passwort für die HTTP-Basic-Authentifizierung im Traefik-Dashboard:
htpasswd -c /opt/containers/traefik-crowdsec-stack/data/traefik/.htpasswd <deinBenutzername>
-
Installieren Sie die Repositories von CrowdSec
curl -s https://install.crowdsec.net | sudo sh
-
Installieren Sie den Service für Ihre Firewall
IPTables und UFW
sudo apt install crowdsec-firewall-bouncer-iptables
NFTables
sudo apt install crowdsec-firewall-bouncer-nftables
-
Firewall-Konfiguration anpassen: Bearbeiten Sie die Datei
/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
:api_url: http://172.31.127.254:8080/ api_key: <BOUNCER_KEY_FIREWALL>
Der BOUNCER_KEY_FIREWALL
sollte der Wert sein, den Sie generiert haben (in Schritt 6.3.).
- Firewall neustarten
systemctl enable crowdsec-firewall-bouncer systemctl restart crowdsec-firewall-bouncer
Stellen Sie sicher, dass die Firewall die Ports 80 (HTTP) und 443 (HTTPS) freigibt.
Vergewissern Sie sich, dass die von Ihnen gewählte Domain korrekt auf die IP-Adresse des Servers verweist.
Sobald alle Konfigurationen abgeschlossen sind, können Sie den Stack starten:
docker compose up -d
Das Traefik-Dashboard sollte nun über die von Ihnen konfigurierte Domain erreichbar sein. Sie werden zur Eingabe des HTTP-Basic-Auth-Benutzernamens und Passworts aufgefordert.