Idea macabra:
<?
$fp=fopen("Control.txt","at"); fwrite($fp,$_SERVER['REMOTE_ADDR'] . "\n"); ?>
Este archivo lo borrarías cada día y luego tendrías que ejecutar un script PHP que te busque coincidencias de IP, si en el archivo llegas a 30 coincidencias quiere decir que esa máquina se ha conectado a esa dirección 30 veces en menos de un día luego podrías bloquearla, creando otro archivo php de control, les rediriges ahí en cada conexión y si coinciden, les deniegas la conexión hasta el siguiente día o hasta que quieras.
No es buena forma de hacerlo, nunca lo he probado pero creo que funcionaría, quizás le falten unas cosas, pero tampoco me parece mala idea, lo único que si la web es muy visitada puede pinzarse, aunque podrías borrar el archivo cada hora y si alguien se conecta mas de 20 veces en esa hora le deniegas conexión todo el día por ejemplo.
Edito: me quedo con la de ivancea.
Saludos.