Saltar al contenido

¿Cómo proteger el servidor ubuntu de los ataques ssh de fuerza bruta?

Posterior a investigar en varios repositorios y sitios de internet al concluir dimos con la respuesta que te compartiremos más adelante.

Solución:

Hay diferentes soluciones. El mejor es usar la autenticación RSA que usa público/privado keys para autenticar a los usuarios.

Consulte este gran manual para diferentes enfoques (autenticación RSA incluida): http://www.la-samhna.de/library/brutessh.html

Estoy usando la tercera solución en mi servidor porque no quiero que sea complicado para mis usuarios no técnicos: usando iptables para limitar la cantidad de conexiones por minuto que hace que los ataques de fuerza bruta sean ineficientes e ineficaces.

Aquí está la solución que estoy usando:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP

Como se menciona aquí: esto permitirá tres conexiones del puerto 22 desde cualquier dirección IP dada dentro de un período de 60 segundos, y requerirá 60 segundos sin intentos de conexión posteriores antes de que se reanude permitiendo conexiones nuevamente. La opción –rttl también tiene en cuenta el TTL del datagrama al hacer coincidir los paquetes, para tratar de mitigar las direcciones de origen falsificadas.

Como se indica en la guía mencionada, es mejor usar una lista blanca para separar a los usuarios confiables de estas reglas:

iptables -N SSH_WHITELIST

luego agregue hosts confiables:

iptables -A SSH_WHITELIST -s $TRUSTED_HOST -m recent --remove --name SSH -j ACCEPT

y después de eso hacer las reglas:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP

Recibo ataques ssh de fuerza bruta en mis servidores con una tasa de 1 a 2 por día. He instalado denyhosts (paquete de ubuntu: denyhosts). Es una herramienta muy simple pero efectiva para ese propósito: esencialmente escanea periódicamente sus registros para detectar ataques de fuerza bruta y coloca las IP desde donde se originan estos ataques en su archivo /etc/hosts.deny. No volverás a saber de ellos y tu carga debería reducirse considerablemente. Es muy configurable a través de su archivo de configuración /etc/denyhosts.conf para modificar problemas como cuántos intentos incorrectos constituyen un ataque, etc.

Debido a su funcionamiento transparente, puede ver fácilmente lo que está sucediendo (notificación por correo electrónico: “¡Ajá, otro ataque cobarde frustrado!”) y deshacer errores debido a que sus usuarios escriben mal sus contraseñas repetidamente.

Por supuesto, todo lo dicho anteriormente sobre cambiar a otros métodos de autenticación se mantiene, pero a veces sus requisitos no concuerdan con los de sus usuarios.

Además, la limitación de la tasa de nuevas conexiones en iptables podría ser una mejor opción que negar el acceso a través de hosts.deny. Entonces, eche un vistazo a fail2ban también. Pero si sabe que la fuerza bruta de ssh es su principal preocupación (consulte manualmente /var/log/auth.log para determinarlo), use esta herramienta muy fácil y de bajo impacto.

  1. Cambie el puerto sshd a algo no estándar
  2. Utilizar knockd para implementar un golpe de puerto sistema
  3. Usar iptables’ recent y hashlimit coincidencias para limitar los intentos SSH consecutivos
  4. No uses contraseñas, pero usa SSH keys en lugar de

Comentarios y puntuaciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *