Existen varios paquetes diferentes para bloquear las IP desde las cuales se lanzan ataques SSH de fuerza bruta en su sistema. Por ejemplo:
¿Cuáles son las ventajas y desventajas de estos u otros?
Mi solución actual es tomar el correo electrónico que logwatch genera todos los días y volcar las direcciones IP atroces en un archivo de texto que introduzco en un script que luego reconstruye iptables. Es hacky, lento y manual, y me gustaría una mejor manera.
(Tenga en cuenta que no pregunté cuál era la "mejor" forma de resolver el problema, porque no hay una "mejor" forma de hacer nada).
Una protección simple y efectiva en la práctica contra ataques basados en escaneo es no usar el puerto estándar. 443 (el puerto https) lo expone a diferentes ataques de fuerza bruta que no van a descifrar sus contraseñas débiles, y posiblemente funcione a través de más firewalls que el puerto predeterminado (22).
La mayoría de los métodos para prevenir ataques de fuerza bruta ssh son excelentes formas de auto-DoS (¡Uy, arruiné la configuración! ¡Vaya, hice un montón de rsync rápidos y ahora estoy prohibido por el día!) , el atacante proviene de / ha subvertido una máquina en la misma subred que yo (rango dinámico de IP, red universitaria ...) ¡y también me han prohibido!).
Si solo inicia sesión desde unos pocos lugares, puede simplemente incluir en la lista blanca las direcciones IP de origen. Obviamente, eso no es bueno si desea hacer ssh desde su computadora portátil o teléfono celular mientras viaja.
Tener un demonio ssh que solo escuche conexiones IPv6 debería protegerlo de los escaneos durante algunos años. Pero muchos firewalls no le permitirán transportar IPv6 de ninguna manera razonable.
Otro método que no menciona es el golpe de puerto . No sufre problemas de auto-DoS (aparte de la configuración incorrecta), pero no cruza bien los firewalls y puede agregar una latencia de varios segundos al establecimiento de la conexión.
Si tiene buenas contraseñas, o puede vivir sin autenticación de contraseña, desactive la autenticación de contraseña. (Las claves y las contraseñas de un solo uso son suficientes para la mayoría de los casos de uso: si no confía en la máquina del cliente lo suficiente como para almacenar una clave ssh, tampoco confía en que no tenga un keylogger). Luego, los ataques de fuerza bruta le costarán un poco de CPU y ancho de banda, pero no lo expondrán a una intrusión (siempre y cuando haya verificado que ninguna de sus claves proviene de un OpenSSL de baja entropía de Debian ).
En general, tenga en cuenta que cambiar el puerto no reduce significativamente su exposición. Obtendrá menos escaneo , pero todo lo que puede cortar es la fruta que busca explotar vulnerabilidades antiguas y contraseñas débiles. Siempre y cuando mantenga su demonio actualizado y aplique contraseñas razonables o límites de velocidad de intento razonables, cambiar el puerto es más una responsabilidad que una medida de seguridad.
fuente
.ssh/config
. El bloqueo es un problema si el firewall no lo deja pasar, y la solución más fácil es quedarse en el puerto 22 y también escuchar en el 443. Estoy de acuerdo en que cambiar el puerto realmente no mejora la seguridad, tal vez debería aclararlo . No sé por qué consideras imposible que un demonio SSH no admita la autenticación de contraseña: solo es cuestión de agregar una línea asshd_config
OpenSSH, la implementación más común.