Ist auf 512M, besser, oder?
Sorry, Schreibfehler meinerseits. 32GB RAM, natürlich. Der Server ist virtualisiert und der Webserver liegt in einer VM mit 16GB RAM.
Würdest du bei fail2ban einfach die Requests limitieren, wie bei dem Link oben? Oder wie würdest du bei der Konfiguration da vorgehen, die Kiddys haben ja kein spezielles Angriffsmuster.
Ein Scherz, dass das ein herkömmlicher Plesk-Webserver ohne fail2ban nicht mal einigermaßen packt ... wollte schon umsteigen, die brauchen aber unbedingt die Plesk-Verwaltung (wollen auf nichts anderes wechseln)
Ich würde auf Apache verzichten und ausschließlich nginx verwenden. Nginx bekommt das zum einen selbst ganz gut gebacken und ist zweitens deutlich effizienter.
Desweiteren ist leider relativ wenig von der Konfiguration der Webserver und php-fpm oder was auch immer du verwendest bekannt. Die Tatsache das der Server viel RAM hat macht tatsächlich wenig aus, wenn du die power nicht nutzt. Im übrigen würde mich noch brennend interessieren was in der nginx.conf steht.
------------------------------------------------------------------
OK, kurzes Update hier: Gerade wieder ein Angriff da gewesen und in htop mal mitgeschaut. Die CPU ist tatsächlich auf den insgesamt 4 Cores für die VM komplett auf 100%.
Eine Attacke sah gerade eben so aus:
Was kann da los sein, dass die CPU derart eskaliert?
Jetzt nutzt du schon Cloudflare und nutzt die Cache funktion scheinbar nicht. Da du ja geschrieben hast das dir das zu gefährlich ist pauschal zu cachen via Cloudflare wäre die Überlegung doch nahe mittels entsprechender Header z.B. Bilder, CSS und JS auf Langzeit zu cachen und dynamischen Inhalt für 5 Sekunden oder was in dem Dreh. Da kann man je nach Seite bestimmt nochmal deutlich optimieren durch entsprechende Weiterentwicklung. Würde ja schon reichen wenn man die Kommentare via XHR nachlädt (ohne Cache Funktion) und den Rest einfach für 1h oderso cached.
Übrigens: du kannst dir ja mal anschauen von welchen IP's die Anfragen ursprünglich abgesendet werden. Steht in $_SERVER["HTTP_CF_CONNECTING_IP"] Variable.
------------------------------------------------------------------
Sich den Useragent mal anzuschauen könnte vielleicht hilfreich sein, ist es aber in den wenigsten Fällen. Welcher Angreifer ist so blöd und nimmt einen UA mit dem er identifizierbar und problemlos sperrbar ist? Sofern man ne Message hinterlassen will gepaart mit nem Angriff reicht auch ne Mail + der Angriff.