Configurar un acceso SSH a instancias EC2 en AWS

A menudo es importante tener acceso a las instancias EC2 en AWS (Amazon Web Services), por lo tanto, te voy a mostrar como configurar el acceso SSH a instancias EC2 en AWS de forma segura utilizando un par de llaves, las cuales vamos a generar a continuación.

Para poder realizar este procedimiento es necesario que ya tengas creada tu instancia de EC2, si aún no la tienes, usa UNO de estos DOS artículos para crearla:
1. Configurar un servidor NGINX de instancia única con Elastic Beanstalk
2. Arquitectura de Alta Disponibilidad en AWS con Elastic Beanstalk paso a paso

Para que configurar un acceso SSH a instancias EC2 en AWS?

El acceso SSH a una instancia EC2 te permite utilizar la linea de comandos de la instancia en cuestión, habilitandote para ejecutar cualquier comando que necesites. Los usos pueden variar mucho pero en esencia algunos de estos usos son:

  • Instalar librerías
  • Debuggear viendo los logs
  • Hacer configuraciones especiales
  • Probar la ejecución de comandos
  • Entre otros…

Pero, que es un par de llaves?

Un par de claves, que consta de una clave privada y una clave pública, es un conjunto de credenciales de seguridad que se utiliza para demostrar su identidad cuando se conecta a una instancia. Amazon EC2 almacena la clave pública y usted almacena la clave privada. Utilice la clave privada, en lugar de una contraseña, para acceder de forma segura a sus instancias. Cualquier persona que posea sus claves privadas puede conectarse a sus instancias, por lo que es importante que almacene sus claves privadas en un lugar seguro.

https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/ec2-key-pairs.html

Como configurar un acceso SSH a instancias EC2 en AWS

Las instancias EC2 pueden crearse de diferentes formas, pero por lo regular, son creadas por Elastic Beanstalk. Por lo tanto, realizaremos los siguientes pasos:

  1. Crear par de claves en EC2 y descarga la llave
  2. Asignar par de claves en un ambiente de Elastic Beanstalk
  3. Configurar el grupo de seguridad para permitirnos acceso SSH desde nuestra IP
  4. Asignar los permisos apropiados para la llave descargada
  5. Acceder por SSH a una instancia EC2 de Elastic Beanstalk de forma segura

Para hacer esto, entra al apartado de EC2 en tu consola de AWS, o bien, entra dando clic aquí. Una vez allí, selecciona el menú “Key Pairs” como se muestra en la imagen a continuación:

“Key pairs” es la sección desde la cual podremos crear nuestro par de claves.

Una vez que des clic en “Key pairs” llegarás a una sección que contiene un botón de color naranja llamado “Create key pair“; presiona ese botón y deberás llegar a la siguiente pantalla en la que deberás darle nombre a tu llave, puedes poner lo que tu prefieras, pero te recomiendo que pongas el nombre del ambiente a la cual la vas a asignar, ya que como buena practica se debe tener un par de claves por ambiente.

Agrega el .pem al final del nombre de tu par de claves.

Posteriormente, da clic en “Create key pair“, lo que ocasionará que se descargue el archivo, en mi caso, “MostSecureWebsite.pem“.

Asegúrate de almacenar esta llave en algún lugar seguro de tu computadora ya que, además de que no puedes descargarla de nuevo, deberás usarla siempre que quieras acceder vía SSH a tu instancia EC2. NO se te vaya a ocurrir guardarla dentro del código fuente del proyecto, ya que solo aquellas personas que deban tener acceso vía SSH deben tenerla y no queremos que alguien no autorizado pueda tener acceso a ella.

Dirígete al ambiente de Elastic Beanstalk en el cual vas a configurar el par de claves recién creadas. Una vez que estes ahí da clic en el menú “Configuration” como se muestra en la imagen:

Al dar clic en “Configuration” se desplegarán las opciones de configuración de nuestro ambiente de Elastic Beanstalk. Busca la sección de “Security” y da clic en “Edit”.

