In dieser Anleitung erfahrt ihr, wie ihr WordPress mittels des Tools CrowdSec in wenigen Minuten absichern könnt.
Datum | Änderung |
---|---|
11.08.2022 | Erstellung dieser Anleitung |
05.03.2023 | Kapitel 2 wurde hinzufügt |
29.05.2023 | Anpassung an neue Traefik Anleitung, Kapitel 4 hinzugefügt |
26.11.2023 | Kapitel 6 hinzugefügt |
05.01.2024 | Anpassungen an Traefik v3 |
1. Voraussetzung
Diese Anleitung basiert auf folgenden Anleitungen
2. WordPress zum CrowdSec Netzwerk hinzufügen
Nun fügen wir WordPress noch zum CrowdSec Netzwerk hinzu. Dazu öffnet ihr folgende Datei:
nano /opt/containers/wordpress/docker-compose.yml
Hier fügt ihr nun folgende 3 Zeilen hinzu:
version: '3.1' services: wordpress: image: wordpress restart: unless-stopped container_name: wordpress environment: WORDPRESS_DB_HOST: wordpress-db .. .. .. networks: - proxy - default - crowdsec # <-- diese Zeile .. .. .. networks: proxy: external: true crowdsec: # <-- diese Zeile external: true # <-- diese Zeile
Anschließend starten wir den Container neu, damit die Einstellungen übernommen werden.
docker compose -f /opt/containers/wordpress/docker-compose.yml -d --force-recreate
3. WordPress Plugin installieren
Nun müssen wir noch das passende WordPress Plugin installieren. Dazu sucht ihr einfach nach CrowdSec.
Nach der Installation müsst ihr das Plugin noch aktivieren.
Bei diesem Inhalt handelt es sich um exklusiven Content für Community Plus Mitglieder und Supporter.
Bitte logge dich mit deinem Account ein um den Inhalt zu sehen.
Klickt nun wieder auf den Button “Test bouncing” und folgende Meldung sollte erscheinen:
Wenn ihr jetzt mittels eures Webbrowsers auf die Webseite geht, solltet ihr folgendes sehen:
Anschließend könnt ihr eure IP wieder entsperren. Gebt dazu folgendes ein:
docker exec crowdsec cscli decisions delete --all
Wenn ihr die Webseite neu lädt, sollte das Captcha wieder verschwunden sein.
Hallo,
ich bin ja mega begeistert, von euren Anleitungen. Hab auch meine WP Seiten mit Redis und Traefik und Crowdsec verheiratet und es läuft wie ne EINS 🙂
DANKE!!!!!
Und: Wie kann ich denn jetzt noch das Login (wp-admin und wp-login.php) durch ein Sicherheitslayer schützen? Ich stelle mir da ein zentrales Login vor, dass abgefragt wird, sobald jemand auf definierte Pfade zugreifen will. (am besten mit 2FA. Nur eben so, dass ich es ein mal eingebe und danach auf allen WP-Instanzen auf die gesicherten Bereiche zugreifen kann – und wenn jemand mist eingibt, -> ab auf die Crowdsec Liste)
Ist das mit einfachen Schritte zu erreichen? Ich bin doch sicherlich nicht der Erste, der sich da noch einen erweiterten Schutz wünscht und keinen Bock mehr auf .htaccess Basic Auth hat 😉
Die Anleitung zur Absicherung mit Authelia habe ich gefunden (https://goneuland.de/authelia-zweifaktor-authentifizierung-mittels-docker-compose-und-traefik-installieren/) aber noch nicht verstanden, wie und ob ich damit nur Domains oder auch Pfade absichern könnte…
Und die nächste Ergänzungsfrage wäre dann: Lässt sich Authelia auch mit der WP Auth verheiraten, dass das Login bei Authelia reicht und kein zweites Login in WP mehr benötigt wird?
Liebe Grüße – Holger.
Hallo Leute,
Verständnisfrage: Wenn alles nach dieser Anleitung fehlerfrei funktioniert, dann müsste doch jemand, der mehrmals versucht sich auf meiner WordPresseite einzuloggen, gebannt werden oder nicht? Sonst macht doch Crowdsec keinen Sinn mit WordPress.
Ein Freund von mir hat zum testen versucht sich mit falschen Zugangsdaten einzuloggen, wurde aber nicht gebannt!
VG Hardy
Hallo,
erstmal danke für die Anleitung, doch egal was ich mache sie funktioniert nicht.
Wenn ich das Plugin aktiviere und wie oben angegeben: http://crowdsec:8080 angebe bekomme ich einen Fehler angezeigt: Unexpected HTTP call Failure
Wenn ich anstatt crowdsec die IP des Containers angebe ( in meinem fall befinden sich die Crowdsec Container in einem eigenen Netz also 172.31.0.2:8080 ) werde ich komplett ausgesperrt.
Bedeutet das zwar die domain.tld/wp-admin noch geht aber die Webseite schmeißt einen 524 von Cloudflare.
Sobald ich es deaktiviere geht es wieder.
Ich habe unter den Erweiterten Einstellungen auch mal den Redis Cache aktiviert, da mein WP mit Redis Object Cache läuft. Dann ändert sich auch nichts.
Ich frage mich nun was habe ich Falsch gemacht? Liegt es an Cloudflare oder an meiner Docker Config.
Wer möchte kann sich das ganze ja mal anschauen ich habe sie auf Pastebin gestellt:
Crowdsec: https://pastebin.com/RLQxxawD
Wordpress: https://pastebin.com/dNw7UCid
Ich bekomme beim Testen: Technical error while testing bouncer connection: Unexpected HTTP call failure.
Klappt also nicht. Haat jemand n Tipp?
LG Hardy
Ich hab jetzt deine Anleitung durchgeackert und bin beim testen des Bouncing gescheitert.
Nach mehreren Fehlversuchen hat es mit der LAPI URL http://crowdsec:8080 und dem API Key dann geklappt “Test Bouncing” auszuführen ohne Fehler.
Ich bekomme zwar eine grüne OK Bestätigung aber der “Result is: bypass.” Auf die Webseite komme ich danach uneingeschränkt ohne Capcha.
Das Bouncing Level habe ich auf “Normal Bouncing” eingestellt also hätte ich erwartet dass das Result “captcha” sein müsste.
Ein Test mit “cscli decisions add -i 1.2.3.4 –duration 15m –type captcha” aktiviert das captcha und geht auch mit “cscli decisions remove -i 1.2.3.4” wieder weg.
Ich hab in den COLLECTIONS vom crowdsec docker-compose.yml noch “crowdsecurity/linux crowdsecurity/sshd crowdsecurity/nextcloud crowdsecurity/wordpress ” hinzugefügt für meine WordPress und Nextcloud instanzen wie auch dem “crowdsec-firewall-bouncer-iptables” den ich lokal auf dem VPS installiert habe. Brauch ich die wirklich oder geht das auch ohne? EDIT: Mittlerweile läuft es ohne “crowdsecurity/wordpress” in den COLLECTIONS aber macht keinen Unterschied.
Scheint soweit alles zu klappen aber ich verstehe noch nicht wirklich wie die das alles zusammenhängt mit diesen Bouncern. Ich hatte einen “wordpress-bouncer” mit API Key eingerichtet und verwendet. Dieser erschien auch in “cscli metrics list” nach dem Bouncing Test. Bin aber nicht sicher ob ich den brauche. Wenn ich den API Key vom Traefik Bouncer verwende ist das Endresultat das gleiche. Es erscheint zwar kein wordpress-bouncer mehr in “cscli metrics list” aber das Test Ergebnis bleibt OK mit “Result is: bypass.” und ohne Blocking. Unter “cscli decisions list” finde ich auch kein Hinweis dass die IP geblockt ist.
Also entweder versteh ich diesen Blocking Tests komplett falsch und jage einem Phantom nach oder der Test kommt zwar OK zurück aber die getestete IP wird nicht geblockt.
Wo könnte da der Fehler liegen?
Ich wäre froh um ein paar Hinweise.
Danke und Gruss
Thomas
p.s. Warum ist eigentlich der Screenshot vor dem “Test Bouncing” in der Anleitung nur für Community Plus Mitglieder?