Diseñar, implementar y documentar una arquitectura segura en AWS para una aplicación web de comercio electrónico, aplicando los principios y prácticas aprendidas en el curso Cloud Security Foundations.
El estudiante deberá desplegar una solución segura en AWS usando AWS Academy Learner Lab. La solución debe incluir lo siguiente:
Se creó la VPC-app-web con el rango de direcciones CIDR 1.0.0.0/16, la cual permite hasta 65536 direcciones IPv4.
Se crean 2 subredes 2 públicas y 2 privadas distribuidas (una pública y una privada) en 2 zonas de disponibilidad diferentes (1a,1b) como se indica en la arquitectura. Cada subred tiene disponibles aproximadamente 251 direcciones ya que AWS reserva 5 direcciones por defect: Dirección de red, Dirección de broadcast (aunque no se usa realmente en AWS), Gateway de la subred (primer IP usable), Dos IPs más reservadas por AWS para fines internos (DNS y futuras expansiones).
Código para instalar MySQL
#!/bin/bash
yum update -y
yum install -y mariadb-server
systemctl start mariadb
systemctl enable mariadb
Para instalar los servidores en las instancias EC2, se procederá a conectarse a la instancia mediante SSH. Para ello, debe garantizarse que las instancias puedan salir a internet. Se crea una puerta de enlace a internet:
Se procede a asociar la VPC con la subred pública de la zona a:
Se agrega la ruta hacia Internet:
Se procede a hacer la instalación de Apache
#!/bin/bash
# Actualizar los paquetes del sistema
sudo dnf update -y
# Instalar Apache (httpd)
sudo dnf install -y httpd
# Iniciar el servicio Apache
sudo systemctl start httpd
# Habilitar el servicio para que inicie automáticamente al arrancar
sudo systemctl enable httpd
# Crear una página HTML de prueba
echo "<h1>Servidor Web 1 funcionando correctamente</h1>" | sudo tee /var/www/html/index.html
Se verifica el estado del servidor:
Se verifica la conexión al servidor:
Se hace el mismo procedimiento para la instancia 2 y se asocia a la puerta de enlace para que pueda enrutarse a internet y se instala el servidor Apache de la misma forma en que se instaló para el servidor 1:
Se verifica ingresando desde el navegador:
Pra garantizar la salida a Internet desde una subred privada, se configura una compuerta NAT o NAT Gateway.
Se asocia la NAT con una tabla de enrutamiento para la subred privada:
Se procede a asociar la subred privada:
Grupo de seguridad del servidor 1:
Grupo de seguridad del servidor 2:
ACL de subredes públicas:
ACL de subredes privadas:
Se corrobora que se pueda conectar a los servidores 1-2 a través del puerto 80:
Se corrobora la conexión con SSH:
Se genera la conexión a la instancia que aloja la base de datos a través de SSH desde la instancia 1:
Se genera la conexión a la instancia que aloja la base de datos a través de SSH desde la instancia 2:
En este punto no se puede avanzar ya que no se tienen permisos para usar este servicio.
No se tienen los permisos para crear políticas de seguridad en el
bucket.
- Habilitar versionado y cifrado del lado del servidor en al menos un
bucket.
Pese a no tener permisos se logró subir archivos al bucket.
Minutos después se subió nuevamente uno de los archivos y se registró
en el control de versiones.
Se intentó crear una regla para que cada vez que se suba un archivo a S3 se envíe una notificación al correo electrónico integrando SNS con EventBridge, sin embargo, no fue posible pese a que se creó la regla de manera satisfactoria.
Para solucionar la notificación vía correo electrónico, se creó una notificación enlazando S3 con SNS para todos los eventos de tipo PutObject.
Adicionalmente, se configuró en CloudTrail un registro de seguimiento al bucket S3 de material estático.
Se pueden apreciar los registros almacenados en el bucket de S3 creado para el almacenamiento de los logs de CloudTrail.
Por último, en la carpeta de logs que se requería inicialmente se pudieron almacenar los logs generados por las actividades en el bucket de S3 para los archivos estáticos.