Ejecución de SSH en un puerto diferente frente a la adición del número de puerto a una contraseña

0

Por lo tanto, un consejo bastante típico es ejecutar SSH en un número de puerto alto, disminuyendo así las posibilidades de que sea atacado. Sin embargo, lo que siempre me he preguntado es que parece más seguro ejecutar SSH en el puerto estándar y simplemente agregar un número arbitrario entre 1.000 y 10.000 al final de su contraseña en lugar de usar un puerto SSH no estándar. Mi razonamiento para esto es que agrega la misma cantidad de secreto / oscuridad (donde uso la palabra 'oscuridad' en el sentido de que las contraseñas y las claves son seguridad a través de la oscuridad), sin embargo, con un puerto tan pronto como llegue al número correcto recibir confirmación del servidor. Sin embargo, con una contraseña, necesita la contraseña totalmente correcta antes de recibir la confirmación.

Para ser muy claro, comparo las dos situaciones siguientes:

  • Nombre de usuario: user , Contraseña: password2938 , Puerto: 22
  • Nombre de usuario: user , Contraseña: password , Puerto: 2938

y sí, sé que es mejor usar la autenticación de clave de pub, sin embargo, tiene ciertas desventajas cuando se trata de la facilidad de uso (algo que no es una preocupación válida en los servidores de producción, pero a menudo es una preocupación válida en sistemas privados). / p>

¿Este razonamiento es correcto y el consejo para ejecutar SSH en números de puerto no estándar es incorrecto / débil?

    
pregunta David Mulder 07.02.2016 - 16:16
fuente

4 respuestas

5

Una contraseña con mayor complejidad es excelente, pero si existe una vulnerabilidad contra el software del servidor (OpenSSH o de otro tipo) que está ejecutando, no servirá de nada. La idea detrás de un número alto de puerto oscuro es que no será atacado en primer lugar, pero hay advertencias a tener en cuenta:

Los puertos altos presentan un riesgo de seguridad adicional. Si el servidor SSH deja de funcionar, un usuario local puede instalar un nuevo servidor SSH en el mismo puerto. Solo los puertos 1-1024 están restringidos al usuario root, por lo que su puerto alternativo debe estar en ese rango. (Esto corta en ambos sentidos: los escáneres de puertos solo examinan estos puertos, por lo que está menos oculto).

Esto es seguridad a través de la oscuridad y debe considerarse "extra", pero debería < em> no debe considerarse parte de la seguridad al calcular la entropía y el riesgo. No es malo ser oscuro, pero es malo suponer que la oscuridad proporciona suficiente seguridad. Adaptar una cita de @barbecue :

  

La oscuridad es la seguridad, como el camuflaje es la armadura . Una hace que sea más difícil encontrarte, la otra te protege una vez que te han encontrado.

Es posible que recibas menos ataques en el puerto 2938, pero una contraseña débil es una contraseña débil.

Realmente me gusta su idea de comparar la entropía de contraseña de whatever con whatever2938 (* cambiado de password y password2938 por las razones que se mencionan a continuación), que < calculamos en 17 bits en lugar de 30 bits, mostrando que la contraseña más larga es ciertamente más segura, pero para modelar esto correctamente, tendrías que obtener estadísticas sobre cuántos atacantes con el puerto 22 romperían esa contraseña más larga en comparación con cuántos atacantes encontrarían el puerto no estándar y rompa la contraseña más corta, e incluso ese análisis tendría que asumir la misma tasa de persistencia aunque los ataques aumenten tanto en frecuencia como en sofisticación.

En cambio, recomendaría algo como Fail2ban , que puede reconocer inicios de sesión fallidos y prohibir la IP que los intentó (de forma predeterminada, Fail2ban bloquea una IP durante diez minutos después de diez inicios de sesión fallidos en diez minutos, pero todo esto es configurable). Esto limita los ataques para probar una contraseña por minuto, por lo que whatever tardaría aproximadamente una semana en romperse e incluso una contraseña más típica (aunque todavía débil) como Da5id tomaría más de 12 años (2 < sup> 22.6 & div; 365 & div; 24 & div; 60 = 12) de la verificación de contraseñas sin interrupción, lo cual es presumiblemente el tiempo suficiente para que lo note Los intentos en los registros.

no cree que esto hace que las contraseñas débiles como Da5idRox sean una buena idea. Fail2ban solo se ejecuta en el servidor SSH; alguien con acceso de shell rompería esto en dos semanas.

Por supuesto, no hay nada que le impida hacerlo todo. Agregue complejidad a su contraseña, use un puerto alternativo y bloquee las IP con demasiados fallos. Una técnica de ofuscación adicional que puedes probar es detonación de puertos , que incluso se puede hacer de forma segura si la propia detonación está cifrada de extremo a extremo o utiliza un contraseña de un solo tiempo .

* Una nota menor: Cambié las contraseñas de muestra de la pregunta para usar whatever en lugar de password porque password es un caso especial. Las contraseñas comunes como password (y las variaciones simples) se asumen mejor para una entropía entre 0 y 5, por ejemplo, p455w0rDz tiene una entropía de alrededor de 12, que es más débil que L% . En las matemáticas anteriores, en cambio, asumí que te referías a una palabra de diccionario aleatorio, que tiene una entropía de 17 bits). Más sobre la complejidad de las contraseñas cálculos .

    
respondido por el Adam Katz 24.03.2016 - 02:21
fuente
1

Creo que hay un problema con su comparación: aunque es posible que cada usuario en el sistema agregue un número elegido a la contraseña, no es posible que cada usuario tenga su propio puerto SSH elegido. Por lo tanto, un puerto diferente nunca puede ser un reemplazo para una mejor contraseña (y, por supuesto, debe elegir las claves de todos modos).

En cambio, un puerto diferente es una forma de reducir la superficie de ataque mediante el uso de la oscuridad. Ya que la exploración habitual se realiza en el puerto estándar, puede ocultar su servidor real en otro lugar e incluso agregar un servidor SSH falso en el puerto estándar para mantener a los atacantes alejados de su servidor real.     

respondido por el Steffen Ullrich 07.02.2016 - 17:30
fuente
1

Considera a Joe el Script Kiddie.

Joe comienza su script de escáner ssh. Esto toma un rango de direcciones IP y continúa explorando todos los dispositivos en ese rango, verificando si el puerto 22 está abierto. Si lo es, asume que es un servidor ssh y puede comenzar a intentar encontrar nombres de usuario y contraseñas.

Si su sshd está en un puerto diferente, solo será susceptible a los escáneres que realizan el escaneo de puertos sobre (o en lugar de) el escaneo de IP. No digo que esto evitará ningún tipo de ataque en su servidor, pero reducirá su vulnerabilidad a exploraciones aleatorias de rangos extendidos de direcciones IP.

    
respondido por el jcaron 07.02.2016 - 17:31
fuente
1

El uso de contraseñas seguras es un hecho. Esto debe hacerse independientemente del número de puerto. No entiendo por qué esto debería ser mutuamente excluyente. Utilice un número de puerto alto y una contraseña segura.

Si ejecuta un servidor ssh de acceso público en el puerto 22, será absolutamente golpeado por intentos de hackeo. Incluso si casi todos estos intentos son completamente ineficaces debido a sus contraseñas seguras, seguirán saturando sus registros, haciendo que sea más difícil detectar un intento de intrusión más serio.

Sí, es seguridad por oscuridad, pero aún así ayuda. La gran mayoría de los bots simplemente nunca verán su servidor.

    
respondido por el user1751825 24.03.2016 - 02:42
fuente

Lea otras preguntas en las etiquetas