Como Configurar y Utilizar AWS Session Manager

published on 18 March 2024

AWS Session Manager es una herramienta poderosa dentro de AWS Systems Manager que simplifica la forma en que te conectas y gestionas tus servidores EC2 y otros dispositivos, sin la necesidad de SSH o claves. Aquí te muestro cómo configurarlo y usarlo para mejorar la seguridad y eficiencia en el acceso a tus sistemas:

  • Simplifica el acceso a servidores: Sin necesidad de SSH o claves.
  • Mejora la seguridad: A través de AWS IAM, cifrado y registro detallado de sesiones.
  • Fácil de configurar y usar: Con pasos claros para la configuración inicial y conexión posterior.
  • Versátil: Soporta Linux y Windows, y permite comandos interactivos y reenvío de puertos.

Para empezar, asegúrate de tener una cuenta de AWS, permisos de IAM adecuados, y el SSM Agent instalado en tus instancias EC2. Luego, sigue los pasos detallados para la creación de roles de IAM, asociación de roles a instancias, y verificación de la configuración de VPC. Finalmente, explora las distintas formas de conexión, ya sea a través de la consola de AWS, AWS CLI, o incluso programando sesiones automáticas.

¿Listo para mejorar la gestión de tus servidores con AWS Session Manager? Comencemos.

Características Principales

AWS Session Manager tiene varias características importantes:

  • Funciona tanto para servidores Linux como Windows
  • Puedes acceder usando la consola de AWS, la línea de comandos o SDKs
  • Controla quién accede usando AWS Identity and Access Management (IAM)
  • Tus datos están seguros porque todo se cifra
  • Se integra con AWS PrivateLink
  • Puedes ver y auditar quién accedió a qué servidor
  • Permite ejecutar comandos de manera interactiva
  • Puedes hacer Port Forwarding

Beneficios

Usar AWS Session Manager tiene muchas ventajas:

  • Es más seguro porque no tienes que abrir puertos SSH al mundo
  • Puedes llevar un registro de quién accede a tus servidores, lo cual es genial para auditorías
  • Te ayuda a cumplir con regulaciones de seguridad
  • Te ahorra tiempo en manejar claves y sistemas de acceso
  • Facilita conectarte a tus servidores rápidamente, incluso si no tienen una IP pública

Requisitos Previos Para Session Manager

Para empezar a usar AWS Session Manager, hay algunas cosas que necesitas tener listas primero:

Cuenta de AWS

Necesitas una cuenta en AWS. Esta cuenta te dará acceso a los servicios de EC2 y Systems Manager.

Permisos de IAM

Es importante que el usuario de AWS que va a usar Session Manager tenga los permisos necesarios. Esto incluye permisos para trabajar con EC2, Systems Manager y, si lo necesitas, también con S3 y CloudWatch Logs.

Instalar AWS CLI (opcional)

Si quieres manejar Session Manager desde la línea de comandos, debes tener AWS CLI instalado en tu computadora.

Habilitar SSM Agent

Para que Session Manager pueda conectarse a tus instancias EC2, estas deben tener el agente de SSM activo. Este agente ya viene instalado en muchas de las imágenes de máquina (AMIs) que ofrece AWS.

Configuración de AWS Session Manager

1. Crear Rol de IAM

Para usar Session Manager, primero necesitas crear un rol de IAM con los permisos básicos. Este rol necesita la política AmazonSSMManagedInstanceCore para que SSM pueda hablar con tus instancias.

Para crear el rol:

  • Entra a la consola de IAM
  • Haz clic en "Roles" y después en "Crear rol"
  • Elige "EC2" como el tipo de entidad confiable
  • Busca y selecciona la política AmazonSSMManagedInstanceCore
  • Ponle un nombre al rol, como "SSM-Role", y créalo

2. Instalar SSM Agent

El SSM Agent es necesario para que SSM y las instancias EC2 puedan comunicarse.

