Bloqueo de ataques SSH Brute Force en IPv6


10

Recientemente tuve que trabajar con algunos servidores que tienen una conexión IPv6 y me sorprendió descubrir que fail2ban no tiene soporte para IPv6, ni denyhosts. Al buscar en Google descubrí que la gente generalmente recomienda:

  • Desactivar el inicio de sesión ssh a través de IPv6 (no es una solución para mí)
  • usando solo la autenticación de clave pública / privada en el servidor, sin autenticación de contraseña (funciona, pero muchos ataques pueden costarle al servidor mucha potencia de procesamiento, o incluso puede hacer que no esté disponible al hacer DDoS)
  • usando ip6tables para bloquear ataques consecutivos desde la misma IP
  • usando sshguard que tiene soporte para IPv6

Por lo que he reunido hasta ahora, la prohibición de direcciones en IPv6 es un poco diferente que en IPv4 porque los ISP no le dan a un usuario una sola dirección (/ 128), sino una subred completa (actualmente tengo un / 48). Por lo tanto, la prohibición de direcciones IPv6 individuales sería ineficaz contra los ataques. He buscado por todas partes el tema de las subredes de bloqueo de ip6tables y sshguard en la detección de ataques, pero no he podido encontrar ninguna información.

¿Alguien sabe si sshguard prohíbe subredes en ataques IPv6?
¿Alguien sabe cómo hacer una configuración de ip6tables para prohibir subredes en ataques IPv6?
¿O alguien sabe de una mejor manera de mitigar los ataques que lo que ya he encontrado?

PD: estoy usando CentOS 7 en el sistema.


3
Para obtener más información acerca de fail2ban que agrega compatibilidad con IPv6: github.com/fail2ban/fail2ban/issues/39 . Parece que se enfrentan a un problema con el bloqueo de subred , lo que retrasa la implementación posterior (en realidad, parece estar cada vez más lejos de nosotros ...).
John WH Smith

Reglas de limitación / prohibición de tarifas en iptables. Cambie su pregunta por eso y un par de prostitutas deberían responder con precisión.

¿Es este un problema hipotético? He estado buscando registros de intentos de fuerza bruta de algunos servidores, y cada uno de ellos se intentó a través de IPv4. Y no he visto que ningún servidor tenga demasiada carga debido a tales intentos cuando la autenticación de contraseña está deshabilitada en el lado del servidor.
kasperd

1
@kasperd Recibí algunos miles de intentos por día en IPv6, así que no, no es un problema hipotético. La dirección del servidor es pública porque aloja un sitio, por lo que es un problema real.
DarthRevan13

@ user123418 Dejaré el título de la pregunta tal como está por ahora, realmente preferiría algo como sshguard debido al control sobre ella versus una regla en ip6tables. Si nadie contestará la semana siguiente, cambiaré mi pregunta.
DarthRevan13

Respuestas:


4

Para atacar un servidor, el atacante primero debe conocer su dirección IP. Con IPv6, tendrá tantas direcciones para elegir que no es posible encontrar la dirección correcta escaneando el rango de IP.

Esto significa que simplemente puede asignar dos direcciones IPv6 diferentes a la interfaz. Dejas que el nombre de dominio de tu sitio siga apuntando a la misma dirección IP de siempre, y dejas que sshd escuche solo en la nueva dirección IP asignada.

Después de ese cambio, conocer el nombre de dominio y la dirección IP de su sitio no le dará a un atacante ningún acceso a su sshd.

Por supuesto, necesitará un nombre de host secundario para usar cuando se conecte usando ssh. Ese nombre de host puede tener mucha más entropía que una dirección IPv6. Alguien que adivine el nombre de host para ssh es inconcebible si usa 63 caracteres alfanuméricos.

Si alguien descubre la dirección IPv6 utilizada para sshd, simplemente mueva sshd a una nueva dirección IPv6 y actualice el registro AAAA. Luego tienen que empezar de nuevo.

Si le preocupa que un usuario ssh legítimo pueda filtrar el nombre de host y / o las direcciones IP, puede crear un nombre de host diferente para que cada usuario acceda con ssh. Inicialmente, los nombraría a todos con un solo nombre de host, de modo que solo haya un único registro AAAA para actualizar.


Suena mejor de lo que tengo actualmente, pero no exactamente lo que estaba buscando. Gracias de cualquier manera.
DarthRevan13

0

Buenas noticias son que fail2ban lanzó soporte para IPv6 recientemente.

Para los servidores Debian IPv6, recomendaría seguir este tutorial .

Para los servidores CentOS IPv6, recomendaría descargarlo aquí y luego ejecutar estos comandos reemplazando el número de versión en consecuencia:

tar xvfj fail2ban-0.11.0.tar.bz2
cd fail2ban-0.11.0
python setup.py install

Asegúrese de que una cárcel para sshd esté habilitada en /etc/fail2ban/jail.local , por ejemplo:

[sshd]
enabled=1

1
Aunque admiro lo que han hecho los muchachos en fail2ban, ¡todavía no es suficiente! No todas las funciones son compatibles con el protocolo IPv6 de acuerdo con su registro de cambios github.com/fail2ban/fail2ban/blob/0.10/ChangeLog y todavía no hay soporte para prohibir subredes github.com/fail2ban/fail2ban/issues/927, que es crucial para IPv6 ya que cualquier ISP no ofrecerá solo una dirección IPv6 a un cliente, sino una subred completa. ¡Mientras esto siga siendo cierto, ninguna máquina de producción debería usar fail2ban ahora! Cambie su respuesta para reflejar esto, porque esta página es visitada por mucha gente.
DarthRevan13
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.