¿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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Superficie de ataque | todo lo que una red deja al alcance de un intruso | |
| Puerto abierto | un puerto en el que un servicio espera conexiones | 443 |
| Servicio | un programa que atiende peticiones de la red | |
| Escaneo de puertos | probar puertos uno a uno para ver cuáles responden | |
| Puerto filtrado | un 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
| Puerto | Servicio | Para qué sirve | Riesgo si se deja abierto |
|---|---|---|---|
| 22 | SSH | Acceso remoto cifrado | Se pueden probar contraseñas sin parar |
| 23 | Telnet | Acceso remoto sin cifrar | La contraseña viaja a la vista de todos |
| 80 | HTTP | Web sin cifrar | El contenido se lee por el camino |
| 443 | HTTPS | Web cifrada | Bajo, si el programa está al día |
| 3306 | MySQL | Base de datos | Los datos quedan expuestos |
| 3389 | Escritorio remoto | Manejar un equipo a distancia | Objetivo 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
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
sudo ip netns exec lan ss -ltnSe 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
| Estado | Qué ha pasado | Qué te dice |
|---|---|---|
| Abierto | El servicio contesta y acepta la conexión | Hay un servicio que atacar |
| Cerrado | El equipo contesta que allí no hay nadie | El equipo existe, pero no ofrece nada en ese puerto |
| Filtrado | No llega ninguna respuesta | Algo 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
sudo ip netns exec lan nc -zv -w 2 127.0.0.1 80Se 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
sudo ip netns exec lan nc -zv -w 2 127.0.0.1 9Se 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 Telnet | Nadie desde hace años | Cerrar y quitar el servicio |
| 22 SSH | Solo el equipo de sistemas | Limitar a sus direcciones |
| 443 HTTPS | Todos los clientes | Dejar, cifrado y actualizado |
| 3306 MySQL | Solo el servidor web | Limitar al servidor web |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.