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.

Probleme mit iOS 15 und 1Blocker

Seit dem Update auf iOS 15.1 hatte ich auf meinem iPhone ein seltsames Verhalten beobachtet. Sobald ich nur noch im Mobilfunk-Netz eingewählt war, konnten bestimmte URLs per DNS nicht mehr aufgelöst werden. Im Grunde fühlte es sich so an, als ob das halbe Internet nicht mehr erreichbar war.

Über die Einstellungen von 1Blocker kann das Problem umgangen werden

Nach einiger Analyse stellte ich dann fest, das die Probleme im Zusammenhang mit der App 1Blocker bzw. deren In-App-Tracker-Firewall, welche als lokales VPN unter iOS konfiguriert wird, standen.

‎1Blocker - Ad Blocker
Preis: Kostenlos+

Nach Auskunft des Entwicklers der App gab es unter iOS wohl einige Änderungen an den Einstellungen für mobiles Netzwerk, die auch die App betreffen. In den Einstellungen der Firewall von 1Blocker kann der Filtermodus auf HTTP Proxy gesetzt werden. Anschließend funktioniert die In-App-Tracker-Firewall auch bei mobilem Internet wieder.

Erlaubte Dateitypen für den Upload unter WordPress

Wer Medien in einer WordPress-Installation hochladen möchte, kann dies im Normalfall ohne Probleme bewerkstelligen. Werden allerdings Dateitypen abseits der gewöhnlichen Dateitypen versucht hochzuladen, so erscheint eine entsprechende Meldung:

Dieser Dateityp ist aus Sicherheitsgründen leider nicht erlaubt

Hintergrund ist, das WordPress nur einige definierte Dateitypen im Upload zulässt. Plugins können diese Liste erweitern, daneben gibt es entsprechende Plugins, mit welchen die erlaubten Dateitypen verwaltet werden können.

File Upload Types by WPForms
Preis: Kostenlos

Eine andere Möglichkeit besteht darin die Konfiguration, welche in der Datei wp-config.php zu finden ist, um eine Zeile zu erweitern:

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Damit wird der entsprechende Upload-Filter abgeschaltet und alle Dateitypen können hochgeladen werden. Allerdings sollte diese Lösung mit Bedacht gewählt werden, da nun jegliche Dateitypen hochgeladen werden können.

jMonkeyEngine

Mit libGDX hatte ich vor einem Jahr bereits eine Game Engine für Java vorgestellt. Daneben existieren natürlich noch weitere Game Engines. Eine dieser Engines ist die jMonkeyEngine, welche seit 2003 entwickelt wird. Technisch basiert der SDK-Editor auf NetBeans-Plattform. Die Engine selbst nutzt OpenGL für die Darstellung der Grafik und verfügt über unterschiedlichste Features wie die Unterstützung für Beleuchtung, die Nutzung von Shadern, eine Reihe von Filtern und Effekten und eine Physikunterstützung. Daneben werden auch andere Dinge wie die Eingabe des Nutzers von der Engine abstrahiert.

Das jMonkeyEngine SDK

Lizenziert ist jMonkeyEngine unter der BSD-Lizenz und damit freie Software. Der Quelltext kann über GitHub bezogen werden. Die offizielle Seite des Projektes ist unter jmonkeyengine.org zu finden.

WordPress-Suchwidget auf bestimmte Post Types beschränken

Für eine WordPress-Installation war ich auf der Suche nach einer Möglichkeit die Suche bzw. im Speziellen das Suchwidget so zu beschränken das nur die Post Types page und post durchsucht und angezeigt werden. Möglich ist dies, indem ein Filter für pre_get_posts in die functions.php des Themens hinzugefügt wird:

function search_only_in_specific_post_types( $query ) {
	
  // Modify query (but only in frontend)
  if ( $query->is_search && is_admin() == false ) {
    $query->set( 'post_type', array( 'page','post') );
  }
	
  return $query;
}

add_filter( 'pre_get_posts', 'search_only_in_specific_post_types' );

Der Filter passt die Query an, wenn die Query für eine Suche genutzt wird und diese Nutzung aus dem Frontend heraus geschieht. Die Begrenzung auf des Frontend ist notwendig um keine Suchqueries im Backend zu stören. Damit würde die modifizierte Suche nur noch Dokumente mit dem Post Type page und post finden.