Bunu PHP ile yapmaya çalışmaktan kaçınmalısınız. PHP işin içine girdiğinde, zaten çok geç oldu - bellek zaten tahsis edildi.
IP adreslerini herhangi bir katmanda yasaklayabilirsiniz, ancak en az miktarda kaynak kullanan en düşük seviye almak istediğiniz yoldur. Bu genellikle güvenlik duvarıdır. En azından iptables (linux firewall) kullanmak istediğiniz şeydir. Bunu sizin için otomatikleştirebilecek olan Fail2Ban gibi başkalarının da bahsettiği araçlar var. Dış güvenlik duvarı daha iyi olurdu.
Suçlu IP adreslerini yasaklamaya çalışmanın yanı sıra, kaynaklarınızı daha iyi kullanmaya çalışmalısınız. Bir istek daha az kaynak alırsa bir saldırının etkili olması daha uzun sürer.
Apache ayrıca çok fazla hafıza kullanır. Mod_php kullanıyorsanız, PHP her Apache alt sürecinin içine yüklendiği için daha da kötüdür. Bu, PHP kullanılmadığında bile statik içerik (css / js / images) isteklerinin bile PHP yüklüyor demektir. Bunun yerine FastCGI kullanarak bu sorunu çözebilirsiniz. mod_fcgid iyi bir seçenek.
Daha fazla kaynak verimli başka web sunucuları da vardır. Nginx benim favorim. Ayrıca Lighttpd de var. Litespeed gibi pek çok insan (Apache'nin yerine).
Apache'ye bağlı kalmak istiyorsanız, olabildiğince iyi ayarlamayı düşünün. .Htaccess'i devre dışı bırakmayı düşünün. İşte neden iyi bir açıklama .