¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Superficie de ataque de una red

Después de esta lección: Puedo enumerar lo que expone una red a partir de sus puertos abiertos.

Lección de 55 min4 comandosLaboratorio de pasarela NAT: masquerade y reenvío de puertos con nftables en tu navegador

¿Qué es la superficie de ataque?

La superficie de ataque de una red es todo lo que ofrece a quien intenta entrar: puertos abiertos, servicios y equipos que responden. Conocerla es el primer paso para defenderla, porque nadie protege lo que no sabe que tiene.

Una academia de idiomas de Valencia monta un servidor para las matrículas. Dos años después sigue encendido, y nadie recuerda que acepta conexiones por tres puertos. A un intruso le basta con uno.

Al final de esta lección

Nota

Puedo enumerar lo que expone una red a partir de sus puertos abiertos.

Palabras clave

PalabraQué significaEjemplo
Superficie de ataquetodo lo que una red deja al alcance de un intruso
Puerto abiertoun puerto en el que un servicio espera conexiones443
Servicioun programa que atiende peticiones de la red
Escaneo de puertosprobar puertos uno a uno para ver cuáles responden
Puerto filtradoun puerto cuya respuesta no llega porque algo la bloquea

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un puerto abierto es una puerta

Cada servicio de un equipo escucha en un puerto, un número del 1 al 65535. Si un servicio escucha, el puerto está abierto. Quien conoce la dirección y el puerto puede intentar hablar con él.

Cada puerto abierto es una puerta más que vigilar. La regla de partida es sencilla: abre solo lo que se necesita.

La orden ss -ltn lista los puertos que escucha una máquina. Busca la columna de la dirección local, que acaba en dos puntos y el puerto.

Ejemplo resuelto: puertos habituales y su riesgo

PuertoServicioPara qué sirveRiesgo si se deja abierto
22SSHAcceso remoto cifradoSe pueden probar contraseñas sin parar
23TelnetAcceso remoto sin cifrarLa contraseña viaja a la vista de todos
80HTTPWeb sin cifrarEl contenido se lee por el camino
443HTTPSWeb cifradaBajo, si el programa está al día
3306MySQLBase de datosLos datos quedan expuestos
3389Escritorio remotoManejar un equipo a distanciaObjetivo muy habitual de ataques

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Filtra de una lista los servicios de riesgo

Comando
printf "22 ssh\n80 http\n3306 mysql\n" | grep -E "^(22|3306) "

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Lista lo que escucha la máquina lan

Comando
sudo ip netns exec lan ss -ltn

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un escaneo de puertos pregunta puerto a puerto

Un escaneo de puertos manda un intento de conexión a cada puerto y apunta cómo responde. Tiene un uso honrado: tu equipo de sistemas lo hace a su propia red para saber qué expone.

Un intruso lo hace desde fuera, para ver lo mismo que verías tú. Por eso escaneas primero tú.

Las respuestas posibles son tres.

Ejemplo resuelto: qué significa cada respuesta

EstadoQué ha pasadoQué te dice
AbiertoEl servicio contesta y acepta la conexiónHay un servicio que atacar
CerradoEl equipo contesta que allí no hay nadieEl equipo existe, pero no ofrece nada en ese puerto
FiltradoNo llega ninguna respuestaAlgo en el camino bloquea o descarta el intento

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Escanea solo tu laboratorio

Importante

Probar los puertos de una red que no es tuya puede ser delito y salta las alarmas de quien la vigila. Aquí pruebas solo la máquina de tu laboratorio privado.

Prueba un puerto que está abierto

Comando
sudo ip netns exec lan nc -zv -w 2 127.0.0.1 80

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Prueba un puerto en el que nadie escucha

Comando
sudo ip netns exec lan nc -zv -w 2 127.0.0.1 9

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cómo se leen las dos respuestas

La orden nc -zv prueba la conexión y no envía datos. Con el puerto 80, la máquina lan imprime una línea que acaba en succeeded!: el puerto está abierto.

Con el puerto 9 imprime failed: Connection refused. El equipo respondió que allí no hay nadie, así que el puerto está cerrado. Un puerto filtrado no imprimiría eso, sino que esperaría los dos segundos y se rendiría sin respuesta.

Un error frecuente

Advertencia

Mucha gente cree que cambiar el puerto de un servicio lo esconde. Un escaneo recorre los 65535 puertos en pocos minutos y el servicio aparece igual. Cambiar el número no protege. Lo que protege es cerrar lo que no se necesita y vigilar lo que se deja.

Se reduce la superficie cerrando lo que sobra

Con el resultado de un escaneo, haz una lista. Para cada puerto abierto pregúntate: ¿quién lo usa y para qué?

Si nadie, ciérralo: para el servicio o quítalo. Si lo usan solo algunos equipos, limítalo con una regla de cortafuegos. Si lo usa todo el mundo, cífralo y mantenlo al día.

Ejemplo resuelto: decidir qué hacer con cada puerto

Puerto abierto¿Quién lo usa?Decisión
23 TelnetNadie desde hace añosCerrar y quitar el servicio
22 SSHSolo el equipo de sistemasLimitar a sus direcciones
443 HTTPSTodos los clientesDejar, cifrado y actualizado
3306 MySQLSolo el servidor webLimitar al servidor web

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Sobre este laboratorio y su código: Laboratorio de pasarela NAT: masquerade y reenvío de puertos con nftables en tu navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.