Cómo limité el acceso SSH a una sola IP en AWS — mi primera implementación de Least Privilege

Published: (May 1, 2026 at 01:10 AM EDT)
3 min read
Source: Dev.to

Source: Dev.to

El problema que nadie menciona en los tutoriales

La mayoría de guías de AWS indican: “abre el puerto 22 para conectarte por SSH” y configuran el acceso desde 0.0.0.0/0.
Eso permite que cualquier persona en Internet intente conectarse a tu servidor, lo que constituye un grave riesgo de seguridad.

Este laboratorio muestra cómo crear un Security Group bajo el principio de Least Privilege, limitando el acceso SSH exclusivamente a tu IP pública.

Servicios utilizados

  • VPC por defecto de AWS
  • EC2 Security Groups
  • AWS CLI

Conceptos clave

  • Security Group: firewall virtual que controla el tráfico entrante y saliente de los recursos de AWS.
  • CIDR /32: notación que representa una única dirección IP. Por ejemplo, 203.0.113.10/32 permite el acceso solo a esa IP.
  • Least Privilege: conceder únicamente los permisos mínimos necesarios.

Paso 1 – Obtener tu IP pública

curl https://checkip.amazonaws.com

Guarda el número que devuelve; lo usarás en el paso 4.

Paso 2 – Identificar la VPC por defecto

aws ec2 describe-vpcs \
  --filters "Name=isDefault,Values=true" \
  --query 'Vpcs[0].VpcId' \
  --output text

Resultado esperado (ejemplo):

vpc-0a1b2c3d4e5f6g7h8

Paso 3 – Crear el Security Group

SECURITY_GROUP_ID=$(aws ec2 create-security-group \
  --group-name "proyecto-seguridad" \
  --description "Security group - acceso restringido a IP específica" \
  --vpc-id $(aws ec2 describe-vpcs \
    --filters "Name=isDefault,Values=true" \
    --query 'Vpcs[0].VpcId' \
    --output text) \
  --query 'GroupId' \
  --output text)

echo $SECURITY_GROUP_ID

Resultado esperado (ejemplo):

sg-0123456789abcdef0

Paso 4 – Autorizar ingreso SSH solo desde tu IP

⚠️ Reemplaza 203.0.113.10 con la IP obtenida en el Paso 1.

aws ec2 authorize-security-group-ingress \
  --group-id $SECURITY_GROUP_ID \
  --protocol tcp \
  --port 22 \
  --cidr 203.0.113.10/32

El /32 asegura que solo esa dirección IP tenga acceso; sin él se abriría un rango completo.

Paso 5 – Verificar la regla

aws ec2 describe-security-groups \
  --group-ids $SECURITY_GROUP_ID \
  --query 'SecurityGroups[0].IpPermissions' \
  --output table

Deberías ver una tabla que muestra el puerto 22, protocolo TCP y tu IP con /32.

Paso 6 – Eliminar el Security Group (cuando ya no lo necesites)

aws ec2 delete-security-group --group-id $SECURITY_GROUP_ID

Eliminar recursos evita cargos inesperados.

Conclusión

El aprendizaje principal no fue el comando en sí, sino comprender por qué el /32 es crucial.
La diferencia entre 0.0.0.0/0 y tu-ip/32 es la diferencia entre dejar la puerta abierta a Internet y entregarle una llave solo a quien la necesita.

Esto es Least Privilege en la práctica: una decisión concreta que mejora significativamente la seguridad.

Este es el primer laboratorio de mi “Road to DevOps”. Cada semana documentaré lo que aprendo, sin filtros y con los errores incluidos.

0 views
Back to Blog

Related posts

Read more »