Bạn nên tránh cố gắng làm điều này với PHP. Vào thời điểm PHP tham gia, đã quá muộn - bộ nhớ đã được phân bổ.
Bạn có thể cấm địa chỉ IP ở bất kỳ lớp nào, nhưng mức thấp nhất sử dụng ít tài nguyên nhất là tuyến đường bạn muốn đi. Đây thường là tường lửa. Ít nhất, iptables (tường lửa linux) là những gì bạn muốn sử dụng. Có những công cụ mà người khác đã đề cập, chẳng hạn như Fail2Ban, có thể tự động hóa việc này cho bạn. Tường lửa bên ngoài sẽ tốt hơn.
Bên cạnh việc cố gắng cấm các địa chỉ IP vi phạm, bạn nên cố gắng sử dụng tốt hơn các tài nguyên của mình. Nếu một yêu cầu mất ít tài nguyên hơn, sẽ mất nhiều thời gian hơn để một cuộc tấn công có hiệu quả.
Apache cũng sử dụng rất nhiều bộ nhớ. Nếu bạn đang sử dụng mod_php, điều đó còn tồi tệ hơn vì PHP được tải bên trong mọi tiến trình con của Apache. Điều này có nghĩa là ngay cả các yêu cầu đối với nội dung tĩnh (css / js / hình ảnh) đang tải PHP ngay cả khi PHP không được sử dụng. Bạn có thể giải quyết vấn đề này bằng cách sử dụng FastCGI thay thế. mod_fcgid là một lựa chọn tốt.
Ngoài ra còn có các máy chủ web khác có hiệu quả tài nguyên hơn. Nginx là yêu thích của tôi. Ngoài ra còn có Lighttpd. Rất nhiều người như Litespeed (thay thế cho Apache).
Nếu bạn muốn gắn bó với Apache, hãy cân nhắc điều chỉnh nó tốt nhất có thể. Xem xét vô hiệu hóa .htaccess. Đây là một lời giải thích tốt tại sao .