¿Cómo gestionar de forma segura las claves privadas para pares de claves gestionadas por EC2?

8

Para iniciar una instancia EC2, necesita un par de claves. ¿Cómo maneja la situación en la que un ingeniero con acceso a la clave privada para ese par de claves abandona la empresa? ¿Funcionaría agregar acceso ssh individual y desautorizar el par de claves inicial, inmediatamente después del lanzamiento de la instancia?

Jeff
fuente
1
¿Desplegar nuevas instancias de las instancias EC2 y eliminar las antiguas con el par de claves anterior?
sdolgy

Respuestas:

10

Cuando un empleado o contratista abandona la empresa, debe deshabilitar cualquier acceso privilegiado que tenga a los recursos de la empresa. Esto incluye (pero no se limita a) sus preocupaciones clave ssh:

  1. Elimine la clave ssh pública de todos los archivos autorizado_claves en todas las instancias en ejecución. Reemplácelos con una clave ssh pública recién generada que solo conozcan las personas que deberían tener acceso.

  2. Elimine todas las entradas de pares de claves en EC2 que fueron conocidas por los difuntos para que no se puedan iniciar nuevas instancias con esos pares de claves. Reemplácelos con nuevas entradas de pares de claves, tal vez con los mismos nombres si su

El método alternativo que propone también es bueno y es el que uso: deshabilite la clave ssh inicial y agregue claves ssh públicas individuales para cada desarrollador para que puedan iniciar sesión con su clave ssh privada normal. Esto se puede hacer para iniciar sesión en una cuenta compartida o con cada desarrollador obteniendo su propia cuenta de usuario individual (mi preferido).

Después de que un empleado se va, no solo tendrá que limpiar los servidores en ejecución, sino también el proceso que agrega las claves ssh a los nuevos servidores. Y, cuando un empleado se une, deberá hacer lo contrario: agregar claves ssh a los servidores en ejecución y actualizar el nuevo proceso del servidor.

Esto puede ser un poco más de trabajo para mantener muchas claves ssh en muchos servidores, pero ahí es donde entra la automatización.

Eric Hammond
fuente
3

Nunca debe dar esta clave privada a los usuarios finales. Los usuarios finales deben contar con sus propios medios de inicio de sesión, como la autenticación de clave pública (utilizando su PROPIA clave privada protegida con contraseña), seguida de la autorización LDAP.

La distribución de la clave privada que le dio ec2 hace que sea imposible dar de baja a los usuarios. Esto es exactamente por qué el uso de credenciales compartidas está completamente prohibido por todas las normas de seguridad y cumplimiento.

Cuando permite el uso de credenciales compartidas:

  • Es imposible usar registros para saber quién es realmente / quién estaba en un host
  • Es imposible eliminar el suministro de un usuario sin eliminar el suministro de todos los usuarios (incluido el acceso de emergencia, que es para lo que realmente sirve esa clave privada EC2)
kgilpin
fuente
2

Consulte la documentación de Amazon sobre la rotación de credenciales de acceso .

Use algo como títere o script ssh sólido para correr y reemplazar todas las instancias de la clave anterior si no desea relanzar todo ... o simplemente relanzar todo.

Jeff Ferland
fuente
Creo que no habla sobre las claves de cuenta que puede rotar, sino más sobre la clave privada .pem para iniciar sesión en ssh.
2
El inicio de sesión ssh está controlado por las entradas ~ / .authorized_keys. Inicialmente, estos son sembrados por el proceso de lanzamiento de EC2, de ahí la necesidad de usar títeres o secuencias de comandos para reemplazarlos o relanzarlos.
Jeff Ferland el
bien. No lo sabía :)
Si, eso es correcto. Para cuentas normales, podría haber usado sshd para usar LDAP, y así poder desactivar un usuario una vez desde LDAP. Pero las claves de lanzamiento son administradas por AWS. Así que creo que la solución de títeres / chef de eliminar una clave de inicio del archivo autorizado de claves de cada servidor es el camino a seguir. Creo que también me gustaría que cada administrador tenga su propia clave de inicio de AWS, por lo que solo estoy eliminando el acceso de un solo usuario a la vez.
Jeff
@Jeff Si SSH está configurado para hacer referencia a LDAP e ignorar autorizadas_claves, la clave de inicio solo será importante para controlar el inicio y la finalización de la instancia. Eso depende de cómo construyas tu imagen.
Jeff Ferland