El caso
La base de datos de la tienda tenía dirección pública. Cualquiera en internet podía tocar a su puerta.
Isaac creó el servidor web y la base de datos de la tienda de la misma manera: cada VM con una dirección pública, para facilitar el acceso. Al día siguiente, el log de la base de datos ya mostraba cientos de intentos de inicio de sesión desde países a los que él nunca le había vendido.
Solo el servidor web necesitaba ser visto desde internet. La base de datos solo necesitaba hablar con el servidor web.
Este post parte de Regiones y zonas, de Máquinas virtuales y de Seguridad y responsabilidad compartida en la nube: la configuración de red es parte de la seguridad que te toca a ti.
El problema
Todo expuesto
Una VM con dirección pública recibe intentos de acceso todo el tiempo, de robots que recorren internet buscando puertos abiertos. Cuantas más cosas expuestas, mayor es la superficie de ataque.
La mayoría de los componentes de un sistema no necesita ser alcanzada desde afuera: la base de datos, las colas, los servicios internos. Solo necesitan hablar con otros componentes.
La solución
Una red privada, solo tuya
La nube te deja crear una red virtual, un pedazo de la red del proveedor aislado de los otros clientes, donde defines las direcciones, las reglas y las rutas. En AWS y Google Cloud se llama VPC; en Azure, Virtual Network (VNet); en Oracle, VCN.
Dentro de ella, divides el espacio en subredes. La subred es lo que decide quién puede ver a quién:
- Subred pública (public subnet): tiene una ruta hacia internet. Aquí quedan los componentes que el mundo necesita alcanzar, como el servidor web.
- Subred privada (private subnet): no tiene ruta de entrada desde internet. Aquí viven la base de datos y los servicios internos.
Red virtual (virtual private cloud, VPC)
Tu espacio aislado en la nube. Eliges el rango de direcciones privadas y lo que entra en él.
En la tienda: una única red para toda la tienda.
Subred (subnet)
Una división de la red virtual. Define, por medio de las rutas, quién habla con internet y quién no.
En la tienda: una subred pública para el sitio y una privada para la base de datos.
Puerta de enlace de internet (internet gateway)
La puerta que conecta la red virtual con internet, en ambos sentidos, para quienes tienen dirección pública.
En la tienda: es por ahí que el cliente llega al sitio.
NAT
Permite que quien está en la subred privada salga a internet, sin permitir que alguien entre.
En la tienda: la base de datos descarga actualizaciones, y nadie de afuera la alcanza.
El nombre en cada nube
Los conceptos valen para cualquier proveedor. Cambian los productos:
| AWS | Azure | Google Cloud | Oracle Cloud | |
|---|---|---|---|---|
| Red virtual (virtual network) | VPC | Virtual Network | VPC | VCN |
| Salida sin entrada (NAT) | NAT Gateway | NAT Gateway | Cloud NAT | NAT Gateway |
| VPN hasta la empresa (site-to-site VPN) | Site-to-Site VPN | VPN Gateway | Cloud VPN | Site-to-Site VPN |
| Enlace dedicado (dedicated connection) | Direct Connect | ExpressRoute | Cloud Interconnect | FastConnect |
Quién puede entrar
Firewalls
La subred dice por dónde puede pasar el tráfico. El firewall dice qué puede pasar. Son reglas de entrada y de salida: desde qué dirección, hacia qué puerto, con qué protocolo.
En general, todo lo que no fue permitido explícitamente está bloqueado. Abres solo lo necesario:
| Quién | Regla de entrada (inbound rule) |
|---|---|
| Servidor web | Cualquier dirección, puertos 80 y 443 (la web) |
| Base de datos | Solo el servidor web, en el puerto de la base de datos |
Cada proveedor tiene el suyo: grupos de seguridad en AWS, Network Security Groups en Azure, reglas de firewall de la VPC en Google Cloud y Network Security Groups en Oracle. Cambian los nombres y algunos detalles; la idea es la misma.
No confundas
Gateway de internet × NAT
Ambos conectan la red con internet, y los exámenes adoran intercambiarlos. La pregunta es quién inicia la conversación.
Puerta de enlace de internet (internet gateway)
“¿Quiero que internet alcance a mi servidor, y que mi servidor alcance a internet?”
- Ejemplo
- El servidor web de la tienda, atendiendo a los clientes.
- Foco
- Entrada y salida, para quienes tienen dirección pública.
NAT
“¿Quiero que el servidor privado acceda a internet, sin que nadie de afuera lo alcance?”
- Ejemplo
- La base de datos descargando una actualización de seguridad.
- Foco
- Solo salida: quien está adentro inicia, quien está afuera no.
En la práctica
Qué va dónde
| Lo que tienes | Dónde ponerlo |
|---|---|
| Sitio y API a los que acceden los clientes | Subred pública (public subnet) |
| Base de datos y servicios internos | Subred privada (private subnet) |
| Servidor privado que necesita descargar actualizaciones | Subred privada (private subnet), con NAT |
| Oficina que accede a la red de la nube de forma segura | VPN por internet, o enlace dedicado |
La VPN crea un túnel cifrado por internet. El enlace dedicado es un cable reservado entre la empresa y el proveedor, con más estabilidad y un costo mayor.
Términos clave
Seis términos para fijar
Toca la tarjeta para ver la definición.
Prueba rápida
Tres preguntas, estilo examen
01
Un servidor en una subred privada necesita descargar actualizaciones de internet, sin recibir conexiones desde afuera. ¿Qué debe usar?
02
¿En qué subred debe quedar la base de datos, a la que solo necesita acceder el servidor web?
03
Una empresa quiere conectar su oficina a la red virtual, con el tráfico cifrado, usando la internet común. ¿Qué debe usar?
La pregunta de examen sobre redes suele ser siempre la misma: ¿quién necesita ser alcanzado desde afuera, y quién no? Quien lo necesita va en una subred pública. El resto va en una subred privada, protegida por firewall, y sale por el NAT cuando lo necesita. Eso es lo que Isaac haría hoy, con la base de datos lejos de internet. El próximo paso de la ruta es Costos en la nube.