Contraseña SSH vs. autenticación de clave

22

Por lo general, me han dicho que la autenticación de clave pública es altamente preferida a la autenticación de contraseña para SSH. Sin embargo, nuestro administrador anterior estaba en contra de las claves públicas y solo emitía contraseñas y se encargaba de usar diferentes contraseñas para diferentes servidores (pwgen generó contraseñas; son razonablemente difíciles de fuerza bruta, pero garantizó que las escriban el usuario). Así que me gustaría preguntar:

  1. ¿El uso de la contraseña tiene más sentido para la administración (no root con más o menos capacidades sudo) de inicio de sesión de shell completo. Dado que las contraseñas son diferentes donde la clave probablemente no sería y la contraseña también se usará para sudo.
  2. ¿Fue correcto incluso para una cuenta especial para la carga de sftp (restringida a un directorio particular) donde la contraseña termina en un archivo en algún otro servidor, porque la carga debe ser desatendida? La clave pública terminaría almacenada sin cifrar en el mismo otro servidor.
pregunta Jan Hudec 29.03.2013 - 15:46
fuente

5 respuestas

20

Es algo así ... Estoy divorciada y tengo una ex esposa vitriólica. También tengo tres grandes niños, que como la mayoría de los niños pueden ser olvidadizos, perder cosas y que también aman a su madre. Cuando mis hijos tuvieron la edad suficiente para necesitar una llave de mi casa, tuve que tomar una decisión: ¿uso un candado con llave o uno de esos teclados numéricos? Si uso el candado con llave, era cierto que mis hijos perderían las llaves regularmente; Me gustaría recibir llamadas para que regresen a casa del trabajo para dejarlos entrar; y había una gran posibilidad de que tuviera que reemplazar la cerradura o volver a teclearla de vez en cuando porque el número de "llaves perdidas" (o la probabilidad de que mi ex esposa vitriólica ahora posea) alcanzó un límite incómodo. / p>

Aunque no es quizás el más seguro del mundo, con el bloqueo numérico no me preocupaba que las claves se perdieran; Podría mandarle un mensaje de texto a mis hijos desde el trabajo (sin volver a casa) cuando lo olvidaron; y periódicamente podía cambiarlo cuando sentía que estaba comprometido. También podría decidir cuánto tiempo y / o complejo lo quería. Si pensara que mi ex lo tenía, podría cambiarlo también. Mucho más simple y menos costo total de propiedad.

El bloqueo con llave es como PK. El bloqueo numérico es como las contraseñas. Al final, puedo decirles que estoy mucho más seguro con el bloqueo numérico, porque elijo mi propio destino y puedo hacerlo tan dinámicamente como yo quiera. Y recuerda, la realidad es que la puerta es solo una de las formas de entrar en mi casa.

    
respondido por el Tek Tengu 29.03.2013 - 16:21
fuente
11

En el caso de la autenticación de contraseña, el usuario recuerda la contraseña y es responsable de no revelarla a nadie. Con la autenticación basada en clave pública, el usuario tiene la clave privada en algún lugar, almacenada como un archivo .

Los usuarios prefieren la autenticación basada en clave porque es más conveniente de usar en la práctica (los clientes SSH usarán la clave de forma transparente, por lo que es un esfuerzo cero para el usuario humano). Sin embargo, la autenticación basada en clave implica lo siguiente:

  • El propio usuario administra las claves, y qué claves se aceptan o no, al colocar las claves públicas en su archivo .ssh/authorized_keys .
  • La clave privada se almacena necesariamente como un archivo en algún lugar, tal vez (pero no necesariamente) protegido por una frase de contraseña.
  • La elección de la frase de contraseña local (o la falta de ella) está completamente fuera del alcance del administrador del sistema.

Algunos administradores de sistemas prefieren que los usuarios utilicen la autenticación basada en clave porque no confían en los usuarios humanos para recordar la contraseña segura; creen que la seguridad de un archivo de clave privada será más fácil de mantener por los usuarios promedio que la generación y el uso de una contraseña segura. Sin embargo, la mayoría de los administradores de sistemas consideran que los archivos de clave privada son una vulnerabilidad evidente, mientras que con las contraseñas tienen mecanismos de mitigación: pueden imponer "reglas de contraseña" cuando se elige la contraseña, y pueden bloquear o restablecer las contraseñas de forma centralizada cuando lo desean. Realmente es un equilibrio entre cuánto confía el administrador del administrador de sistemas a los usuarios (confianza en su competencia , no en su honestidad ) y en qué medida es un fanático del control el administrador de sistemas.

    
respondido por el Tom Leek 29.03.2013 - 16:02
fuente
8

Contraseñas

  • puede ser fácil de olvidar.
  • puede ser fácil de adivinar / descifrar.
  • puede tener diferentes restricciones en términos de caracteres que puedes usar, longitud ...
  • muy a menudo se reutilizan en diferentes servicios.
  • ¿has oído hablar de las contraseñas que se han filtrado en la base de datos?

Respuesta-desafío

  • puede comprender cualquier cantidad de desafíos (por ejemplo, ingrese 3 contraseñas seguidas)
  • puede admitir contraseñas de un solo uso (OTP - enlace )

claves SSH (o token api)

  • no tiene que ser recordado (almacenado en su computadora).
  • son más difíciles de adivinar / descifrar (en comparación con el ataque del diccionario).
  • no necesita ser compartido en diferentes servicios.

