Bienvenidos a la segunda parte de nuestro laboratorio sobre redes y VPC en AWS! si no haz realizado la primera parte te comparto el siguiente link para que te pongas al dia
Hasta el momento, hemos creado una VPC y dos subredes: una pública y otra privada. A continuación, puedes ver su configuración en el siguiente diagrama.
- Seleccionar la casilla:
Habilitar la asignación automática de la dirección IPv4 pública
Recuerda que la asignación de IP también se puede habilitar al momento de lanzar cada recurso de manera independiente por si no quieres asignarle IP de manera automática a todos.
Lanzar instancia EC2 en subred publica
En este apartado no entraremos en detalles, solo te dejare los pasos ya que hemos creado instancias en otros laboratorios. Si nunca has lanzado una instancia EC2, te recomiendo revisar este post con instrucciones paso a paso:
- En el siguiente apartado puedes dejar todo por defecto y darle a la opción conectar, lo que arroja el siguiente resultado:
- Selecciona la vpc creada en mi caso "vpc-lab" y presionas el botón conectar gateway de internet.
Con esto, ya tenemos nuestra IGW adjunta a la VPC creada para este laboratorio.
La respuesta es no. Esto nos brinda una nueva oportunidad para explorar un componente importante en la configuración de redes: las "Tablas de enrutamiento".
Tabla de enrutamiento
Las tablas de enrutamiento en AWS controlan cómo se dirige el tráfico dentro de una VPC y hacia redes externas. Contienen reglas (rutas) que especifican a dónde enviar el tráfico según la dirección IP de destino, permitiendo, por ejemplo, la comunicación entre subredes, el acceso a Internet a través de una Internet Gateway o una conexión controlada mediante un NAT Gateway.
Con esto en mente, crearemos una tabla de enrutamiento y añadiremos una ruta que apunte a nuestra Internet Gateway para habilitar la comunicación con Internet.
Crear tabla de enrutamiento
En servicio de VPC columna izquierda seleccionamos "Tablas de enrutamiento", veras algunas predeterminadas pero crearemos nuestras propias tablas.
Seleccionar crear tabla de enrutamiento
Asigna un nombre; en este workshop, yo usare "public-route-table" ya que estará asociada a la subred pública en la que estamos trabajando.
Selecciona tu VPC que creaste para este workshop
Haz clic en "Crear tabla de enrutamiento"
Con estos pasos ya tendrás tu tabla de enrutamiento en tu VPC.
- En este apartado debes seleccionar la subred publica y darle "Guardar asociaciones".
Con esto, tu tabla de enrutamiento queda asociada a la subred pública, permitiendo el tráfico en esa subred según las reglas o rutas que se establezcan.
Creación de rutas
Las rutas en una tabla de enrutamiento son reglas que definen cómo se dirige el tráfico de red según su destino.
Por ejemplo:
La ruta con destino "local" utiliza el rango CIDR definido para nuestra VPC (en este caso, 10.0.0.0/24). Esta regla permite que el tráfico dentro del rango de IPs de la VPC se mantenga en la red interna sin salir a internet.
Por otro lado, si agregamos una ruta con destino 0.0.0.0/0 apuntando a nuestra Internet Gateway, estamos indicando que cualquier tráfico hacia una dirección externa a la VPC debe salir a internet, permitiendo que los recursos en la subred se comuniquen con redes externas.
Para agregar rutas a nuestras tablas:
- Selecciona la tabla de enrutamiento.
En la sección inferior, ve a la opción "rutas" y selecciona "editar rutas".
Prueba de conexión a internet
Ya hemos configurado todos los componentes necesarios para que nuestra instancia y cualquier otro recurso en la subred pública puedan comunicarse con internet. Ahora, pongamos esto a prueba
Vayamos otra vez a EC2
Selecciona la instancia
Presiona el botón conectar dejando la configuración por defecto para usar intance connect.
Es aquí donde usamos la típica frase de película: "Estamos dentro".
Además, podemos realizar un ping a un sitio como google.com para verificar que la instancia no solo es accesible desde internet, sino que también nuestros recursos pueden acceder a internet, confirmando así la conectividad.
Paso a paso:
Ir a EC2 y seleccionar "Lanzamiento de nueva instancia"
Asigna un nombre (instance-private) en mi caso.
Elige una AMI, Amazon linux estaría perfecto
Tipo de instancia: t2.micro es suficiente
Crea un par de claves SSH, un paso importante para conectarte. (Consulta el post recomendado para aprender a crear claves SSH si no estás familiarizado).
En Configuraciones de red, expande la configuración presionando "Editar" y elige la VPC creada para este laboratorio y la subred privada donde queremos que esté la instancia.
En el mismo apartado crea un grupo de seguridad que permita reglas de entrada SSH y HTTP, por el momento puede ser desde cualquier origen. (No olvides colocarle un nombre descriptivo)
Finalmente, selecciona lanzar instancia
En este punto ya tenemos nuestras dos instancias, cada una en su propia subred.
- Exploremos nuestra tabla adjunta a la subred privada, simplemente selecciónala y ve a la sección inferior al apartado de rutas
- En el siguiente paso deja todo como predeterminado y vuelve a presionar "conectar"
Ya estando dentro de nuestra instancia en la subred pública. Ahora, desde aquí, conectémonos a la instancia en la subred privada. ¿Qué necesitamos para esto? Las claves SSH que generamos específicamente para esa instancia al momento de crearla.
Abre el archivo .pem que se descargó en tu computadora cuando creaste la clave SSH y copia su contenido.
Luego, usa el editor nano para crear un archivo en la instancia pública y pegar el contenido copiado. Esto nos permitirá tener la clave privada disponible en esta instancia.
sudo nano key-private.pem
Recuerda usar el nombre específico que le diste a tu clave.
- Una vez abierto el editor en la linea de comandos, pega el contenido copiado y guarda el archivo.
Quedaria algo asi:
- Volvemos a la linea de comandos de nuestra instancia publica y ejecutamos el siguiente comando:
ssh -i key-private.pem [email protected]
Asegúrate de usar el nombre de tus llaves y la dirección ip privada de tu instancia.
No recibiremos respuestas satisfactoria ya que de momento esta instancia privada no puede comunicarse con internet pero aprenderemos como hacerlo.
Antes de continuar, es importante mencionar que hay formas más seguras de permitir el acceso. Para reforzar el concepto de bastion host, puedes configurar el grupo de seguridad de la instancia privada para que solo permita tráfico SSH desde recursos específicos. Esto puede lograrse permitiendo acceso únicamente desde un grupo de seguridad específico, una IP concreta o un rango CIDR determinado.
Revisando reglas del grupos de seguridad de la instancia privada
Si vamos al servicio EC2 y ubicamos en la columna izquierda el apartado de grupos de seguridad veremos los dos grupos que hemos para nuestras instancias en mi caso public-sg y private-sg
Exploremos el grupo de seguridad de la instancia privada
De esta manera, estamos limitando el acceso a la instancia privada únicamente desde el bastion host.
Ahora sí, habilitemos la comunicación de nuestra instancia privada con internet. ¿Cómo es esto posible? Aquí entra en juego un nuevo concepto: NAT Gateway.
Que es una NAT Gateway
Una NAT (Network Address Translation) Gateway es un servicio que permite a las instancias en una subred privada enviar solicitudes a internet, mientras mantiene su dirección IP privada. Al actuar como intermediaria, la NAT Gateway recibe las solicitudes de salida de la subred privada y las traduce a una IP pública. Esto permite que las instancias accedan a internet de forma segura, sin ser accesibles desde fuera de la red.
Creación de una NAT Gateway
- Vamos al servicio de VPC, ubicamos NAT Gateway en la columna izquierda
- Ahora, vamos a la tabla de enrutamiento de la subred privada y creamos una ruta hacia la NAT Gateway
Con la ruta configurada hacia la NAT Gateway, ahora podemos hacer un ping a google.com desde nuestra instancia en la subred privada para verificar que la conectividad a Internet está funcionando correctamente.
Resumen
Espero que hayan aprendido mucho sobre estos conceptos. Aunque algunos temas se desvían del objetivo principal, el propósito es que comprendan el "porqué" de cada acción y no pasen por alto conceptos importantes.
Creamos una Internet Gateway.
Configuramos tablas de enrutamiento y agregamos rutas.
Establecimos un Host Bastion.
Conectamos nuestras instancias mediante SSH.
Establecimos comunicación entre nuestros recursos
Configuramos una NAT Gateway con una IP elástica.
Realizamos peticiones a Internet desde nuestra instancia privada y recibimos respuestas satisfactorias.
Profundizamos en conceptos clave relacionados con redes y seguridad
Espero que les haya gustado. Como siempre, les invito a interactuar con el contenido, compartirlo y comentarme si aprendieron algo nuevo o si tienen alguna duda.
SOCIAL SHARE CARD GENERATOR