¿Por qué la autenticación de clave SSH es mejor que la autenticación de contraseña?


45

Esto no es tanto una cuestión técnica como conceptual. Entiendo que la criptografía utilizada en una clave SSH es mucho más segura que una contraseña normal, pero no entiendo por qué se considera más segura.

La mayoría de los tutoriales que leo sugieren usar la autenticación de clave SSH en lugar de la autenticación de contraseña. Pero entiendo que cualquier persona que tenga acceso a una máquina cliente previamente aprobada podrá conectarse al servidor, lo que significa que el nivel de seguridad proporcionado por la clave SSH es tan fuerte como el nivel de seguridad del dispositivo físico. máquina cliente

Por ejemplo, si configuro una clave SSH en mi teléfono para conectarme a mi máquina doméstica, si pierdo mi teléfono y alguien logra desbloquearlo, podrán conectarse a mi máquina doméstica. Sé que luego puedo quitar la llave de mi teléfono de mi máquina doméstica, pero soy vulnerable hasta que me doy cuenta de que el dispositivo del cliente se ha perdido / violado.

¿He entendido mal algo o son esas preocupaciones válidas?


10
Haga ambas cosas: una clave que requiere una contraseña. De esa manera, necesitas identificar dos cosas, no solo una. También puede invalidar las claves perdidas con bastante facilidad, y tener varias claves autorizadas para un mayor control sobre eso, etc.
Phoshi

2
Esto probablemente debería trasladarse a la seguridad.

10
@DKGasser: No, no debería. Es una pregunta perfectamente válida aquí. El hecho de que algo se pueda mover a otro sitio de SE no significa que deba hacerlo .
Wuffers

44
@DKGasser: Podría ir a ese sitio, es una pregunta perfectamente válida allí. Pero también es una pregunta válida aquí, por lo que no hay razón para migrarla. Si esta pregunta se hiciera fuera del tema aquí, entonces sí, podría migrarse allí. Pero es totalmente sobre el tema en este sitio y, por lo tanto, no debe migrarse.
Wuffers

3
Y no olvide, la clave SSH nunca pasa por la red. El servidor remoto NUNCA obtiene la clave, en lugar de una contraseña, que no solo se envía a través de la red, sino que se envía al servidor remoto. Piense en eso la próxima vez que no esté seguro de qué contraseña usar, y pruebe algunas ... que tal vez se usen en otras cuentas. ¿Qué contraseñas enviaste a ese servidor?
9mjb

Respuestas:


40

Si su servicio SSH permite la autenticación basada en contraseña, su servidor SSH conectado a Internet se verá afectado día y noche por redes de bots que intentan adivinar los nombres de usuario y las contraseñas. La red de bots no necesita información, solo puede probar nombres populares y contraseñas populares. Hay un montón de gente llamada John con una contraseña de qwerty123. Aparte de cualquier otra cosa, esto obstruye sus registros.

Si su servicio SSH solo permite la autenticación de clave pública, un atacante necesita una copia de una clave privada correspondiente a una clave pública almacenada en el servidor. No solo pueden realizar ataques aleatorios, deben tener conocimiento previo de sus usuarios y poder robar una clave privada de la PC de un usuario autorizado de su servidor SSH.

El hecho de que las claves privadas a menudo estén protegidas por una frase de contraseña larga es de importancia secundaria.

Actualizar:

Como señalan los comentarios, y como he experimentado, mover su servicio SSH desde el puerto 22 a un puerto con un número alto hace una gran diferencia en la cantidad de intentos de inicio de sesión no autorizados que aparecen en sus registros. Vale la pena hacerlo, pero lo considero como una forma de seguridad por oscuridad (una falsa sensación de seguridad): tarde o temprano, los bots implementarán escaneo de puertos lento y sigiloso o se te dirigirá deliberadamente. Mejor estar preparado.

Siempre uso una frase de contraseña larga para proteger mi clave privada, supongo que esto es de particular importancia en dispositivos móviles que podrían perderse o ser robados con mayor facilidad.

Además, http://xkcd.com/538/

Seguridad


77
+1 excepto que la autenticación de clave pública no hará nada para que sus registros se obstruyan con los robots que intentan conectarse. Para detener eso, ejecute su servidor SSH en un puerto alto (es decir, 9876 en lugar de 22). Luego, si quieren golpearte, primero tienen que escanear puertos, y los bots generalmente no pierden tanto tiempo ... hay muchos servidores SSH en 22.
Ex Umbris

3
No estás bromeando con el tamaño del registro: my / var / log / secure pasó de megabytes de intentos de inicio de sesión a kilobytes (solo con mis registros de inicio de sesión).
John C

2
+1 Interesante, he corrido con autenticación basada en contraseña durante ... como 10 años ... jaja ... De acuerdo, mis puertos ssh expuestos públicamente nunca son el puerto 22. Creo que las botnets me escanearán el puerto y tratarán de entrar en cada puerto que pueden? Buena información, gracias.
James T Snell

2
@ExUmbris en lugar de cambiar el puerto, debería considerar usar fwknop: Autorización de paquete único y Puertos . El beneficio aquí debería ser obvio: cuando no permite que nadie vea que el puerto está abierto en ninguna parte a menos que se les haya dado acceso al puerto tocando con SPA, entonces ni siquiera pueden intentar encontrarlo con nmap y explotarlo. Eso es mucho mejor que la simple seguridad a través de la oscuridad.
aculich

@aculich Cambiar el puerto no es "seguridad a través de la oscuridad". Todo lo que estoy haciendo es evitar que los registros se llenen de advertencias. Sin embargo, tiene un punto válido sobre la mejora de la seguridad con SPA.
Ex Umbris

8

La lógica es que hay muchas más combinaciones de claves SSH que contraseñas, por lo que es mucho más difícil de adivinar. El uso de claves SSH también le permite deshabilitar la autenticación de contraseña, lo que significa que la mayoría de los ataques automáticos que circulan por Internet serán inútiles.

Con respecto a la seguridad física, no hay diferencia entre guardar una contraseña y tener una clave SSH sin cifrar en su dispositivo si se pierde o se la roban. La única ventaja que tendría es que nadie tiene su contraseña y, en teoría, podría asegurarse de que todos los dispositivos tengan diferentes certificados SSH para que pueda desactivar la de su teléfono.

Creo que también es posible proteger con contraseña las claves SSH.


Sin embargo, vale la pena señalar que los intentos de forzamiento de contraseña bruta contra sshd se pueden detectar y proteger (por ejemplo, por fail2ban), mientras que alguien que ha robado su clave privada puede probar contraseñas tan rápido como su computadora (o clúster) permita ellos. Esto todavía no es un gran ataque , pero han mejorado sus probabilidades drásticamente frente a una política razonable de fail2ban.
Xiong Chiamiov


1

Las contraseñas también pueden verse comprometidas por el control de su teclado "sobre su hombro". Además, el uso de contraseñas similares en muchos lugares es una debilidad, especialmente si la contraseña a veces se usa en una computadora menos segura con posibles registradores de teclas.

Tiene razón en que una clave no encriptada puede leerse en el disco duro si la computadora es robada, así que encripte con una contraseña.

Si su computadora se ve comprometida por el malware, está lleno de todos modos ... alguien puede obtener la clave cifrada y registrar su contraseña.


1
Nota: pero no puede cifrar su clave con una contraseña si se va a usar mediante programación (es decir, en un script).
TheStoryCoder
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.