Para instalarlo:

  • Checa si ya está instalado con sudo systemctl status amazon-ssm-agent en tu instancia
  • Si no está, actualiza tu máquina e instala el agente de SSM
  • Reinicia el agente con sudo systemctl restart amazon-ssm-agent

También puedes usar AMIs que ya tienen el agente instalado.

3. Asociar Rol de IAM a Instancias

Ahora, tienes que vincular el rol de IAM que hiciste con las instancias que quieres manejar con Session Manager.

Para hacerlo:

  • Ve a la consola de EC2 y elige tus instancias
  • Haz clic derecho, ve a "Seguridad", luego "Modificar rol de IAM"
  • Elige el rol de SSM que creaste
  • Guarda los cambios

4. Verificar Configuración de VPC

Session Manager necesita que ciertos puertos estén abiertos para funcionar bien:

  • El puerto 443 debe estar abierto para el tráfico HTTPS de salida
  • Si usas endpoints de VPC, asegúrate de tener un endpoint de SSM

Checa que los grupos de seguridad y NACLs de tus subnets permitan este tráfico.

5. Configuración Avanzada (opcional)

Algunas configuraciones extra que puedes hacer:

  • Activar CloudWatch Logs para guardar registros de tus sesiones
  • Usar cifrado SSL o KMS para proteger el contenido de las sesiones
  • Configurar tiempos de espera para sesiones inactivas y la duración máxima de una sesión

Conexión a Instancias con Session Manager

Desde la Consola de AWS

Para conectarte a una instancia EC2 usando la consola de AWS, sigue estos pasos:

  • Ve a la consola de EC2 y elige la instancia a la cual te quieres conectar.
  • Da clic en "Connect" (Conectar).
  • Selecciona "Session Manager" como tu método de conexión.
  • Haz clic en "Connect" (Conectar) nuevamente para empezar la sesión.

Una vez que estés conectado, podrás escribir y ejecutar comandos directamente en la instancia desde tu navegador.

Desde AWS CLI

Para iniciar una sesión usando la línea de comandos, escribe el siguiente comando:

aws ssm start-session --target <instance-id>

Esto abrirá una ventana de terminal en la que puedes escribir comandos para interactuar con tu instancia.

Reenvío de Puertos

El reenvío de puertos te permite usar aplicaciones de tu instancia EC2 en tu propia computadora.

Para hacer esto:

  • Indica el puerto de la aplicación remota con --port.
  • Usa --local-port para decidir a través de qué puerto en tu computadora quieres acceder.

Por ejemplo:

aws ssm start-session --target i-01234567890 --port 3389 --local-port 3389

Esto conectará el puerto 3389 de tu instancia al puerto 3389 de tu computadora, permitiéndote acceder a la aplicación.

Comandos Interactivos

Para que SSM ejecute comandos automáticamente al iniciar una sesión, puedes:

  • Crear un documento de SSM que ejecute el comando que quieras, como ls -al.
  • Al conectarte, usa --document-name para especificar ese documento.

Así, cada vez que te conectes, verás automáticamente el resultado de ls -al.

Programar Sesiones

Si necesitas que las sesiones se inicien solas en un horario específico, puedes:

  • Usar Automation de SSM para crear una tarea que ejecute start-session.
  • Programa esta tarea para que se ejecute cuando lo necesites.

Esto es útil para tareas de administración o mantenimiento que necesitas hacer regularmente.

Seguridad y Cumplimiento

AWS Identity and Access Management (IAM)

Con Session Manager, puedes decidir quién puede hacer qué, gracias a las políticas de IAM. Esto te permite:

  • Elegir quiénes pueden usar Session Manager
  • Determinar a qué computadoras pueden acceder (como tus servidores EC2)
  • Decidir si pueden ver, empezar o terminar sesiones
  • Limitar los puertos o comandos que pueden usar

Esto te da un control muy específico sobre quién puede acceder a tus sistemas.

Integración con AWS KMS

Session Manager también te permite usar cifrado para proteger los datos que se envían durante las sesiones, usando algo llamado AWS Key Management Service (KMS).