Asimetría / fuerza de la contraseña.

  • La mayoría de las soluciones de clave pública / privada utilizan claves asimétricas (no he escuchado lo contrario, pero no pondría mi dinero en ellas). Si su clave pública está comprometida, eso no le da acceso al sistema a un atacante.
  • Las bases de datos de contraseñas deben tener cifrado unidireccional; y uno que sea lo suficientemente fuerte o que desperdicie suficientes ciclos de cómputo que se convierta en una fuerza bruta difícil.

Restablecer flujo de trabajo

El uso de contraseñas o claves ssh es irrelevante aquí, en algún momento un usuario olvidará su contraseña (p. ej., tenía BLOQ MAYÚS cuando la creó ...) o reinstalará su sistema (p. ej., máquina de tiempo / actualizaciones). .). ¿Cómo te enfrentas a tales situaciones? Deberá cambiar la contraseña / clave (suponga que la anterior está comprometida) y comunicar de manera segura la nueva al usuario.

Consulte la respuesta aceptada . Si tu hijo está tratando de entrar a tu casa. El desafío es que primero debes confirmar que es tu hijo (por ejemplo, sabes que es su número de teléfono, reconoces su voz, esa es la parte desafío ). El flujo de trabajo muy común es generar una contraseña temporal / contraseña de un solo uso y hacer que su hijo cambie su contraseña. Pero, esto podría muy bien ser: darles una contraseña de un solo uso y dejar que suban su nueva clave ssh key / api. Diablos, ni siquiera podrías molestarte en permitirles cambiar sus credenciales y simplemente dejarlos entrar de forma remota si tu teclado / bloqueo de teclas está conectado.

Nota: nada impide que tu ex esposa se confunda con tu hijo para engañarte y obtener acceso a la casa.

¿Cuál es mejor?

Esto depende de su caso de uso y de las pérdidas aceptables. Dado que ambas contraseñas / ssh keys / api tokens están en posesión de un usuario, el usuario puede compartirlas. Si admite la autenticación de contraseñas y las contraseñas se filtran, es posible que algunos de sus usuarios tengan que cambiar sus contraseñas en sitios web externos, simplemente porque reutilizan las mismas contraseñas en otros lugares. Si usa claves públicas / privadas, entonces tiene menos de qué preocuparse.

No tienes que elegir uno u otro. Puedes usar ambos! Por ejemplo, puede tener un bloqueo de teclas (su copia personal) y un candado numérico (invitados).

    
respondido por el dnozay 15.12.2014 - 00:20
fuente
5

Las contraseñas pueden ser brutas forzadas. Adivinar una clave pública es tan esencialmente imposible que pueden considerarse perfectamente seguros. Las contraseñas solo pueden asignarse una por usuario, mientras que una sola cuenta de usuario puede tener varias claves instaladas. Si pierdo mi computadora portátil, solo tengo que eliminar la entrada de la clave de mi computadora portátil en el archivo authorised_keys, y esa cuenta aún es accesible desde mis otros dispositivos con sus propias claves. Las teclas individuales también pueden recibir restricciones de comandos, lo que permite una conexión automatizada que ejecuta un comando específico pero no un shell completo. La única forma en que las contraseñas son de algún beneficio es compartir el acceso a una cuenta existente sin iniciar sesión (para cargar la nueva clave) y esto abre el agujero de seguridad de tener que cambiar esa contraseña si necesita eliminar ese acceso donde una clave es individual.

    
respondido por el mikebabcock 06.02.2014 - 17:31
fuente
3

Un tema interesante, para mí lo más seguro es la contraseña, uso 4 contraseñas diferentes para diferentes cosas dependiendo de la seguridad requerida, por ejemplo, para un sitio como este usaré algo como (mexico1970) que no me importa si se rompe ya que solo publico en el sitio y no hay información de la tarjeta de crédito o cualquier otra información importante para proteger, entonces tendré otra contraseña para problemas más importantes, digamos para el correo electrónico algo como (!! carmelita.99) y luego tendré una para el acceso del usuario del servidor (XrE.67-73up) y luego para el acceso de root y para el banco, (!!. CeRto-49er) luego me aseguro de no escribir estas contraseñas, las memorizo, siempre que me conecto a mi servidores me aseguro de que la huella dactilar ssh ya esté agregada a mis hosts conocidos, de lo contrario, podría haber un ataque MITM en curso, también me aseguro de que el certificado TLS / SSL del banco sea válido y nunca comparta las contraseñas.

Lo que odio son los servicios que requieren que establezca una contraseña tan imposible que tenga que escribirla, o algún otro que tenga políticas de contraseña en las que tengo que usar una contraseña diferente cada mes y no puedo usar las últimas 5 contraseñas utilizado, eso es simplemente estúpido, ya que no hay seguridad en la escritura de las contraseñas, cambiar las contraseñas es algo bueno, pero no debe ser forzado, por otro lado, los certificados son propensos a perderse o incluso comprometerse, creo que tiene a alguien con acceso en su computadora pueden instalar keyloggers o también pueden obtener los certificados. así que no hay una sola cosa que lo mantenga seguro, pero los certificados no son más seguros que las contraseñas. con los servidores tengo una sensación de seguridad cuando se configuran múltiples mecanismos, digamos una VPN para acceder a una máquina desde la que puede conectarse a sus servidores a través de SSH, ¿obscuridad? Tal vez, pero nunca han sido hackeados.

Saludos, me gusta un sitio donde puedo publicar sin contraseñas.

    
respondido por el Carlos Ruiz 19.03.2015 - 02:47
fuente

Lea otras preguntas en las etiquetas