us-east-2 (Ohio) • AWS CLI • Amazon Linux 2023

Arquitectura VPC Segura & Bastion Host

Documentación técnica del despliegue de red aislada en AWS: segmentación de subredes públicas y privadas, host de salto seguro, servidor Nginx y emisión de certificados SSL válidos ante autoridades certificadoras.

Dominio SSL Oficial (Sin advertencias en navegador)
https://3-128-255-97.sslip.io
VPC CIDR
10.0.0.0/16
IP Pública (WAN)
3.128.255.97
IP Privada (LAN)
10.0.1.49
Servidor & TLS
Nginx • HTTP/2
01 / ARQUITECTURA

Topología de Red y Flujo de Tráfico

Segmentación estricta entre la capa de acceso perimetral (DMZ / Bastion) y la capa de cómputo privado sin salida directa a la WAN.

AWS VPC: 10.0.0.0/16 (us-east-2)
Subred Pública (DMZ) 10.0.1.0/24 • IGW
EC2-Publica (Bastion + Web) t3.micro
IP Pública 3.128.255.97
IP Interna 10.0.1.49
Servicios HTTPS (443), SSH (22)
Salida WAN Internet Gateway (0.0.0.0/0)
Security Group: sec-publica (TCP 443, TCP 80, TCP 22, ICMP)
Subred Privada (Aislada) 10.0.2.0/24 • Sin IGW
EC2-Privada (Backend / DB) t3.micro
IP Pública Ninguna
IP Interna 10.0.2.x
Acceso Solo vía red local interna
Entrada Ingress Referencia a sec-publica
Security Group: sec-privada (TCP 22 e ICMP solo de sec-publica)
Cliente / Navegador ➔ HTTPS (443) / SSH (22) ➔ EC2 Pública (Bastion) ➔ Salto Interno (10.0.0.0/16) ➔ EC2 Privada (10.0.2.x)
02 / IMPLEMENTACIÓN

Flujo Técnico de Despliegue

Resumen de las fases ejecutadas mediante AWS CLI y scripts de inicialización automatizada.

1

Red & Enrutamiento

Aislamiento de la infraestructura con VPC segmentada y enrutamiento perimetral.

  • VPC creada con bloque 10.0.0.0/16.
  • Subred pública 10.0.1.0/24 con asignación de IP pública.
  • Subred privada 10.0.2.0/24 aislada.
  • Internet Gateway vinculado con tabla de ruteo 0.0.0.0/0 -> IGW.
2

Firewalls & Acceso

Seguridad basada en el principio de mínimo privilegio y referencias de grupo dinámicas.

  • Par de llaves SSH (mi-llave.pem).
  • sec-publica: Ingress abierto para 443 (HTTPS), 80 (HTTP), 22 (SSH) e ICMP.
  • sec-privada: Ingress restringido a --source-group sec-publica.
3

Aprovisionamiento EC2

Instancias t3.micro bajo Amazon Linux 2023 con arranque desatendido.

  • Script user_data.sh para instalación automática de Nginx.
  • Instancia pública configurada como Web Server + Bastion Host.
  • Instancia privada lista para servicios internos sin exposición.
03 / SEGURIDAD TLS

Certificados SSL & Resolución de Advertencias

Análisis del error de certificado en navegadores al usar IPs directas y solución mediante ACME / Let's Encrypt.

¿Por qué salía "La conexión no es privada" (NET::ERR_CERT_AUTHORITY_INVALID)?
Los navegadores (Chrome, Firefox, Safari) confían exclusivamente en Autoridades Certificadoras (CA) públicas reconocidas. Cuando se usa un certificado autofirmado para una IP numérica (https://3.128.255.97), el navegador no puede validar la cadena de confianza y muestra una alerta de seguridad preventiva.
Solución Implementada: Let's Encrypt + sslip.io
Se configuró el FQDN 3-128-255-97.sslip.io, el cual resuelve directamente a tu IP pública. Mediante Certbot con el método --webroot, Let's Encrypt validó el desafío HTTP-01 y emitió un certificado TLS/SSL oficial reconocido globalmente con renovación desatendida.
/etc/nginx/nginx.conf
# Redirección automática HTTP a HTTPS
server {
    listen 80 default_server;
    server_name _;
    location /.well-known/acme-challenge/ { allow all; }
    location / { return 301 https://$host$request_uri; }
}

# Servidor HTTPS con Certificado Oficial Let's Encrypt
server {
    listen 443 ssl default_server;
    http2 on;
    server_name 3-128-255-97.sslip.io 3.128.255.97;
    root /usr/share/nginx/html;

    ssl_certificate "/etc/letsencrypt/live/3-128-255-97.sslip.io/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/3-128-255-97.sslip.io/privkey.pem";

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
}
04 / CONECTIVIDAD

Comandos de Acceso SSH

Guía de comandos para conectarse a la instancia pública y saltar de forma segura a la instancia privada.

# 1. Iniciar el servicio ssh-agent en Windows (PowerShell)
Start-Service ssh-agent

# 2. Cargar tu llave privada a la memoria de tu PC (sin copiarla al servidor)
ssh-add .\mi-llave.pem

# 3. Conectarte a la pública reenviando credenciales (-A)
ssh -A ec2-user@3.128.255.97

# 4. Desde la sesión de la pública, saltar directamente a la privada
ssh ec2-user@<IP_PRIVADA>
# Conexión en un solo paso usando la pública como host de salto (-J)
ssh -i .\mi-llave.pem -J ec2-user@3.128.255.97 ec2-user@<IP_PRIVADA>
# Conexión directa a la instancia pública / Bastion
ssh -i .\mi-llave.pem ec2-user@3.128.255.97
# Solución al error "UNPROTECTED PRIVATE KEY FILE" en Windows
icacls "mi-llave.pem" /inheritance:r /grant:r "$($env:USERNAME):(R)"
05 / NOTAS TÉCNICAS

Buenas Prácticas & Conceptos Clave

Fundamentos aplicados para evitar errores de arquitectura, seguridad y costos.

Manejo de ICMP y Ping

ICMP opera en Capa 3 (Red), no en TCP. Para habilitar ping en AWS Security Groups se debe autorizar el protocolo icmp con puerto -1.

Nomenclatura en Security Groups

AWS rechaza el prefijo sg- en el parámetro --group-name ya que está reservado para los identificadores automáticos generados por el sistema.

Reglas por Referencia de Grupo

En sec-privada se usó --source-group sec-publica, permitiendo comunicación dinámica entre instancias sin acoplamiento a IPs fijas.

Eliminación y Costos

Al concluir las pruebas de laboratorio, terminar las instancias con aws ec2 terminate-instances para evitar consumos de cómputo e IPs públicas.

Texto copiado al portapapeles