Schlagwort-Archive: WP fail2ban

WP fail2ban: Gutes Plugin mit ausbaufähiger Dokumentation

WP fail2ban ist ein Plugin zum Schutz von WordPress-Installationen vor Brute-Force-Angriffen. Installation und Konfiguration habe ich bereits im Artikel WordPress mit Fail2Ban vor Brute-Force-Angriffen schützen dokumentiert. Dieser Text beschäftigt sich mit der offiziellen Dokumentation des Plugins, bzw. dem Text, der sich als Dokumentation ausgibt.

Ich stelle hier meine Erwartung an eine Dokumentation heraus, zeige die Schwächen der exemplarisch ausgewählten Dokumentation heraus und gebe einen Tipp, wie man weniger schlechte Dokus schreibt. Ich schließe mit Fragen an meine Leserinnen und Leser und freue mich auf eure Rückmeldungen.

In meinen Augen sind folgende drei Abschnitte zwingender Bestandteil einer jeden Dokumentation:

  1. Was ist dies für eine Anwendung? Wofür wird sie verwendet und wofür nicht?
  2. Wie wird diese Anwendung installiert?
  3. Wie wird diese Anwendung konfiguriert?

Die ersten beiden Punkte mag ich als erfüllt betrachten. Beim dritten Punkt sehe ich ein Problem.

Bildschirmfoto der WP fail2ban-Installationsanleitung. Zeitstempel 2023-06-04T20:54+02

Die Installationsanleitung ist prägnant. Sie enthält einen Link, der suggeriert, zur Konfigurationsanleitung zu führen. Dort erwartet den neugierigen Leser folgendes Bild.

Bildschirmfoto vom Einstieg in die WB fail2ban-Konfigurationsanleitung. Zeitstempel 2023-06-04T20:59+02

Hier gibt es noch keine nützlichen Informationen zu sehen. Die Seite ist in meinen Augen überflüssig. Aber gut, ein Satz tut nicht weh. Mit einem Klick auf „Next“ geht es weiter.

Bildschirmfoto WP fail2ban-Dokumentation. Zeitstempel 2023-06-04T21:04+02

Hier steht im Wesentlichen, dass Nutzer, welche sich bereits auskennen, zum nächsten Abschnitt gehen können. Leider finden sich für neue Nutzer hier kaum brauchbare Informationen. Der Hinweis, die Datei wp-config.php zu sichern, bevor man diese bearbeitet, ist nett, mehr nicht. Es wird erwähnt, dass die freie (im Sinne von Freibier) Version des Plugins durch Definition von Konstanten in der Datei wp-config.php konfiguriert wird. Wie so eine Konstante aussieht oder wo man weiterführende Informationen dazu findet, steht hier nicht. Ich habe an dieser Stelle entsprechende Hinweise erwartet. Gut, ich kann ja noch auf „Next“ klicken.

Bildschirmfoto WP fail2ban-Dokumentation, Abschnitt Logging. Zeitstempel 2023-06-04T21:14+02

Auch in diesem Abschnitt findet sich keine Information, was man nun mit der Datei wp-config.php soll. Immerhin gibt es in Abschnitt 4.2.1. einen Link, der Nutzer, welche nicht mit der Konfiguration vertraut sind, zur Konfigurationsanleitung führen soll. Ich habe ein Déja Vu und fühle mich langsam ver…hohnepiepelt. Also klicke ich auf den nächsten LInk. Es heißt ja schließlich: „Was lange währt, wird endlich gut.“

TL;DR: Auch auf der nächsten Seite erfahren wir nichts über die wp-config.php.

Bildschirmfoto der URL: https://docs.wp-fail2ban.com/en/5.0/configuration/fail2ban.html#configuration-fail2ban. Zeitstempel 2023-06-04T21:21+02

Zur Erinnerung: Ich nutze die freie Version des Plugins WP fail2ban, welches angeblich durch die Definition von Konstanten in der Datei wp-config.php konfiguriert wird. Welche Konstanten dies sind und wie man diese konfiguriert, wird auch auf Seite 4 immer noch nicht mit einem Wort erklärt.

Stattdessen lernt man in Abschnitt „4.3.1.1. Typical Settings“, dass die Dateien wordpress-hard.conf und wordpress-soft.conf in das Verzeichnis fail2ban/filters.d zu kopieren sind. Hier wurden in meinen Augen zwei Fehler gemacht:

  1. Es wird nicht erwähnt, wie man die Dateien wordpress-,{hard,soft}.conf erhält bzw. erstellt. Als unerfahrener Nutzer strandet man hier. Zum Glück hatte ich mir das damals aufgeschrieben.
  2. Es wird eine relative Pfadangabe fail2ban/filters.d genutzt. Dies ist nicht ganz so wild, ich persönlich bevorzuge es, wenn vollständige Pfadangaben genutzt werden, damit Nutzer das entsprechende Verzeichnis sicher finden.

Fazit

Eine Dokumentation sollte die notwendigen Informationen bereitstellen, mit denen auch neue Nutzer eine Anwendung installieren und konfigurieren können. Dies ist nicht so leicht, wie es auf den ersten Blick erscheint, leiden Autoren, welche die Anwendung bereits kennen, doch häufig unter Betriebsblindheit und können sich nur schwer in die Rolle des unerfahrenen Nutzers versetzen.

Wenn ich selbst Dokumentationen schreibe, gebe ich diese meist Kolleginnen und Kollegen zu lesen und arbeite deren Rückmeldungen mit ein. Dies hat in der Vergangenheit zu deutlich besseren Ergebnissen geführt.

