Mi enfoque para el endurecimiento de SSH es ... complejo. Los siguientes elementos están en términos de cómo lo hago, desde el borde más extremo de mi (s) red (es) hasta los propios servidores.
Filtrado de tráfico a nivel de borde a través de IDS / IPS con escáneres de servicio conocidos y firmas en la lista de bloqueo. Lo logro con Snort a través de mi firewall de borde (este es mi enfoque, un dispositivo pfSense). Sin embargo, a veces no puedo hacer esto, como con mis VPS.
Cortafuegos / filtrado de red de los puertos SSH. Explícitamente, solo permito que ciertos sistemas lleguen a mis servidores SSH. Esto se hace a través de un servidor de seguridad pfSense en el borde de mi red, o los servidores de seguridad en cada servidor se configuran explícitamente. Sin embargo, hay casos en los que no puedo hacer esto (que casi nunca es el caso, excepto en entornos privados de pruebas de seguridad o de laboratorio de prueba de seguridad donde los firewalls no ayudarán a probar cosas).
Junto con mi pfSense, o un firewall de borde que conecta la red interna con la NAT y se separa de Internet y de los sistemas, acceso solo a servidores VPN . Tengo una VPN en mis redes para llegar a los servidores, porque no hay puertos con conexión a Internet como tales. Esto definitivamente no funciona para todos mis VPS, pero en conjunto con el n. ° 2, puedo hacer que un VPS sea la 'puerta de enlace' al VPNar en ese servidor, y luego permitir que sus IP pasen a las otras cajas. De esa manera, sé exactamente qué puede o no puede hacer SSH: mi única caja que es la VPN. (O, en mi red doméstica detrás de pfSense, mi conexión VPN, y soy el único con acceso VPN).
Donde el # 3 no es factible, fail2ban, configurado para bloquear después de 4 intentos fallidos y bloquear las IP durante una hora o más, es una protección decente contra las personas que constantemente atacan con fuerza bruta: simplemente bloquéelos en el firewall automáticamente con fail2ban y meh. Sin embargo, configurar fail2ban es una molestia ...
Ofuscación de puertos cambiando el puerto SSH. Sin embargo, esto NO es una buena idea sin otras medidas de seguridad adicionales : el mantra de "Seguridad a través de la oscuridad" ya ha sido refutado y disputado en muchos casos. Lo he hecho junto con IDS / IPS y el filtrado de red, pero todavía es algo MUY pobre de hacer por sí solo.
Autenticación obligatoria de dos factores, a través de las soluciones de autenticación de dos factores de Duo Security . Todos y cada uno de mis servidores SSH tienen configurado Duo, de modo que incluso para ingresar, ocurren avisos de 2FA y tengo que confirmar cada acceso. (Esta es la última característica útil, porque incluso si alguien tiene mi frase de contraseña o interrumpe, no pueden pasar los complementos de Duo PAM). Esta es una de las mayores protecciones en mis servidores SSH contra el acceso no autorizado: cada inicio de sesión de usuario DEBE vincularse a un usuario configurado en Duo, y dado que tengo un conjunto restrictivo, no se pueden registrar nuevos usuarios en el sistema.
Mis dos centavos para asegurar SSH. O, al menos, mis pensamientos sobre el enfoque.