Versuchen Sie dies nicht mit PHP. Zum Zeitpunkt, an dem PHP beteiligt ist, ist es bereits zu spät - der Speicher wurde bereits zugewiesen.
Sie können IP-Adressen auf jeder Ebene sperren, aber die niedrigste Ebene, die am wenigsten Ressourcen verbraucht, ist die Route, die Sie einschlagen möchten. Dies ist normalerweise die Firewall. Zumindest möchten Sie iptables (Linux-Firewall) verwenden. Es gibt Tools wie Fail2Ban, die dies für Sie automatisieren können. Externe Firewall wäre besser.
Neben dem Versuch, beleidigende IP-Adressen zu sperren, sollten Sie versuchen, Ihre Ressourcen besser zu nutzen. Wenn eine Anfrage weniger Ressourcen beansprucht, dauert es länger, bis ein Angriff effektiv ist.
Apache verwendet auch viel Speicher. Wenn Sie mod_php verwenden, ist es noch schlimmer, da PHP in jedem untergeordneten Apache-Prozess geladen wird. Dies bedeutet, dass auch Anforderungen an statischen Inhalt (CSS / JS / Images) PHP laden, auch wenn PHP nicht verwendet wird. Sie können dieses Problem lösen, indem Sie stattdessen FastCGI verwenden. mod_fcgid ist eine gute Option.
Es gibt auch andere Webserver, die ressourceneffizienter sind. Nginx ist mein Favorit. Es gibt auch Lighttpd. Viele Leute mögen Litespeed (Ersatz für Apache).
Wenn Sie bei Apache bleiben möchten, sollten Sie ihn so gut wie möglich optimieren. Deaktivieren Sie .htaccess. Hier ist eine gute Erklärung, warum .