Al activar esta opción, la comunicación entre tu computadora y tus servidores se cifra, lo que añade una capa extra de seguridad.

Registro en CloudWatch Logs

Una parte importante de mantener tus sistemas seguros es saber qué está pasando en ellos. Session Manager puede mandar un registro detallado de cada sesión a CloudWatch Logs. Esto incluye:

  • El ID de la sesión
  • Quién empezó la sesión
  • A qué servidor se conectaron
  • Cuándo empezó y terminó la sesión
  • Qué comandos se usaron
  • Los resultados de esos comandos

Es muy útil activar esta opción para poder revisar actividades pasadas y para cumplir con reglas de seguridad.

Cumplimiento Normativo

Usar Session Manager te ayuda a cumplir con varias normas y reglas de seguridad importantes, como HIPAA, PCI DSS, FedRAMP y SOC. Esto significa que al usar Session Manager estás ayudando a que tus sistemas sean más seguros y estén en línea con lo que piden estas normas.

sbb-itb-03dc61e

Solución de Problemas

Cuando usas AWS Session Manager, a veces pueden surgir problemas. Aquí te explico cómo solucionar los más comunes:

Error de Permisos de IAM

Si te sale un error que dice que no tienes permiso para usar Session Manager, significa que necesitas ajustar los permisos de IAM.

Qué puedes hacer:

  • Asegúrate de que el usuario de IAM tenga el permiso AmazonSSMManagedInstanceCore. Este permiso permite hacer cosas básicas con SSM.
  • Puedes crear un permiso personalizado que incluya lo necesario para usar Session Manager, como ssm:StartSession, ssm:TerminateSession, etc., y dárselo al usuario.
  • Si estás usando un rol para una instancia de EC2, verifica que este rol tenga los permisos para usar Session Manager. Puedes agregar el permiso AmazonSSMManagedInstanceCore o uno personalizado.
  • Checa que no haya un permiso que esté bloqueando estos accesos. Los permisos de bloqueo son más fuertes que los de acceso.

SSM Agent no Instalado

Si te indica que SSM Agent no está en la instancia de EC2, necesitas instalar o activar el agente.

Qué puedes hacer:

  • Revisa si tu instancia tiene una AMI que ya viene con SSM Agent. Muchas AMIs nuevas ya lo incluyen.
  • Si no lo tiene, instala SSM Agent manualmente siguiendo las instrucciones para Linux o Windows.
  • Después de instalar, reinicia el servicio de SSM Agent con sudo systemctl restart amazon-ssm-agent.
  • También puedes usar el documento de SSM AWS-UpdateSSMAgent para instalar o actualizar el agente de forma automática.

Problemas de Conectividad

Si el agente está bien pero no logras conectarte, puede ser un problema de red.

Qué puedes hacer:

  • Asegúrate de que el puerto 443 (HTTPS) esté abierto en el grupo de seguridad y las ACLs de la instancia.
  • Si usas un endpoint de VPC para SSM, verifica que la configuración de ruta sea la correcta.
  • Checa que la instancia pueda conectar con los endpoints de SSM en Internet, o con el endpoint de VPC si usas uno.
  • Si tienes un proxy, revisa que SSM Agent esté configurado correctamente para usarlo.

Sesión Expirada

Si tus sesiones se cierran muy rápido, puedes ajustar el tiempo antes de que expiren.

Qué puedes hacer:

  • Usa el parámetro SessionTimeout cuando inicies una sesión para que dure más, solo para esa vez.
  • En los documentos de SSM que usas para iniciar sesiones, pon un tiempo de espera más largo con timeoutSeconds.
  • En las preferencias de Session Manager, aumenta el SessionIdleTimeout para que todas las sesiones duren más por defecto.

Mejores Prácticas

Aquí tienes algunas recomendaciones para cuando uses AWS Session Manager:

Usar Políticas IAM Detalladas

