Nicht der erste Artikel zum Thema, aber ein weiterer zur Hilfe gegen unerwünschten Spam welcher über die xmlrpc.php von WordPress abgeliefert wird.
Plattform: Plesk kontrollierter Debian Server mit Fail2ban und mehreren WordPress Installationen.
Fail2ban ist bereits Bestandteil von Plesk und sollte auf jeden Fall aktiviert werden da es auch gegen Attacken via SSH oder anderen Diensten wirkt. Das Problem mit Spam Versuchen über die xmlrpc.php häuft sich in letzter Zeit, eine Abhilfe über WordPress ist zwar möglich aber nicht effektiv. Filterversuche in WordPress (Plugins) gelingen zwar aber führen dazu das erst der komplette Overhead von WordPress geladen werden muss um auf den Spam zu reagieren. Mit Fail2ban wird die IP Adresse des Spambots aber bereits vorher geblockt, die Einlieferung wird gar nicht erst möglich.
Eigenen Filter definieren
Im Ordner /etc/fail2ban/filter.d die Datei anlegen: wordpress-xmlrpc.conf mit folgenden Inhalt:
[Definition] failregex = ^<HOST> .*POST .*xmlrpc\.php.* ignoreregex =
Eigene Jail definieren
Im Ordner /etc/fail2ban/jail.d die Datei anlegen: wordpress-xmlrpc.conf mit dem Inhalt:
[wordpress-xmlrpc] enabled = true filter = wordpress-xmlrpc action = iptables-multiport[name="wordpress-xmlrpc", port="http,https"] logpath = /var/www/vhosts/system/*/logs/*access*log maxretry = 5 bantime= 43600
Dies sind beide notwendigen Konfigurationen die die Angriffe filtern werden.
Aktivieren
Fail2Ban neu starten:
# service fail2ban restart
Somit wird fail2ban neu gestartet. Es werden jetzt die Apache Logfiles der Plesk Domains und Subdomains überwacht und Angriffe auf die xmlrpc.php werden registriert, die IP Adressen via iptables gesperrt.
Bitte setzt das ganze nicht einfach Blind ein sondern überwacht das ganze vor allem am Anfang. Wer viele WordPress Installationen auf dem System hat wird vor allem nach dem Neustart von Fail2ban erst einmal eine höhere Systemlast feststellen bis alle log Files verarbeitet wurden.
Die Überwachung des gesamten Prozesses ist in Plesk möglich, die Jail wird mit aufgelistet und geblockte IP Adressen werden in der Liste der gesperrten IP Adressen mit angezeigt.
Plesk Obsidian
In Plesk Obsidian befindet sich ein fertige Jail Definition für wp-login! Diese könnt ihr einfach aktivieren um die Badbots auszusperren die WP mit Login Versuchen befeuern.
Hi, vielen Dank für die Anleitung.
Wie kann ich das ganze Testen ob es funktioniert?
Ich habe ein WP Instanz aufgesetzt, wenn ich die Datei abrufe kommt:
XML-RPC server accepts POST requests only.
😀
LG
Der Block mit Fail2ban erfolgt ja erst wenn wirklich gespamt wird. Also die xmlrpc mehrere male i möglichst kurzen Intervallen aufrufen, dann sollte fail2ban eingreifen.