Al dar clic en “Configuration” se desplegarán las opciones de configuración de nuestro ambiente de Elastic Beanstalk. Busca la sección de “Security” y da clic en “Edit“, lo que te desplegará una pantalla en la cual podremos asignar nuestro par de claves.

Bajo “EC2 key pair” selecciona de la lista el nombre de tu par de claves y da clic en “Apply”.

Bajo “EC2 key pair” selecciona de la lista el nombre de tu par de claves y da clic en “Apply“. Al hacerlo se te va a pedir confirmar la acción, por lo que debes proceder a confirmar dando clic en el botón “Confirm“.

Da clic en el boton “Confirm” para continuar.

Ya que confirmaste esta acción, Elastic Beanstalk, va a reconstruir tu ambiente con la nueva configuración y tu par de claves ya estará asociada a tu ambiente.

En este paso, es necesario que vayamos a la sección de EC2 y que esta vez demos clic en “Security groups”, como se muestra a continuación:

Da clic en “Security groups”

A continuación, selecciona el grupo de seguridad correspondiente a tu instancia de EC2. Podrás notar en la parte inferior de la pantalla (una vez selecciones el grupo de seguridad y vayas al tab “Inbound rules“) que ya existe una regla para el puerto 22. El problema es que esta regla permite que cualquier IP pueda intentar tener acceso a la instancia vía SSH, por lo que vamos a restringirlo a que solo se pueda acceder desde nuestra propia IP.

Selecciona el grupo de seguridad de tu ambiente y da clic en “Edit inbound rules”.

Así que da clic en “Edit inbound rules“, en la regla del puerto 22, cambia “0.0.0.0/0” por tu IP seleccionando “My IP” en la lista de la columna “Source” y posteriormente da clic en “Save rules” para guardar el cambio.

En la regla de tipo SSH selecciona “My IP” de la lista en la columna “Source”.

Tenemos que asignarle permisos especiales de escritura y lectura a la llave descargada. Así que, supongamos que cuando se descargo la llave (en mi caso MostSecureWebsite.pem) la cambiaste de ubicación a un nivel arriba de la carpeta de tu proyecto. Por lo tanto, los comandos que debes ejecutar para darle los permisos adecuados son los siguientes:

# Cambia de ubicación la llave
# Obviamente, cambia el nombre del archivo y la ruta en donde quieres guardar la llave
mv ~/Downloads/MostSecureWebsite.pem ~/folderEnDondeGuardasTusProyectos/MostSecureWebsite.pem

# Asigna permisos de lectura y escritura
chmod 400 ~/folderEnDondeGuardasTusProyectos/MostSecureWebsite.pem

Por último, nos toca acceder a nuestra instancia EC2 creada con Elastic Beanstalk vía SSH. Para hacerlo, ejecuta el siguiente comando en tu terminal:

# Obviamente, cambia el nombre del archivo y la ruta en donde está guardada tu llave
# También cambia "tudominio.com" por la dirección de tu instancia
ssh -I ~/folderEnDondeGuardasTusProyectos/MostSecureWebsite.pem [email protected] -o "ServerAliveInterval 60"

Y listo, con esto ya conoces cómo configurar un acceso SSH a instancias EC2 en AWS de forma segura!

Hasta la próxima!

Espero que te haya gustado y ayudado este artículo, de ser así, suscríbete para que seas notificad@ siempre que suba artículos sobre automatización y seguridad informática, me lo agradecerás después.También puedes seguirme en Instagram en @andres.gtz y hacerme las preguntas que desees. Así mismo, agradezco tu generosidad si deseas donar criptomonedas a alguna de las siguientes direcciones:

Please Add coin wallet address in plugin settings panel

Si te quedaron dudas, puedes escribirlas aquí en los comentarios, o bien, escríbeme a mi Instagram @andres.gtz.

Aprende a Instalar Laravel + Base de datos con Amazon Web Services paso a paso Protegido: Instalar ModSecurity en ELB con NGINX con este script Instalar ModSecurity 3.0 en Elastic Beanstalk con NGINX gratis!
View Comments
There are currently no comments.