Fail2ban für WordPress einrichten

Beim Betrieb eines Servers wird der Nutzer schnell feststellen, dass er nicht der einzige ist, der gerne Zugriff auf den Ser­ver hätte. Um zu häu­fige Log­in­ver­su­che abzu­blo­cken, gibt es Fail2ban. Die­ses Pro­gramm­pa­ket durch­sucht die ent­spre­chen­den Logs und blockiert bös­wil­lige Ver­su­che, in das Sys­tem ein­zu­bre­chen. Damit gehört Fail2ban zu den Intru­sion Preven­tion-Sys­te­men. Damit kann es auch zur Auswertung von Login-Versuchen auf die eigenen WordPress-Installationen genutzt werden. Wer in die Logs schaut, wird dort ähnliche Zeilen finden:

18.217.216.181 – – [23/Nov/2021:19:32:40 +0100] „POST /wp-login.php HTTP/1.1“ 200 8408 „https://seeseekey.net/wp-login.php“ „Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0“

Um WordPress mit Fail2ban zu verheiraten muss ein einsprechender Jail und ein Filter angelegt werden. Was mich im Vorfeld in Bezug auf WordPress irritierte war der Statuscode 200, wenn ein Login in WordPress fehlschlägt. Hintergrund ist hier das WordPress bei einem erfolgreichen Login stattdessen den Statuscode 302 (Found) nutzt. Damit kann im ersten Schritt der Jail für Fail2ban erstellt werden:

nano /etc/fail2ban/jail.d/wordpress.conf

Diese Datei wird nun wie folgt befüllt:

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 3

Anschließend muss der genutzte Filter ebenfalls angelegt werden:

nano /etc/fail2ban/filter.d/wordpress.conf

Der entsprechende Filter sieht wie folgt aus:

# Filter for WordPress login

[INCLUDES]

before = common.conf
 
[Definition]

failregex = <HOST>.*POST.*(wp-login\.php|xmlrpc\.php).* 200

datepattern = %%d/%%b/%%Y:%%H:%%M:%%S %%z

Nach einem Neustart von Fail2ban mittels:

service fail2ban restart

ist der neue Jail aktiv. Über das Log kann die Arbeit desselben betrachtet werden:

tail -f /var/log/fail2ban.log

Damit sind die WordPress-Installationen gegen den Versuch unbefugter Logins besser abgesichert. Nach drei Fehlversuchen, wird die entsprechende IP-Adresse gesperrt, sodass weitere Verbindungsversuche von dieser IP-Adresse vom Server nicht mehr beantwortet werden.

Software unter Windows über die Kommandozeile installieren

Linux hat seinen Paketmanager, macOS hat Homebrew – unter Windows sieht es etwas mau aus, was die Installation von Applikationen auf der Kommandozeile angeht. Mittels des Werkzeuges Scoop kann dies allerdings geändert werden. Nach der einmaligen Installation von Scoop können über dieses Werkzeug Applikationen über die Kommandozeile installiert werden:

scoop install curl

Die Applikationen werden im Benutzerverzeichnis des angemeldeten Nutzers installiert, sodass keine administrative Berechtigungen für die Installationen benötigt werden.

scoop.sh

Die offizielle Seite des Projektes ist unter scoop.sh zu finden. Der Quelltext von Scoop ist auf GitHub zu finden und Freie Software. Er ist unter der The Unlicense-Lizenz lizenziert.

Lizenzhinweisgenerator für die Wikipedia und Commons

Wer Inhalte aus der Wikipedia oder der Wikimedia Commons nutzen möchte, sollte sich natürlich auch an die entsprechenden Nutzungsbedingungen der freien Lizenzen halten. Damit dies leicht von der Hand geht, gibt es ein passendes Werkzeug dafür: den Lizenznachweisgenerator.

Der Lizenzhinweisgenerator

Mithilfe des Generators ist es möglich, schnell einen entsprechenden Lizenzhinweis zu erstellen, um diesen anschließend zu nutzen. Dieser wird anhand der entsprechenden Lizenz (z. B. einer Creative Commons-Lizenz) des Inhaltes passgenau erstellt. Zu finden ist der Generator unter lizenzhinweisgenerator.de. Der Quelltext des Generators befindet sich auf GitHub, ist unter der GPL3 lizenziert und damit Freie Software.

bsnes unter elementaryOS installieren

Unter elementaryOS kann bsnes leider nicht ohne weiteres aus den offiziellen Paketquellen installiert werden. Es befindet sich nur Higan in diesen. Higan entstand aus bsnes und aus diesem wiederum bsnes in seiner neusten Inkarnation. Über Flatpak und das entsprechende Repository Flathub kann bsnes trotzdem installiert werden. Dazu muss dieses im Terminal aktiviert werden und anschließend das bsnes-Paket installiert werden:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub dev.bsnes.bsnes

Nachdem die Anweisung für die Installation abgeschickt wurde, muss die Installation einmal bestätigt werden:

Looking for matches…

dev.bsnes.bsnes permissions:
    ipc      network      pulseaudio      x11     devices     file access [1]     dbus access [2]

    [1] home:ro
    [2] org.a11y.*


        KENNUNG                 Zweig          Op         Remote          Download
 1.     dev.bsnes.bsnes         stable         i          flathub         < 4,5 MB

Proceed with these changes to the system installation? [Y/n]: 

Danach wird bsnes installiert und kann anschließend genutzt werden. Das offizielle Repository von bsnes ist auf GitHub zu finden, die entsprechende Webseite unter bsnes.dev.

Update-Skript für elementaryOS

Unter elementaryOS nutze ich neben der integrierten Paketverwaltung unter anderem auch Snappy und Flatpak. Es ist zwar unschön das sich die zentrale Paketverwaltung dadurch etwas zersplittert, aber leider existieren nicht alle benötigen Pakete in der Paketverwaltung. Bedingt dadurch fand ich den Update-Prozess allerdings etwas umständlich, sodass ich das Ganze in ein kleines Skript gegossen habe:

#!/bin/bash
apt autoremove -y && apt autoclean -y && apt update -y && apt dist-upgrade -y && apt autoremove -y && apt autoclean -y
flatpak update -y
snap refresh 
checkrestart

Mit dem Skript wird die zentrale Paketverwaltung aktualisiert, anschließend Snappy und dann Flatpak. Für die Nutzung des Kommandos checkrestart muss das Paket debian-goodies installiert werden.