Session Manager

Cómo lograr una conexión segura sin llaves a los servidores virtuales de EC2 con Session Manager 

Por Sahian Hernández, Infrastructure Analyst en Financial Solutions

Cuando hablamos sobre una manera segura de acceder a los recursos que se tienen en la nube, tal vez lo primero que nos viene a la mente es habilitar un pivote, abrir el tráfico SSH del servidor al equipo y una vez dentro podemos acceder a los otros servidores en nuestra VPC.

Esto puede tener varias implicaciones, como por ejemplo que los servidores deben estar comunicados entre sí tanto en red como en grupos de seguridad o al crear los servidores se les debió asignar una llave de seguridad para entrar (.pem).  En algunos casos, si se usa la misma llave para todos los servidores se podría presentar un problema al momento de habilitar rápidamente un nuevo acceso para una o varias personas , ya que, si se desea solo dar acceso a solo un servidor, al tener la llave general podría darse el caso que entre a todos los demás.

Existen varias formas de mitigar los pequeños o grandes problemas al trabajar con pivotes, sin embargo, AWS ofrece una alternativa fácil de aplicar y muy segura la cual es System Manager.

Y… ¿Qué hace System Manager?

Es un servicio que se puede utilizar para ver y controlar su infraestructura en AWS, y te ayuda a mantener la seguridad y la conformidad al analizar las instancias administradas e informar o tomar medidas correctivas sobre cualquier infracción de política que detecte.

Para más información de System Manager consulta la información de AWS aquí:

https://amzn.to/3tacTsU

Pasos para configurar Session Manager

Con System Manager podremos iniciar sesión dentro del servidor sin la necesidad de un (.pem), bastará que el usuario tenga los permisos correspondientes.

Para la implementación de System Manager se necesitan solo dos pasos:

  1. Darle permisos al servidor para que pueda usar los recursos, para ello empezaremos por crear un rol el cual deberá tener*
  2. Instalar el agente en el servidor

Paso 1 Crear el rol

EC2SSMRole:

  Type: «AWS::IAM::Role»

  Properties:

    AssumeRolePolicyDocument:

      Version: «2012-10-17»

      Statement:

        – Effect: «Allow»

          Principal:

            Service: [«ec2.amazonaws.com»]

          Action: «sts:AssumeRole»

    Path: «/»

    ManagedPolicyArns:

      – ‘arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore’

      – ‘arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy’

Quedando de la siguiente manera:

Por último, se le asignará el rol a la instancia en la cual queremos habilitar el agente:

Paso 2 Instalación del agente

Para la instalación del agente tenemos que entrar al servidor por SSH y ejecutar el siguiente comando:

sudo yum install -y https://bit.ly/3b0VpJb

Si los pasos se realizaron correctamente podremos ir a System manager > Session Manager dar clic en Iniciar una sesión y el servidor debería de estar habilitado.

Posteriormente seleccionando la podremos ingresar al servidor, (sin la necesidad de contar con alguna llave o contraseña):

Subir o descargar archivos en el servidor es algo de todos los días y para eso programas como WinSCP o SCP pueden ayudar bastante, pero en este caso, no contamos con una llave para poder utilizar los programas; sin embargo al usar Session Manager no es necesario abrir el puerto 22, puerto que utilizan los programas antes mencionados y representa un riesgo importante en términos de seguridad.

Con AWS, tenemos otra manera de resolver la necesidad de subir y descargar archivos de una forma sencilla, a continuación te explicamos cómo.

El primer paso será ir a S3 en la cuenta y crear un nuevo bucket, luego simplemente poner el archivo que se desea subir:

Para estrenar tu nuevo Session Manager, utilizando la consola que se abrió anteriormente, instalaremos AWS CLI, en este caso los comandos pueden cambiar según el sistema operativo, pero con base en la documentación oficial (https://amzn.to/2RkdevR) no deberíamos de tener problema. Ahora le daremos acceso al servidor a S3 y aunque esto se podría lograr de varias formas, en esta guía lo haremos mediante el mismo rol que hemos estado usando para Session Manager.

Tendremos que crear una nueva política, para ello podemos usar este JSON:

{

    «Version»: «2012-10-17»,

    «Statement»: [

        {

            «Effect»: «Allow»,

            «Action»: [

                «s3:GetBucketLocation»,

                «s3:ListAllMyBuckets»

            ],

            «Resource»: «arn:aws:s3:::*»

        },

        {

            «Effect»: «Allow»,

            «Action»: «s3:*»,

            «Resource»: [

                «arn:aws:s3:::mybucket»,

                «arn:aws:s3:::mybucket/*»

            ]

        }

    ]

}

Según mis necesidades, requiero que me permita realizar todas las acciones, pero únicamente en el bucket que creé para pasar los archivos.

Dependiendo de las necesidades esta política puede ser más o menos estricta.

Dejaremos el mismo Rol que creamos en un inicio de la siguiente manera:

Para finalizar, si todo fue correcto podremos ir a la consola y sincronizar nuestro bucket:

En resumen, Session Manager en conjunto con S3 es una buena forma de habilitar acceso a usuarios, sin tener que comprometer la llave o un acceso a internet. De igual forma, podría resultar más cómodo trabajar únicamente desde el navegador.

¡Cuéntame si te funcionó, si necesitas ayuda contáctanos!

En Financial Solutions, el manejo de la seguridad y la gestión de los accesos a recursos es clave en todos los proyectos que realizamos, por eso buscamos siempre aplicar las mejores prácticas de la industria.


Related Post

Contactar a un especialista