AWS Amazon EC2: inicio de sesión SSH sin contraseña para usuarios no root que utilizan pares de claves PEM

AWS Amazon EC2: inicio de sesión SSH sin contraseña para usuarios no root que utilizan pares de claves PEM

Tenemos un par de clústeres ejecutándose en AWS (HAProxy/Solr, PGPool/PostgreSQL) y hemos configurado scripts para permitir que nuevas instancias esclavas se incluyan automáticamente en los clústeres actualizando sus IP a archivos de configuración almacenados en S3. luego haga SSH a la instancia maestra para iniciarlos, descargar la configuración revisada y reiniciar el servicio. Todo funciona bien, pero en las pruebas utilizamos nuestro pem maestro para SSH, lo que significa que debe almacenarse en una instancia. No es bueno.

Quiero un usuario no root que pueda usar un par de claves de AWS y que tenga acceso sudo para ejecutar los scripts de descarga, configuración y reinicio, pero nada más. rbash parece ser el camino a seguir, pero entiendo que esto puede ser inseguro a menos que se configure correctamente.

Entonces, ¿qué agujeros de seguridad existen en este enfoque?

  • Nuevo par de claves de AWS creado para user.pem (en realidad no se llama 'usuario')
  • Nuevo usuario en instancias: usuario
  • La clave pública para el usuario está en ~user/.ssh/authorized_keys (se toma creando una nueva instancia con user.pem y copiándola desde /root/.ssh/authorized_keys)
  • La clave privada para el usuario está en ~user/.ssh/user.pem
  • 'usuario' tiene el shell de inicio de sesión de /home/user/bin/rbash
  • ~user/bin/ contiene enlaces simbólicos a /bin/rbash y /usr/bin/sudo
  • /etc/sudoers tiene la entrada "usuario ALL=(raíz) NOPASSWD: [ruta a los scripts]
  • ~user/.bashrc establece RUTA en /home/user/bin/ solamente
  • ~user/.inputrc ha 'activado la desactivación de finalización' para evitar la doble tabulación de 'sudo /' para encontrar rutas.
  • ~user/ -R es propiedad de root con acceso de solo lectura al usuario, excepto ~user/.ssh que tiene acceso de escritura para el usuario (para escribir hosts_conocidos) y ~user/bin/* que son +x
  • La comunicación entre instancias utiliza 'ssh -o StrictHostKeyChecking=no -i ~user/.ssh/user.pem user@[host] sudo [scriptname]'

Cualquier idea sería bienvenida.

Marca...

Respuesta1

Ok, no hay respuestas que digan que esto está horriblemente expuesto de alguna manera, excepto por el hecho de que si alguien ingresa al inicio de sesión del usuario, obtiene la clave PEM del usuario. Lo cual no debería permitirles llegar a ningún otro lugar*.

Está trabajando con el enfoque anterior.

*Se aplican las advertencias habituales

información relacionada