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.
Respuestas:
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.
fuente
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:
Asegúrese de que una cárcel para sshd esté habilitada en /etc/fail2ban/jail.local , por ejemplo:
fuente