Tengo implementado un sistema de bloqueos por URL (ya saben tipo /wp/login.php etc...), Usert Agent (Claramente modificados), Session (Previamente detectadas).
Si alguno de la lista se encuentra en el blacklist la IP se bloquea por algunas horas y ando un codigo de error 500.
La pregunta por recomendación aquí: ¿Es el mejor camino a seguir?, es decir ¿Bloquear el acceso y mandar error 500 o 404 es la mejor forma de proceder?
Saludos
Lo del userAgent es tontería, solo es cambiarlo. Y hasta en cacharros tontos puedes meter un proxy de por medio. Y la ip más de lo mismo, son todas dinámicas asique como mucho te sirve para dar un poco por culo bloqueándole proxies, pero es poner una lista de proxies y elegir uno random. Lo único para lo que te va a servir es para bloquear a usuarios legits por error xD
A quien no sabe hacer lo anterior, no te vale la pena bannearlo, porque poca amenaza es y como mucho te tira escáneres autos desde su casa y cuando le cambien la IP ya puede volver.
Y a usuarios normales/avanzados no les haces nada, se cambian la ip y el userAgent en 1 minuto.
Si tuvieses un sitio de arte con pintauñas tendría sentido, pero subiendo cosas de desarrollo lo normal es que quien te visite sepa resetear el router, usar proxies y cambiar de userAgent escribiendo una url en el navegador, usando una extensión, un proxy local, etc.
Lo que puedes hacer es descargar una lista programáticamente de ips de Tor y proxies comunes, pero no sirve de mucho.
Si bloqueas hazlo desde el .config que desde el .htaccess va mucho peor.
Si te da igual el rendimiento puedes hacer fingerprint y bannear por el hash de fingerprint(de hardware) si es único. Si el usuario es legit le abres una sessión para que pueda ver tu sitio. Al menos si es un hdp le fuerzas a emular.