Die hier kritisierte Dokumentation ist ein Beispiel dafür. Sie befindet sich damit leider in guter Gesellschaft im Internet.

Ohne meinen Eingangs erwähnten Artikel hier im Blog wäre ich nicht in der Lage gewesen, mir dieses Plugin wieder einzurichten. Nun werde ich einige Tage prüfen, ob es wie erhofft arbeitet und dann ggf. einen Merge-Request mit einigen Verbesserungsvorschlägen einreichen.

Fragen an meine Leserinnen und Leser

Wie steht ihr zu Dokumentation? Ist das eher etwas für alte weiße Männer mit grauen Bärten? Oder wünscht ihr euch ebenfalls belastbare und ausführliche Dokumentationen zu den von euch verwendeten Anwendungen?

Tragt ihr selbst zu Dokumentationen bei? Welche Erfahrungen habt ihr dabei gemacht? Welche Tipps könnt ihr Schreiberlingen geben, die ihr Projekt dokumentieren möchten?

Bitte hinterlasst mir eure Antworten in den Kommentaren oder im Chat.

WordPress mit Fail2Ban vor Brute-Force-Angriffen schützen

Laut W³Techs basieren 43 % aller Webseiten auf WordPress (Stand: 05.12.2021). Damit erreicht es einen Marktanteil von ca. 65 % bei den Content-Management-Systemen. Ein so weit verbreitetes System stellt ein beliebtes Angriffsziel für Skript-Kiddies und Internet-Schurken dar. Es ist also nicht die Frage, ob die eigene WordPress-Instanz Ziel eines Angriffs wird, sondern wann dies der Fall ist. So verzeichnete dieser Blog allein im letzten Monat 190.492 erfolglose Anmeldeversuche.

Gegen das Ausnutzen von Sicherheitslücken hilft nur patchen, patchen und nochmals patchen. Doch geht es hier nicht um Updatestrategien. Dieser Artikel setzt auf dem Text unter [1] auf und dokumentiert in Kürze, wie man sich mit Fail2Ban gegen Brute-Force-Angriffe schützen kann. Dabei geht dieser Artikel davon aus, dass auf dem System bereits eine lauffähige Version von Fail2Ban vorhanden ist. Wer Unterstützung bei der Installation benötigt wird unter [3] fündig.

Installation des Plugins WP fail2ban

WP fail2ban – Advanced Security Plugin von Charles Lecklider sorgt dafür, dass sämtliche Loginversuche (erfolglose wie erfolgreiche) in Syslog bzw. /var/log/auth.log protokolliert werden.

Das Plugin muss lediglich installiert und aktiviert werden. Es ist Voraussetzung, um den Filter aus dem folgenden Abschnitt nutzen zu können.

Konfiguration des Fail2Ban-Filters und -Jails

Update 12.05.2022: Danke an Jens für seinen Hinweis in den Kommentaren. Ich habe den Artikel entsprechend aktualisiert.

Im ersten Schritt werden vorkonfigurierte Filter-Datein heruntergeladen:

$ wget https://plugins.svn.wordpress.org/wp-fail2ban/trunk/filters.d/wordpress-hard.conf
$ wget https://plugins.svn.wordpress.org/wp-fail2ban/trunk/filters.d/wordpress-soft.conf
$ sudo mv wordpress-*.conf /etc/fail2ban/filter.d/

Aktiviert wird die Filter-Regel, indem die Datei /etc/fail2ban/jail.d/wordpress.conf mit folgendem Inhalt erstellt wird:

[wordpress-hard]
enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 3
port = http,https
findtime = 10800 # 3h
bantime = 86400 # 24h

[wordpress-soft]
enabled = true
filter = wordpress-soft
logpath = /var/log/auth.log
maxretry = 3
port = http,https
findtime = 10800 # 3h
bantime = 86400 # 24h

Die dargestellte Konfiguration führt dazu, dass IP-Adressen bei mehr als 3 fehlgeschlagenen Anmeldeversuchen innerhalb von 3 Stunden für 24 Stunden gebannt werden.

Den Status, die Anzahl der fehlgeschlagenen Anmeldeversuche sowie die gebannten IP-Adressen, können mit folgendem Kommando abgerufen werden:

$ sudo fail2ban-client status wordpress-hard
Status for the jail: wordpress-hard
|- Filter
|  |- Currently failed:	18
|  |- Total failed:	19
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	0
   |- Total banned:	0
   `- Banned IP list:

Der Status des Jail für wordpress-soft wird dementsprechend mit sudo fail2ban-client status wordpress-soft abgefragt.

Damit ist dieser Artikel auch schon am Ende angekommen. Der folgende Abschnitt bietet noch ein paar Links zu weiterführenden Informationen.

  1. Fail2Ban – Schutz vor Brute-Force-Angriffen. Christoph Dyllick-Brenzinger. 3. Juni 2015.
  2. Wikipedia-Artikel Fail2ban — https://de.wikipedia.org/wiki/Fail2ban
  3. fail2ban im Ubuntuusers-Wiki — https://wiki.ubuntuusers.de/fail2ban/
  4. WordPress-Plugin Seite zu WP fail2ban – Advanced Security Plugin — https://de.wordpress.org/plugins/wp-fail2ban/
  5. Projektseite WP fail2ban — https://wp-fail2ban.com/
  6. https://docs.wp-fail2ban.com/en/4.4/configuration/fail2ban.html