Guía para construir una VPC segura en AWS desde cero
Construye una VPC segura en AWS con rangos CIDR planificados, subredes públicas y privadas, tablas de enrutamiento, NAT, grupos de seguridad y registros de flujo.
Guía para construir una VPC segura en AWS desde cero
Una VPC de AWS proporciona un límite de red privado para tus recursos en la nube, pero la configuración predeterminada rara vez es suficiente para producción. Si colocas bases de datos en subredes públicas, reutilizas rangos CIDR superpuestos o abres reglas de grupos de seguridad demasiado permisivas, puedes crear problemas que son difíciles de deshacer más adelante.
Esta guía te muestra cómo construir una VPC segura en AWS desde cero con subredes públicas para puntos de entrada, subredes privadas para cargas de trabajo de aplicaciones y bases de datos, tablas de enrutamiento, NAT, grupos de seguridad y monitoreo básico.
Comprendiendo los conceptos fundamentales de VPC
Antes de sumergirnos en los pasos de configuración, es esencial comprender los conceptos fundamentales de AWS VPC:
- VPC (Nube Privada Virtual): Una red virtual dedicada a tu cuenta de AWS. Es una sección lógicamente aislada de la nube de AWS donde puedes lanzar recursos de AWS.
- Subred: Un rango de direcciones IP en tu VPC. Puedes lanzar recursos de AWS en subredes que crees. Las subredes se definen por su bloque CIDR, que es un subconjunto del bloque CIDR de la VPC.
- Tabla de enrutamiento: Un conjunto de reglas, llamadas rutas, que se utilizan para determinar hacia dónde se dirige el tráfico de red desde tu subred o puerta de enlace.
- Puerta de enlace de Internet (IGW): Un componente de VPC que permite el tráfico enrutable a Internet para recursos con direcciones IP públicas y una ruta hacia la puerta de enlace.
- Puerta de enlace NAT (Traducción de direcciones de red): Un servicio NAT altamente disponible y escalable que permite el acceso a Internet para instancias en una subred privada, evitando conexiones entrantes iniciadas desde Internet.
- Grupo de seguridad: Actúa como un firewall virtual para tus instancias, controlando el tráfico entrante y saliente. Opera a nivel de instancia.
- Lista de control de acceso a la red (NACL): Una capa de seguridad opcional para tu VPC que actúa como un firewall para controlar el tráfico de entrada y salida de una o más subredes. Opera a nivel de subred.
Creación de VPC paso a paso
Comencemos a construir tu VPC segura.
1. Planifica tu esquema de direcciones IP
El primer paso y el más crítico es planificar tu rango de direcciones IP para la VPC y sus subredes. Esto implica seleccionar un bloque de Enrutamiento entre dominios sin clases (CIDR) para tu VPC.
Bloque CIDR de la VPC: Elige un rango de direcciones IP privadas que no se superponga con tu red local ni con otras VPC de AWS a las que puedas conectarte mediante VPN o Direct Connect. AWS recomienda usar rangos de direcciones IP RFC 1918 (10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16). El bloque CIDR puede ser desde /16 (65,536 direcciones IP) hasta /28 (16 direcciones IP).
- Ejemplo:
10.0.0.0/16proporciona un gran espacio de direcciones para tu VPC.
- Ejemplo:
Bloques CIDR de subred: Divide el bloque CIDR de tu VPC en bloques CIDR más pequeños para tus subredes. Asegúrate de que el bloque CIDR de cada subred sea un subconjunto del bloque CIDR de la VPC y no se superponga con otras subredes.
- **Ejemplo (si la VPC es
10.0.0.0/16):- Subred pública 1:
10.0.1.0/24 - Subred pública 2:
10.0.2.0/24 - Subred privada 1:
10.0.10.0/24 - Subred privada 2:
10.0.11.0/24
- Subred pública 1:
- **Ejemplo (si la VPC es
2. Crea tu VPC
Navega al panel de VPC en la Consola de administración de AWS y crea una nueva VPC.
- Ve a Panel de VPC > Tus VPC > Crear VPC.
- Etiqueta de nombre: Dale a tu VPC un nombre descriptivo (por ejemplo,
MiVPCSegura). - Bloque CIDR IPv4: Ingresa el bloque CIDR que planificaste (por ejemplo,
10.0.0.0/16). - Bloque CIDR IPv6: Puedes optar por habilitar un bloque CIDR IPv6 si es necesario.
- Tenencia: Para la mayoría de los casos de uso, Predeterminada es adecuada. Dedicada ofrece aislamiento de hardware a un costo mayor.
- Haz clic en Crear VPC.
3. Crea subredes
Ahora, crea tus subredes públicas y privadas dentro de la VPC.
- Ve a Panel de VPC > Subredes > Crear subred.
- ID de VPC: Selecciona la VPC que acabas de crear.
- Nombre de subred: Proporciona un nombre (por ejemplo,
MiSubredPublica-AZ1). - Zona de disponibilidad: Elige una Zona de disponibilidad (AZ). Es una buena práctica implementar recursos en múltiples AZ para alta disponibilidad.
- Bloque CIDR IPv4: Ingresa el bloque CIDR para esta subred (por ejemplo,
10.0.1.0/24). - Haz clic en Crear subred.
Repite este proceso para crear todas tus subredes públicas y privadas planificadas, asegurándote de que estén en diferentes Zonas de disponibilidad para mayor resiliencia.
4. Crea una Puerta de enlace de Internet (IGW)
Se necesita una IGW para que tus subredes públicas accedan a Internet.
- Ve a Panel de VPC > Puertas de enlace de Internet > Crear puerta de enlace de Internet.
- Etiqueta de nombre:
MiPuertaEnlaceInternetVPC. - Haz clic en Crear puerta de enlace de Internet.
- Después de la creación, selecciona la IGW, haz clic en Acciones y elige Adjuntar a VPC. Selecciona tu VPC y haz clic en Adjuntar puerta de enlace de Internet.
5. Crea tablas de enrutamiento
Las tablas de enrutamiento dirigen el tráfico dentro de tu VPC. Normalmente necesitarás al menos dos: una para subredes públicas y otra para subredes privadas.
a. Tabla de enrutamiento pública:
- Ve a Panel de VPC > Tablas de enrutamiento > Crear tabla de enrutamiento.
- Etiqueta de nombre:
MiTablaEnrutamientoPublica. - VPC: Selecciona tu VPC.
- Haz clic en Crear tabla de enrutamiento.
- Selecciona la
MiTablaEnrutamientoPublicarecién creada. - En la pestaña Rutas, haz clic en Editar rutas.
- Haz clic en Agregar ruta.
- Destino:
0.0.0.0/0(todo el tráfico IPv4). - Destino: Selecciona Puerta de enlace de Internet y elige tu IGW.
- Haz clic en Guardar rutas.
- Asociar subredes: Ve a la pestaña Asociaciones de subred, haz clic en Editar asociaciones de subred y asocia tus subredes públicas con esta tabla de enrutamiento.
b. Tabla de enrutamiento privada (con Puerta de enlace NAT):
Para permitir que las instancias en subredes privadas inicien conexiones salientes a Internet (por ejemplo, para actualizaciones de software) sin ser accesibles directamente desde Internet, usarás una Puerta de enlace NAT.
Crea una Puerta de enlace NAT:
- Ve a Panel de VPC > Puertas de enlace NAT > Crear puerta de enlace NAT.
- Nombre:
MiPuertaEnlaceNAT. - Subred: Selecciona una de tus subredes públicas.
- Tipo de conectividad:
Pública. - ID de asignación de IP elástica: Haz clic en Asignar IP elástica para crear y asignar una nueva dirección IP elástica.
- Haz clic en Crear puerta de enlace NAT.
- Nota: Las Puertas de enlace NAT incurren en costos. Para conectividad saliente básica, asegúrate de tener suficientes direcciones IP disponibles en tu subred pública para la Puerta de enlace NAT..
Crea la Tabla de enrutamiento privada:
- Ve a Panel de VPC > Tablas de enrutamiento > Crear tabla de enrutamiento.
- Etiqueta de nombre:
MiTablaEnrutamientoPrivada. - VPC: Selecciona tu VPC.
- Haz clic en Crear tabla de enrutamiento.
- Selecciona la
MiTablaEnrutamientoPrivada. - En la pestaña Rutas, haz clic en Editar rutas.
- Haz clic en Agregar ruta.
- Destino:
0.0.0.0/0. - Destino: Selecciona Puerta de enlace NAT y elige tu Puerta de enlace NAT.
- Haz clic en Guardar rutas.
- Asociar subredes: Ve a la pestaña Asociaciones de subred, haz clic en Editar asociaciones de subred y asocia tus subredes privadas con esta tabla de enrutamiento.
6. Configura grupos de seguridad
Los grupos de seguridad actúan como firewalls con estado a nivel de instancia. Permiten o deniegan el tráfico según las reglas que definas.
- Mejor práctica: Crea grupos de seguridad específicos para diferentes tipos de recursos (por ejemplo, servidores web, servidores de bases de datos, servidores de aplicaciones). Evita usar reglas demasiado permisivas.
Ejemplo: Grupo de seguridad para servidor web (WebServerSG)
- Ve a Panel de VPC > Grupos de seguridad > Crear grupo de seguridad.
- Nombre del grupo de seguridad:
WebServerSG. - Descripción:
Permitir acceso HTTP y HTTPS. - VPC: Selecciona tu VPC.
- Reglas de entrada:
- Tipo:
HTTP, Protocolo:TCP, Rango de puertos:80, Origen:0.0.0.0/0(o un rango de IP de confianza más específico). - Tipo:
HTTPS, Protocolo:TCP, Rango de puertos:443, Origen:0.0.0.0/0(o un rango de IP de confianza más específico). - (Opcional) Tipo:
SSH, Protocolo:TCP, Rango de puertos:22, Origen:Tu dirección/rango de IP de confianza(crucial para la administración).
- Tipo:
- Reglas de salida: De forma predeterminada, permite todo el tráfico saliente (
0.0.0.0/0). Puedes restringir esto si es necesario. - Haz clic en Crear grupo de seguridad.
Ejemplo: Grupo de seguridad para servidor de base de datos (DatabaseSG)
- Crea un nuevo grupo de seguridad llamado
DatabaseSG. - Reglas de entrada:
- Agrega una regla que permita el tráfico en el puerto predeterminado de tu base de datos (por ejemplo,
3306para MySQL,5432para PostgreSQL) solo desde el grupo de seguridad de tus servidores de aplicaciones (por ejemplo,WebServerSGoAppServerSG). - Origen: Selecciona Personalizado y luego escribe el ID del grupo de seguridad de tu servidor de aplicaciones.
- Agrega una regla que permita el tráfico en el puerto predeterminado de tu base de datos (por ejemplo,
- Reglas de salida: Normalmente permite todo el tráfico saliente.
7. Configura listas de control de acceso a la red (NACL)
Las NACL son firewalls sin estado que operan a nivel de subred. Actúan como una capa adicional de defensa.
Con estado vs. Sin estado: Los grupos de seguridad tienen estado (si permites el tráfico entrante, la respuesta saliente se permite automáticamente). Las NACL no tienen estado (debes definir explícitamente reglas tanto para el tráfico entrante como para el saliente).
Mejor práctica: Las NACL a menudo se dejan con configuraciones predeterminadas a menos que se requiera un control de acceso específico a nivel de subred. Pueden ser complejas de administrar.
Si necesitas usar NACL:
- Ve a Panel de VPC > NACL de red > Crear NACL de red.
- Etiqueta de nombre:
MiNacl. - VPC: Selecciona tu VPC.
- Haz clic en Crear NACL de red.
- Selecciona la NACL y, en Reglas de entrada, agrega reglas.
- Números de regla: Las NACL evalúan las reglas en orden, comenzando con el número de regla más bajo. Usa números como
100,200,300, etc., para permitir la inserción futura de reglas. - Permitir/Denegar: Especifica si permitir o denegar el tráfico.
- Protocolo, Rango de puertos, Origen/Destino: Define los parámetros del tráfico.
- Recuerda configurar las Reglas de salida correspondientes.
- Asocia la NACL con tus subredes yendo a la pestaña Asociaciones de subred.
Escenario de implementación de ejemplo
Considera una aplicación web típica:
VPC:
10.0.0.0/16Subred pública 1 (
us-east-1a):10.0.1.0/24(Asociada conMiTablaEnrutamientoPublicae IGW)Subred pública 2 (
us-east-1b):10.0.2.0/24(Asociada conMiTablaEnrutamientoPublicae IGW)Subred privada 1 (
us-east-1a):10.0.10.0/24(Asociada conMiTablaEnrutamientoPrivaday Puerta de enlace NAT)Subred privada 2 (
us-east-1b):10.0.11.0/24(Asociada conMiTablaEnrutamientoPrivaday Puerta de enlace NAT)Puerta de enlace de Internet: Adjunta a la VPC.
Puerta de enlace NAT: Implementada en
Subred pública 1con una IP elástica.Tabla de enrutamiento pública: Dirige
0.0.0.0/0a la IGW. Asociada con subredes públicas.Tabla de enrutamiento privada: Dirige
0.0.0.0/0a la Puerta de enlace NAT. Asociada con subredes privadas.Grupo de seguridad para balanceadores de carga (en subredes públicas): Permite HTTP/HTTPS desde
0.0.0.0/0.Grupo de seguridad para servidores web (en subredes privadas): Permite HTTP/HTTPS desde el SG del balanceador de carga, y SSH desde tu IP de confianza.
Grupo de seguridad para bases de datos (en subredes privadas): Permite MySQL/PostgreSQL desde el SG del servidor web.
Consideraciones críticas de seguridad
- Principio de mínimo privilegio: Otorga solo los permisos necesarios para tus grupos de seguridad y NACL. Restringe las direcciones IP de origen tanto como sea posible.
- Usa múltiples Zonas de disponibilidad: Distribuye tus subredes y recursos en múltiples AZ para alta disponibilidad y recuperación ante desastres. Esto se logra creando subredes en diferentes AZ y asociándolas con tablas de enrutamiento adecuadas.
- Revisa regularmente los grupos de seguridad y las NACL: A medida que tu aplicación evoluciona, también deberían hacerlo tus reglas de seguridad. Audita y actualízalas periódicamente.
- Evita subredes públicas para recursos sensibles: Las bases de datos, servidores de aplicaciones y otros recursos sensibles deben residir en subredes privadas. Solo los recursos que requieren acceso directo a Internet (como balanceadores de carga o hosts bastión) deben estar en subredes públicas.
- Considera hosts bastión: Si necesitas conectarte por SSH a instancias en subredes privadas, considera usar un host bastión reforzado en una subred pública. Restringe el acceso SSH al host bastión a direcciones IP conocidas.
- Registros de flujo de VPC: Habilita los Registros de flujo de VPC para capturar información sobre el tráfico IP que entra y sale de las interfaces de red en tu VPC. Esto es invaluable para el monitoreo de seguridad y la resolución de problemas.
- Segmentación de red: Usa diferentes VPC y subredes para segmentar entornos (por ejemplo, desarrollo, pruebas, producción) y diferentes niveles de tu aplicación.
Conclusión final
Construye la VPC en torno al flujo de tráfico: las subredes públicas deben exponer solo balanceadores de carga, puertas de enlace NAT o acceso bastión estrictamente controlado, mientras que los recursos de aplicaciones y bases de datos permanecen privados. Después del lanzamiento, sigue revisando los grupos de seguridad, las tablas de enrutamiento y los Registros de flujo de VPC para que la red se mantenga alineada con la forma en que tu aplicación realmente funciona.