Mi sitio web recibe miles de visitas diarias de diferentes IP que intentan acceder:
/php-myadmin/
/myadmin/
/mysql/
... y miles de otras variaciones. Ninguno de estos directorios existe, ni siquiera tengo phpmyadmin en mi servidor.
No creo que ninguno de estos intentos haya tenido éxito, sin embargo, deben estar afectando los recursos del servidor y desperdiciando ancho de banda, por lo que me gustaría detenerlos si es posible. He bloqueado un puñado de estas IP pero siguen volviendo con IP nuevas, ¿hay alguna forma de evitar esto de forma más permanente?
web-server
hacking
amba88
fuente
fuente
mod_security
en este hilo, así que échale un vistazo . Tenga en cuenta que un comentario a continuación señala que, en realidad, esto haría que el servidor hiciera más trabajo Entonces quizásmod_evasive
también sería bueno implementarlo .fail2ban
, pero eso se enumera a continuación.Respuestas:
No te preocupes por eso. Servir un 404 es una cantidad muy pequeña de trabajo para un servidor web. Probablemente podría servir diez 404 por segundo usando un 486. El ancho de banda por 404 es insignificante; una pequeña solicitud GET y una pequeña respuesta 404.
Seriamente; no te preocupes por eso Esto es solo parte integrante de ejecutar un servidor en Internet.
fuente
Desafortunadamente para usted, así es como funciona Internet. Simplemente ignóralo. Miles de bots / troyanos escanean Internet. La IP de origen siempre será aleatoria. No existe cura.
La única solución 100% para eliminar ese tráfico se ilustra a continuación:
Una alternativa es:
- moverse con https / http desde el puerto 80/443 a otra cosa. Los bots generalmente no buscan el servidor http en todos los demás puertos de 65k.
- use VPN para conectarse al servidor (supongo que esto no es posible si aloja un sitio web público).
fuente
Lo que quieres es Fail2ban (suponiendo que se trata de una máquina Linux, no dijiste ...)
¿Qué es Fail2ban?
Fail2ban analizará los registros del sistema, buscando expresiones regulares particulares para bloquear. Cuando encuentra una coincidencia (o varias coincidencias desde la misma IP, dependiendo de cómo la configure), se bloqueará, generalmente a través de IPTables. Normalmente, esto se usa para bloquear intentos de autenticación fallidos contra SSH o servidores web.
Lo configura para prohibirlos durante un período de tiempo determinado (podrían ser minutos, podrían ser días ... depende de cuán persistentes sean), después de lo cual la prohibición caducará, a menos que lo intenten nuevamente.
¿Cómo ayuda esto a bloquear los bots de escaneo phpmyadmin?
Se puede usar con la misma facilidad para hacer coincidir los signos comunes de un ataque, como intentar acceder a carpetas phpmyadmin inexistentes. Tendrá que encontrar la expresión regular correcta para que coincida con dichos intentos y asegurarse de no bloquear usuarios legítimos.
La configuración dada en esta publicación de blog puede funcionar literalmente o requerir algunos ajustes para su configuración.
¿Por qué debería bloquearlos? Los errores 404 no cuestan mucho
Bloquearlos en iptables SÍ tiene algún uso: es probable que si están buscando vulnerabilidades de phpmyadmin, también pueden probar otros servicios para detectar vulnerabilidades, hasta que encuentren algo que funcione. Prohibirlos hará que la mayoría de los bots / scripts se den por vencidos después de un tiempo, y pasarán a mejores objetivos.
Incluso a través de los escaneos no cuestan mucho (a menos que realmente encuentren una vulnerabilidad), inundan sus registros haciendo que sea más difícil ver ataques exitosos y problemas con su servidor web.
Como dice el comentario a continuación, Fail2ban requiere algunos recursos del sistema. Pero no mucho. Por lo menos puedo decir que nunca he tenido un problema de rendimiento que podría atribuir a Fail2ban. Sin embargo, he tenido problemas de rendimiento debido a scripts muy agresivos que intentan forzar contraseñas de fuerza bruta o arrojan miles de intentos de inyección SQL y otras vulnerabilidades por segundo en mi servidor. Bloquearlos en el nivel de firewall requiere MUCHO menos recursos que bloquearlos en el nivel de servidor / aplicación. También se puede extender para ejecutar secuencias de comandos personalizadas para prohibir las direcciones IP, por lo que, en lugar de prohibirlas en tablas IP, es posible que las prohiba en un firewall de hardware o envíe un correo electrónico a alguien si la misma persona intenta atacarlo para que pueda quejarse a su ISP o haga que su centro de datos los bloquee en sus firewalls.
¿Algún otro consejo?
Se RECOMIENDA ALTAMENTE que incluya en la lista blanca algunas direcciones IP que controla para que no se bloquee accidentalmente.
fuente
Lo que hago es poner un pequeño script en el directorio apropiado, para que se ejecute si alguien accede a / phpmyadmin /. Ese script no hace nada más que invocar iptables (en Linux), que bloquea la dirección IP que accede al script durante 30 minutos (después de lo cual un trabajo cron vacía la cadena de iptables a la que se agrega la dirección IP).
La ventaja sobre fail2ban es que no utiliza ningún recurso para analizar syslog / access-log. La desventaja, por supuesto, es que no verifica nada más, excepto acceder a esta dirección muy específica.
¿Por qué hago esto? Claro, servir un 404 sería fácil para el servidor, pero no quiero que hurguen, así de simple. Quiero perder el tiempo de su herramienta, esperando que el servidor responda, reintentando hasta que finalmente se rinda. Además, si no los bloquea, probarán muchas URL diferentes antes de continuar, a veces más de mil. Dependiendo de la herramienta, puede ser "agradable" y espaciarlos en unas pocas horas, o puede que no le importe y golpee su servidor con todos ellos en cuestión de minutos.
¿Por qué no publico una página válida? Su herramienta podría dejar de escanearlo y alertar al skiddie que lo está ejecutando, que luego debe verificarlo manualmente. La otra cara de esto es que le darán a su servidor una vista mucho más cercana de lo que tendrían, si su escaneo no lo hizo aparecer en sus resultados. Tal vez hurgarán un poco más, tal vez algunos escaneos de puertos, tal vez los enojen y lanzarán un DoS para ver si pueden hacer algo. Simplemente bloquearlos, lo que desde su punto de vista hace que el servidor agote el tiempo en el momento en que acceden al script phpmyadmin, es efectivo desperdiciando el tiempo de su herramienta, al tiempo que evita la atención no deseada.
Si TIENES phpMyAdmin en el servidor, una solución efectiva puede ser colocarlo en un directorio separado y usar el control de contraseña de tu servidor web (.htpasswd para Apache) para bloquear el acceso antes de que algo llegue a él.
fuente
FWIW restringimos el acceso a / phpmyadmin / solo a las direcciones IP incluidas en la lista blanca.
También utilizamos mod_evasive (en apache2) para disuadir DOS / ataques con guiones de mal comportamiento.
fuente
enlace la herramienta de administración mysql a la dirección de bucle invertido de su máquina 127.0.0.1
luego use ssh con reenvío de puertos para acceder a su back-end de administrador.
agregue una capa adicional de seguridad que puede ser bastante transparente.
fuente
La mejor manera que hemos encontrado es proteger con contraseña la carpeta en la que se encuentra phpmyadmin. Además, no use nada relacionado con phpmyadmin como nombre de carpeta: pma, phpmy, etc.
fuente
None of these directories exist, I don't even have phpmyadmin on my server.
- No está preguntando cómo fortalecer sus instalaciones existentes ... está preguntando qué hacer con cosas que no existen. No puede cambiar el nombrePMA
o lo que tiene si no existe.