Es bueno darle a cada persona solo los permisos que realmente necesita para hacer su trabajo. Así, por ejemplo, si alguien solo necesita ver información pero no cambiar nada, solo debería tener permiso para ver. Esto ayuda a mantener todo más seguro.

Cambiar las Claves Regularmente

Es una buena idea cambiar las claves de acceso cada cierto tiempo, como cada tres meses. Esto ayuda a evitar problemas si alguien llega a conseguir una clave que no debería tener.

AWS puede ayudarte a cambiar estas claves automáticamente para que no se te olvide hacerlo.

Mantener un Registro con CloudWatch

Es muy útil activar una opción que guarda un registro de quién se conecta a tus sistemas y qué hace. Esto se puede hacer con algo llamado Amazon CloudWatch Logs. Te permite ver fácilmente qué pasó y cuándo, lo cual es muy útil si necesitas revisar algo o si hay un problema de seguridad.

Cifrar las Sesiones

Aunque AWS Session Manager ya protege tus datos cuando los envías, puedes hacerlo aún más seguro usando un servicio llamado AWS KMS. Esto es especialmente importante si trabajas con información muy delicada. Esto añade una protección extra para asegurarte de que tus datos estén seguros mientras los envías.

Conclusión

Puntos Clave

  • AWS Session Manager te permite entrar a tus servidores de manera segura y fácil.
  • Es una alternativa a métodos más complicados como usar bastiones o SSH.
  • Te ayuda a tener todo bajo control, revisar quién entra a tus sistemas y mantener todo seguro.
  • Permite dar acceso cuando se necesita sin tener que dar claves que no cambian.
  • Ayuda a que todo esté más seguro y cumpla con las reglas de seguridad.

AWS Session Manager es una herramienta práctica para manejar servidores EC2 y otros dispositivos de forma segura. Al no necesitar SSH, claves, ni bastiones, hace mucho más fácil el acceso a tus sistemas, a la vez que aumenta la seguridad.

Lo bueno es que con AWS Session Manager puedes controlar quién entra a tus sistemas gracias a las políticas de IAM. Esto significa que puedes dar acceso solo por un rato, en vez de dar claves fijas.

También, puedes llevar un registro de todo lo que pasa, quién entra y qué hace, guardando esta información en CloudWatch Logs para verla después.

Además, el uso de cifrado SSL y la opción de activar AWS KMS ponen una capa extra de seguridad sobre la información que se comparte en las sesiones.

En pocas palabras, AWS Session Manager es una forma excelente de entrar a tus servidores EC2 y otros sistemas de manera sencilla pero muy segura. Usarlo puede mejorar mucho cómo cuidas la seguridad en tu organización.

Preguntas Relacionadas

¿Qué es Session Manager de AWS?

AWS Session Manager es una herramienta de AWS Systems Manager que te ayuda a manejar tus servidores o instancias EC2 de forma segura. Te permite conectarte a tus servidores para ejecutar comandos o revisar aplicaciones sin tener que lidiar con temas de seguridad como abrir puertos o manejar muchas contraseñas. Es una manera práctica y segura de acceder a tus servidores.

¿Cómo iniciar sesión en AWS CLI?

Para usar AWS CLI (una herramienta que te permite controlar AWS desde la línea de comandos), sigue estos pasos:

  • Primero, asegúrate de tener AWS CLI instalado en tu computadora.
  • Abre la terminal y escribe aws configure. Esto te permitirá ingresar tus credenciales, como tu ID de acceso y clave secreta, y también seleccionar tu región.
  • Después de configurar tus credenciales, puedes empezar a usar comandos de AWS CLI escribiendo aws seguido del servicio y el comando que quieras usar. Por ejemplo, aws ssm start-session para iniciar una sesión con AWS Session Manager.
  • Si necesitas usar diferentes cuentas o configuraciones, puedes crear perfiles adicionales con aws configure --profile nombre_del_perfil y cambiar entre ellos según necesites.

Con estos pasos, puedes manejar tus servicios de AWS directamente desde la línea de comandos de una manera más eficiente.

Related posts

Read more