¿Está bien compartir un archivo de clave privada entre múltiples computadoras / servicios?

109

Entonces, todos sabemos cómo usar la clave pública / privada usando SSH, etc. ¿Pero cuál es la mejor manera de usarlas / reutilizarlas? ¿Debo mantenerlos en un lugar seguro para siempre? Quiero decir, necesitaba un par de claves para acceder a GitHub. Creé un par desde cero y lo usé durante algún tiempo para acceder a GitHub. Luego formateé mi HDD y perdí ese par. Gran cosa, creé un nuevo par y configuré GitHub para usar mi nuevo par. ¿O es algo que no quiero perder?

También necesitaba un par de claves públicas / claves privadas para acceder a los sistemas de nuestra empresa. Nuestro administrador me pidió mi clave pública y generé un nuevo par y se lo di. ¿Es generalmente mejor crear un nuevo par para acceder a diferentes sistemas o es mejor tener un par y reutilizarlo para acceder a diferentes sistemas? Del mismo modo, ¿es mejor crear dos pares diferentes y usar uno para acceder a los sistemas de nuestras empresas desde casa y el otro para acceder a los sistemas desde el trabajo, o es mejor tener un solo par y usarlo desde ambos lugares?

Behrang
fuente
Esta no es una respuesta directa a su pregunta, pero también es recomendable tener frases de contraseña para cada clave. Idealmente, separe las frases de contraseña para cada clave (use un administrador de contraseñas). La razón es la siguiente: si una clave privada se ve comprometida (la computadora portátil fue robada, la computadora fue pirateada), entonces tiene algo de tiempo antes de que la clave pueda ser forzada y puede reemplazar la clave pública en todas las máquinas que la tienen , antes de que tu atacante pueda. Fuente: help.ubuntu.com/community/SSH/OpenSSH/…
Xandor Schiefer

Respuestas:

85

Definitivamente debe tener claves privadas separadas por origen . Básicamente, eso significa que generalmente debería haber una sola copia de cada clave privada (sin contar las copias de seguridad). Está bien usar la misma clave privada de una máquina estrechamente relacionada, en situaciones en las que romper en una básicamente les da acceso a la otra (por ejemplo, si están en la otra shosts.equiv). No use la misma clave privada en máquinas en diferentes ámbitos (por ejemplo, casa y trabajo), nunca comparta una clave privada entre dos usuarios, y nunca comparta una clave privada entre una computadora portátil y cualquier otra máquina.

En su mayor parte, no veo el punto de tener diferentes claves privadas para diferentes destinos. Si una clave privada se ve comprometida, todas las demás claves privadas almacenadas en el mismo directorio seguramente también se verán comprometidas, por lo que se agregarían complicaciones sin beneficio de seguridad.

Si sigue estos principios, cada par de claves identifica un par (máquina, usuario), lo que facilita la gestión de autorizaciones.

Se me ocurren dos excepciones a la regla general de una sola clave privada por origen:

  • Si tiene una clave sin contraseña que le da acceso solo a un comando específico en una máquina específica (por ejemplo, un mecanismo automatizado de respaldo o notificación), esa clave debe ser diferente de la clave de acceso de shell general.
  • Si algunas máquinas están conectadas de manera intermitente, es posible que tenga una clave privada antigua junto con una nueva clave privada, hasta que llegue a terminar de implementar la nueva clave.
Gilles
fuente
55
Así es como siempre he usado mi par de llaves. No entendía por qué GitHub estaba abogando por generar un nuevo par de claves en sus instrucciones de configuración. Lo ignoré y usé mi par de llaves estándar. Asumo que están siendo conservadores.
toolbear74
Ok, entonces dices "No uses la misma clave privada en máquinas en diferentes reinos", pero ¿qué pasa si DNS resuelve un nombre de host dado a cualquiera de las máquinas dependiendo de tu ubicación? Sin compartir la clave privada, recibo advertencias o fallas cuando intento ssh o rsync con ese nombre de host porque ssh se confunde al tener dos claves separadas para el mismo nombre de host.
Michael
@ Michael No entiendo qué problema podría tener con las claves de usuario en el escenario que describe, de eso se trata este hilo. SSH se confundiría con las claves de host , pero como usuario, lo que ve es la clave pública del host, no la clave privada del host, y compartir la clave privada de un host es peligroso: solo recomendaría que si los hosts son completamente equivalentes (redundancia en caso de que uno de ellos falle), y probablemente ni siquiera entonces.
Gilles
Ah ok Parece que no hay mucha distinción clara entre los dos, y simplemente se supone que sabes de cuál se está hablando.
Michael
1
@JSBach Tener claves separadas por reino le permite definir permisos más precisos (la clave almacenada en el reino de baja seguridad A se puede usar entre máquinas de A, pero iniciar sesión en B requiere un factor de autenticación más fuerte) y le permite revocarlos por separado (el reino A se vio comprometido, pero aún puedo iniciar sesión en C desde B). SSO es el caso en el que inicia sesión en el sistema de mayor seguridad y luego puede iniciar sesión en otro lugar. No sé qué riesgos ven al tener varias claves por usuario. Este sería un tema para la seguridad de la información .
Gilles
4

