Anda harus menghindari mencoba melakukan ini dengan PHP. Pada saat PHP terlibat, sudah terlambat - memori telah dialokasikan.
Anda bisa mencekal alamat IP di setiap lapisan, tetapi level terendah yang menggunakan sumber daya paling sedikit adalah rute yang ingin Anda ambil. Ini biasanya firewall. Paling tidak, iptables (linux firewall) adalah apa yang ingin Anda gunakan. Ada alat yang disebutkan orang lain, seperti Fail2Ban, yang dapat mengotomatisasi ini untuk Anda. Firewall eksternal akan lebih baik.
Selain mencoba untuk melarang menyinggung alamat IP, Anda harus mencoba memanfaatkan sumber daya Anda dengan lebih baik. Jika permintaan membutuhkan lebih sedikit sumber daya, serangan akan menjadi lebih lama.
Apache juga menggunakan banyak memori. Jika Anda menggunakan mod_php, itu lebih buruk karena PHP dimuat di dalam setiap proses anak Apache. Ini berarti bahkan permintaan untuk konten statis (css / js / gambar) memuat PHP bahkan ketika PHP tidak digunakan. Anda dapat menyelesaikan masalah ini dengan menggunakan FastCGI. mod_fcgid adalah opsi yang bagus.
Ada juga server web lain yang lebih efisien sumber daya. Nginx adalah favorit saya. Ada juga Lighttpd. Banyak orang menyukai Litespeed (mampir pengganti Apache).
Jika Anda ingin tetap menggunakan Apache, pertimbangkan untuk menyetelnya sebaik mungkin. Pertimbangkan untuk menonaktifkan .htaccess. Inilah penjelasan yang bagus mengapa .