En EC2, el cortafuegos no está dentro de la máquina sino delante de ella, y se llama grupo de seguridad. Es una lista de reglas del tipo "dejar entrar por el puerto 443 a cualquiera" o "dejar entrar por el 22 solo a esta IP". Todo lo que no esté en la lista, no entra. Por eso una máquina recién creada puede estar perfectamente encendida y, sin embargo, la web no cargar: nadie ha abierto la puerta.
Entender cuatro ideas sobre los grupos de seguridad evita la mitad de los problemas de EC2 y la mayoría de los agujeros de seguridad. Esta guía las explica y deja un grupo bien configurado para un servidor web.
Antes de empezar: qué significa cada cosa
- Grupo de seguridad
- El cortafuegos de EC2: un conjunto de reglas que dice qué tráfico puede llegar a la máquina. Una máquina puede tener varios y un grupo puede servir para varias máquinas.
- Puerto
- La "puerta" numerada por la que entra cada tipo de tráfico: 80 para la web sin cifrar, 443 para la web segura, 22 para SSH, 3306 para MySQL, 3389 para escritorio remoto de Windows.
- Regla de entrada
- Qué se deja llegar a la máquina. Lo que no tenga regla, se bloquea.
- Regla de salida
- Qué puede enviar la máquina hacia fuera. Por defecto, todo; casi nunca hace falta tocarlo.
- Origen
- Desde dónde se permite: una IP concreta, un rango, cualquiera (0.0.0.0/0) u otro grupo de seguridad.
- CIDR
- La forma de escribir rangos de IP. 203.0.113.5/32 es una sola dirección; 0.0.0.0/0 es todo internet.
- Con estado (stateful)
- Si dejas entrar una petición, la respuesta puede salir sin regla aparte. Por eso solo hay que pensar en la entrada.
Paso a paso
Mira qué grupo tiene tu máquina
Consola de EC2, Instancias, selecciona la máquina, pestaña Seguridad. Verás el grupo o grupos asignados y, debajo, las reglas de entrada tal como se aplican. Si la web no responde, aquí está la respuesta en el 90 % de los casos: falta el 443, o el origen es solo tu IP.
Entiende el grupo por defecto
Cada red (VPC) tiene un grupo llamado default que permite todo el tráfico entre máquinas que lo compartan y nada desde internet. Es útil para que tus máquinas hablen entre sí, pero no para una web pública. No lo edites para abrir puertos al mundo: crea grupos propios con nombres que digan para qué sirven.
Crea un grupo para servidores web
Menú Grupos de seguridad, Crear grupo de seguridad. Nombre
web-publica, descripción clara, la VPC por defecto. Reglas de entrada:Tipo Puerto Origen Para qué HTTPS 443 0.0.0.0/0 y ::/0 La web segura, para todo el mundo HTTP 80 0.0.0.0/0 y ::/0 Para redirigir a HTTPS y renovar certificados SSH 22 Mi IP Administración, solo desde tu conexión El desplegable de origen tiene la opción Mi IP, que rellena tu dirección actual. Añade una descripción a cada regla ("oficina", "casa de Ana"): dentro de un año agradecerás saber de quién era cada IP. Crea.
Asigna el grupo a la máquina
Vuelve a la instancia, Acciones, Seguridad, Cambiar grupos de seguridad. Añade
web-publicay quita el que tuviera si ya no hace falta. El cambio es inmediato, sin reiniciar. Prueba la web y el SSH.Para una base de datos: abre solo a tus máquinas
Si tienes una máquina o una RDS con base de datos, no abras el 3306 a internet ni a "Mi IP". Crea un grupo
bd-internacon una regla de entrada en el puerto 3306 cuyo origen sea el grupo de seguridadweb-publica(en el desplegable de origen puedes elegir un grupo en vez de una IP). Así solo las máquinas que lleven ese grupo pueden conectar, tengan la IP que tengan. Es la forma correcta y la que casi nadie conoce.Revisa los que ya tienes
En la lista de grupos de seguridad, ordena o filtra por los que tienen reglas con origen 0.0.0.0/0 en puertos que no sean 80 y 443. Un 22, un 3306 o un 3389 abiertos a todo internet es lo que buscan los atacantes a diario. Ciérralos a tu IP o al grupo que corresponda. Y borra los grupos que no estén asignados a nada: solo confunden.
Qué puede salir mal
He cerrado el 22 a "Mi IP" y ya no entro
Tu IP ha cambiado (conexiones domésticas). Edita la regla desde la consola, que no depende de la máquina, con "Mi IP" de nuevo. O usa EC2 Instance Connect desde la consola, que entra por el navegador si la imagen lo soporta.
La web funciona por IP pero no por dominio
No es el grupo de seguridad: es el DNS o la configuración del servidor web. El grupo de seguridad no sabe de nombres, solo de puertos e IP.
La máquina no sale a internet para actualizarse
Revisa las reglas de salida: alguien las ha restringido. Por defecto permiten todo. Si la máquina no tiene IP pública, además necesita una pasarela NAT, que es otra historia.
Tengo decenas de grupos "launch-wizard-7"
Los crea el asistente de lanzamiento cada vez que alguien no elige uno existente. Reasigna las máquinas a tus grupos con nombre y borra los asistentes. Los que estén en uso no se podrán borrar: eso te dice cuáles quedan.
En Simplio
En Simplio el cortafuegos de cada máquina, sea Lightsail o EC2, es la misma lista sencilla: puerto, para quién (todo el mundo, solo mi IP, una IP concreta) y una descripción. Simplio marca en rojo los puertos de administración abiertos a todo internet y te lo avisa, y cada cambio pide el doble factor y queda en el registro de actividad con quién lo hizo. Sin saber qué es un CIDR.
Lo mismo, en AWS y en Simplio
| En la consola de AWS | En Simplio | |
|---|---|---|
| Abrir un puerto solo a tu IP | Consola EC2, Grupos de seguridad, editar, averiguar tu IP, descripción: 5 pasos | Regla "solo mi IP" en el cortafuegos de la máquina: 1 clic, Simplio conoce tu IP |
| Saber qué máquinas tienen algo abierto al mundo | Revisar grupo por grupo | Aviso en la lista: "puerto 22 abierto a todo internet" |
| Lightsail y EC2 | Dos consolas con dos modelos distintos | El mismo cortafuegos sencillo para las dos |