Puerta de enlace de acceso SSH para muchos servidores

Puerta de enlace de acceso SSH para muchos servidores

Gestionando múltiples servidores, más de 90 actualmente con 3 devops a través de Ansible. Todo funciona muy bien, sin embargo, hay un problema de seguridad gigante en este momento. Cada desarrollador utiliza su propia clave ssh local para obtener acceso directamente a los servidores. Cada desarrollador utiliza una computadora portátil, y cada computadora portátil podría verse comprometida, abriendo así toda la red de servidores de producción a un ataque.

Estoy buscando una solución para administrar el acceso de forma centralizada y así bloquear el acceso para cualquier clave determinada. No muy diferente a cómo se agregan claves a bitbucket o github.

Desde el punto de vista de mi cabeza, asumiría que la solución sería un túnel desde una máquina, la puerta de enlace, hasta el servidor de producción deseado... al pasar por la puerta de enlace, la solicitud recogería una nueva clave y la usaría para obtener acceso al producto. servidor. El resultado sería que podemos eliminar de manera rápida y eficiente el acceso de cualquier desarrollador en cuestión de segundos con solo negar el acceso a la puerta de enlace.

ingrese la descripción de la imagen aquí

¿Es esta una buena lógica? ¿Alguien ha visto ya alguna solución para solucionar este problema?

Respuesta1

Eso es demasiado complicado (verificar si una clave tiene acceso a un servidor de producción específico). Utilice el servidor de puerta de enlace como host de salto que acepte todas las claves válidas (pero puede eliminar fácilmente el acceso a una clave específica que elimina el acceso a todos los servidores a su vez) y luego agregue solo las claves permitidas a cada servidor respectivo. Después de eso, asegúrese de poder acceder al puerto SSH de cada servidor solo a través del host de salto.

Este es el enfoque estándar.

Respuesta2

Los ingenieros no deberían ejecutar ansible directamente desde su computadora portátil, a menos que se trate de un entorno de desarrollo/prueba.

En su lugar, tenga un servidor central que extraiga los runbooks de git. Esto permite controles adicionales (cuatro ojos, revisión de código).

Combine esto con un bastión o un servidor de salto para restringir aún más el acceso.

Respuesta3

Netflix implementó su configuración y lanzó software gratuito para ayudar en esa situación.

Mira este videohttps://www.oreilly.com/learning/how-netflix-gives-all-its-engineers-ssh-accesso esta presentación enhttps://speakerdeck.com/rlewis/how-netflix-gives-all-its-engineers-ssh-access-to-instances-running-in-productioncon el punto central:

Revisaremos nuestra arquitectura de bastión SSH, que en esencia utiliza SSO para autenticar a los ingenieros y luego emite credenciales por usuario con certificados de corta duración para la autenticación SSH del bastión en una instancia. Estas credenciales de corta duración reducen el riesgo asociado a su pérdida. Cubriremos cómo este enfoque nos permite auditar y alertar automáticamente después del hecho, en lugar de ralentizar a los ingenieros antes de otorgar acceso.

Su software está disponible aquí:https://github.com/Netflix/bless

Algunas conclusiones interesantes incluso si no implementa toda la solución:

  • usan certificados SSH en lugar de solo claves; Puede incluir muchos más metadatos en el certificado, lo que permite muchas restricciones según los requisitos y también permite auditorías más simples.
  • utilizando una validez de certificados de muy corto plazo (como 5 minutos) (las sesiones SSH permanecen abiertas incluso después de que caduque el certificado)
  • usar 2FA para dificultar también la creación de secuencias de comandos y obligar a los desarrolladores a encontrar otras soluciones
  • un submódulo específico, fuera de su infraestructura y debidamente protegido mediante los mecanismos de seguridad que ofrece la nube donde se ejecuta, se encarga de generar certificados de forma dinámica para que cada desarrollador pueda acceder a cualquier host

Respuesta4

OneIdentity (ex-Balabit) SPSes exactamente lo que necesita en este escenario. Con este dispositivo, puede administrar las identidades de los usuarios básicamente en cualquier máquina, rastrear el comportamiento del usuario, monitorear y alertar e indexar todo lo que hacen los usuarios para revisiones posteriores.

información relacionada