Mi servidor web es constantemente atacado por varias direcciones IP. Intentan cinco contraseñas y luego cambian la dirección IP.
He realizado varios bloqueos, como usar ssh-keys y no permitir contraseñas, y no permitir el inicio de sesión raíz remoto.
¿Hay algo que pueda hacer para deshacerme de estos intentos de ataque? De lo contrario, ¿hay defensas específicas que deba poner?
Respuestas:
De hecho es un hecho de la vida. Puede instalar herramientas para filtrar los hosts que lo están atacando después de un par de intentos fallidos.
DenyHosts analiza sus archivos de registro y agrega automáticamente atacantes a su
/etc/hosts.deny
archivo.Consulte la documentación sobre cómo configurarlo para sus necesidades.
Actualización : algunos puntos importantes sugeridos en los comentarios
asegúrese de configurar correctamente las herramientas como DenyHosts ya que podría bloquearse (por ejemplo, puede configurar una máquina o red que nunca se filtre)
DenyHosts no aumenta la seguridad de su sistema: solo filtra los ataques a nivel de IP (podría reducir la carga en máquinas pequeñas y reducir el tamaño de los archivos de registro, pero nada más)
fuente
refs Q1.3
denyhosts.sourceforge.net/faq.html#1_0apt-get install denyhosts
me dejó fuera de mi máquina.Seguí estas instrucciones para agregar un retraso de 7 segundos a cada intento de inicio de sesión SSH con contraseña incorrecta. Convertí mi sshd en un "tarpit" para los escáneres de fuerza bruta.
También debo agregar que tengo mi sshd tarpit modificado, registrar las contraseñas fallidas. Esto puede no ser del todo ético, ya que le da al usuario root una mirada a lo que los usuarios regulares escriben mal como sus propias contraseñas, pero como soy el único usuario "real", creo que está bien.
No lo tengo ejecutado en un puerto no estándar, ya que el aspecto "tarpit" no perdería el tiempo de nadie.
fuente
Si solo un pequeño número de personas necesita SSH para el sistema, considere mover SSH a un puerto no estándar (por ejemplo, 6422, 8080, etc.) Eso solo reducirá en gran medida el número de intentos de inicio de sesión (y posiblemente lo proteja de algunos no parcheados). Gusano basado en exploits SSH, por ejemplo).
fuente
Concurre con la respuesta de @ Matteo; lo que está viendo es esencialmente miles de sistemas zombies que ejecutan un ataque de fuerza bruta distribuido en su servidor porque hay un sitio web ejecutándose en él, lo que significa que puede haber usuarios que pueden tener una cuenta de inicio de sesión que posiblemente se adivine esfuerzo mínimo por parte del script kiddie: tiene un programa que ordena a los miles de zombis que realicen los intentos de fuerza bruta en unos pocos cientos de hosts de sitios web a la vez y solo compile una lista de los retornos exitosos.
Del mismo modo, a veces puede ver muchas permutaciones de "http://your.web.host/phpmyadmin/" en sus
/var/log/apache2/access.log
archivos; estos son escaneos automáticos para las formas más comunes de configurar PHPMyAdmin, e intentarán una serie de exploits conocidos si se encuentra uno (por cierto, es por eso que he comenzado a decirles a los clientes que usen el sitio PMA que configuré personalmente y mantenerse actualizado en lugar de instalar su propia versión y olvidarse de mantenerlo actualizado, pero ahora estamos en una tangente).Además de enviar el comando original, ni siquiera le cuesta tiempo o ancho de banda; Es fuego y olvidar.
Otro bit de software muy útil para situaciones como esta es fail2ban , que utiliza iptables para bloquear los intentos de conexión después de múltiples inicios de sesión claramente falsos u otros intentos de explotación.
fuente
Intenta configurar Fail2ban . Proporciona una forma muy flexible de buscar intentos fallidos y tiene plantillas para SSH, HTTP y servicios comunes.
Fail2ban actualizará iptables de acuerdo a tus acciones. Me encanta.
fuente
Puede usar IPTABLES para detener el tráfico sin ejecutar un demonio como Fail2Ban o DenyHosts.
fuente
Si puede administrarlo, creo que la mejor manera de lidiar con cosas como esta es usar una VPN. De esa manera, lo único que pueden atacar es la VPN. No debería haber ningún servicio abierto al mundo en general, excepto aquellos que son necesarios para que "todos" puedan acceder, como su servidor web. Todo lo demás debe ser bloqueado por el firewall. Ahora, lo único que realmente tiene que preocuparse por proteger es su VPN. Si puede, obtenga una IP estática para las computadoras desde las que administra sus servidores y bloquee su VPN en esa dirección IP específica. Esta es realmente la única forma de evitar que las personas intenten forzar las contraseñas por fuerza bruta.
fuente
Sshguard funciona muy bien. Lo estoy usando junto con iptables.
fuente