Debian Apache2 Webserver blockieren IP-Adresse mit vielen xmlrpc.php Requests

Unix Shell

Auf einem Webserver läuft ein WordPress Blog. Per Zabbix erhielt ich die Benachrichtigung, dass die User CPU Time seit ein paar Minuten sehr hoch ist. Im nachfolgenden Graphen gut zu erkennen, wobei der Fall der Linie am Ende, nach unten genannter Lösung der Blockierung der IP-Adresse, erfolgreich war.

Zabbix User CPU Time
Zabbix User CPU Time

Ich schaute auf den Debian – Apache2 – Webserver und fand per Tool atop heraus, dass besagter Blog diese hohe CPU Last erzeugt. Ein weiterer Blick in den access.log der Webseite, zeigte eine sehr schnelle Anfrage der xmlrpc.php Datei:

xxx.xxx.xxx.xxx - - [07/Jan/2022:22:19:14 +0100] "POST //xmlrpc.php HTTP/1.1" 200 6188 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"

Meine erste Idee war es, die Funktion der API-Aufrufe von WordPress zu deaktivieren und so den externen Zugriff auf die xmlrpc.php zu unterbinden. Da in dem WordPress Blog jedoch ein paar Plugins laufen, die dies brauchen, war es keine Option.

Eine weitere Möglichkeit kannte ich noch, nämlich mittels Route-Befehl die IP-Adresse zu blockieren. Das sieht dann in der Linuxshell wie folgt aus und wirkt sich für alle Seiten des Servers aus:

# route add -host xxx.xxx.xxx.xxx reject

Die gesetzten Routen können wie folgt angezeigt werden:

# route -n
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
0.0.0.0         xxx.xxx.xxx.xxx 0.0.0.0         UG    0      0        0 eth0
xxx.xxx.xxx.xxx 0.0.0.0         255.255.255.255 UH    0      0        0 eth0
165.227.221.200 -               255.255.255.255 !H    0      -        0 -
xxx.xxx.xxx.xxx      0.0.0.0    255.255.0.0     U     0      0        0 docker0

Sollte man nun einen Fehler gemacht haben, oder möchte die Blockierung der IP-Adresse wieder entfernen, einfach dies ausführen:

# route del xxx.xxx.xxx.xxx reject

Dazu noch eine Anmerkung. Die Routingtabelle kann je nach System und genutzten Anwenden / Tools automatisch neu aufgebaut werden und somit geht der Eintrag verloren, ebenso wird beim Systemneustart / Reboot, die Routingtabelle erneuert. Hier ist es sicherlich besser Funktionen von fail2ban oder iptables bzw ufw zu verwenden.

Thats it .. Have Fun.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.