No sé cuál es la mejor manera, pero puedo decir cuál es mi camino.

Como administrador del sistema, uso una clave diferente para acceder a cada servidor / servicio como root. De esta manera, si una clave se pierde o se ve comprometida, limito el riesgo a un solo servidor y no necesito actualizar todos mis servicios con claves nuevas.

Hablando de usuarios, uso una clave diferente para cada uno de ellos. Con esa clave, el usuario puede acceder al servicio que necesita como usuario sin privilegios. De esta manera, puedo otorgar o revocar fácilmente el acceso a servicios únicos para cada usuario. En caso de que el usuario pierda su clave, puedo eliminarla de todos los servicios y limitar el riesgo de acceso no autorizado.

MariusPontmercy
fuente
+1 Voy a hablar con mi jefe sobre una nueva política de uso de claves ;-) por servidor / servicio suena aún más seguro que solo por red
Diskilla
1

Creo que podría usar la clave privada en cualquier lugar siempre que le ponga una frase de contraseña, lo que significa que si desea compartir su clave privada con pocas máquinas, digamos que la computadora portátil 1, 2, la computadora de escritorio 1, 2 deberían estar bien.

Desde mi experiencia, mi máquina principal es mi computadora de escritorio que hago la mayor parte de mi trabajo con su potente procesador, pero a veces necesito usar mi computadora portátil en el móvil, solucionar problemas en el centro de datos y demás, por lo que aún puedo iniciar sesión en cualquier host en el que tengo mi clave pública reside.

Grant Skywalker
fuente
1
Lee la mejor respuesta aquí. Lo estás haciendo mal. No es que no puedas hacerlo de esa manera, pero no deberías hacerlo.
PhilT
2
No puedo ver por qué todos los votos negativos. Las redes universitarias (por ejemplo) a menudo tienen un directorio de inicio en red, por lo que un usuario usa la misma clave privada en todas partes, incluso en las computadoras portátiles que se le proporcionan. Mientras no lo copie sin encriptar a través de Internet, creo que está bien si comprende el riesgo. También es más conveniente de esa manera, ya que no tiene que agregar su clave pública a 2,000 lugares diferentes solo porque inició sesión en una máquina diferente.
Asfand Qazi
Votado porque no deberías estar perdiendo reputación por esta respuesta. Es una preferencia personal, obviamente usar una clave separada por servicio y máquina finalmente le da más control, pero a veces es solo una pérdida de tiempo dependiendo de su caso de uso.
Daniel Dewhurst
0

En mi empresa utilizamos estas claves específicas para el usuario. Eso significa el caso dos. El usuario tiene su propia clave y esta se usa para cada máquina que utiliza para conectarse al sistema de la empresa. mi opinión es usar una clave para un sistema. Eso significa que usa esta clave en cada máquina que necesita para conectarse a las redes específicas. Para su caso, esa sería una clave para GitHub y una clave para el sistema de la empresa. Entonces, si su administrador le pregunta nuevamente, le daría la misma clave que la última vez. No es nuevo. Pero no sé si existe una política de uso común para estas claves y lo estoy haciendo mal desde entonces. Eso seguro es posible ;-)

Diskilla
fuente
0

La clave pública que generó es para todos. Les permitirá a) verificar la autenticidad b) cifrar por usted

La clave privada es, bueno, privada. Es solo para ti. Y es la clave que debe respaldar en algún lugar, en un lugar seguro. También puede encriptarlo con una contraseña segura si lo guarda en una memoria USB, por ejemplo.

La clave pública es su identidad para los demás. Así que no hay problema / es mejor usar un par de claves para todo, al menos donde no quieras usar una nueva identidad explícita, para que otros no sepan que eres tú.

Kissaki
fuente
3
Gracias, pero su respuesta no está relacionada con mi pregunta. Ver la respuesta de @ Diskilla.
Behrang