Capítulo 2 — Redes y servicios de internet
Mapa de la lección
Lección 02 publicada. Mapa, ejemplo, EX004.
flowchart TD
N0["Resultados de aprendizaje y conexión"]
N1["2.1 De las direcciones a las zonas"]
N2["2.2 Servicios, puertos y lo que implican"]
N3["2.3 Lo declarado frente a lo observado"]
N4["2.5 Actividad práctica: flujos frente a conductos"]
N5["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX004"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje y conexión"]
N1["2.1 De las direcciones a las zonas"]
N2["2.2 Servicios, puertos y lo que implican"]
N3["2.3 Lo declarado frente a lo observado"]
N4["2.5 Actividad práctica: flujos frente a conductos"]
N5["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX004"]
[Resultados de aprendizaje y conexión]
|
v
[2.1 De las direcciones a las zonas]
|
v
[2.2 Servicios, puertos y lo que implican]
|
v
[2.3 Lo declarado frente a lo observado]
|
v
[2.5 Actividad práctica: flujos frente a conductos]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX004]
Resultados de aprendizaje y conexión
Al terminar este capítulo, usted debería ser capaz de:
- describir una red en términos de zonas (grupos de sistemas con confianza y función similares) y conductos (los caminos permitidos entre ellas);
- leer un registro de flujo y asignarlo a zonas, protocolos y puertos;
- comparar lo que la red transporta realmente con lo que se declaró, y clasificar cada diferencia;
- explicar por qué un flujo declarado que no transporta tráfico también es un hallazgo.
El capítulo 1 examinó un equipo. Un servicio son muchos equipos que se comunican entre sí. En la infraestructura crítica, la red es donde se supone que se aplica la mayor parte de la separación entre los sistemas de negocio, los sistemas de control y el mundo exterior, y donde esa separación se erosiona con más frecuencia, una regla «temporal» cada vez.
2.1 De las direcciones a las zonas
Una dirección IP le dice a dónde va un paquete; no le dice para qué sirve el destino. Por eso los operadores agrupan los sistemas en zonas: en el diseño de LANTERN, la zona de estaciones (PLC y RTU en las estaciones de bombeo), la zona del retransmisor (equipos RLY), la zona corporativa (sistemas de negocio de FSTS y los usuarios de informes del historiador) y la externa (todo lo de fuera, incluidos los proveedores). La idea de zonas y conductos procede de la práctica de seguridad en automatización industrial: la serie ISA/IEC 62443 usa exactamente estos términos (ISA overview), y la guía de TO del NIST recomienda segmentar las redes de control respecto de las redes de negocio (NIST SP 800-82 Rev. 3).
Un conducto es un camino declarado y justificado entre dos zonas: zona de origen, zona de destino, protocolo, puerto y propósito. LANTERN declara cuatro: las estaciones envían Modbus/TCP (tcp/502) al retransmisor; el retransmisor envía HTTPS (tcp/443) al historiador en la zona corporativa; los administradores de la zona corporativa acceden al retransmisor por SSH (tcp/22); y el retransmisor sirve la hora (udp/123, NTP) a las estaciones.
2.2 Servicios, puertos y lo que implican
Un número de puerto es una convención, no una garantía: tcp/443 suele transportar TLS, pero cualquier cosa puede escuchar ahí. Aun así, la convención le dice qué esperar y qué cuestionar. Los protocolos industriales como Modbus/TCP se diseñaron para redes cerradas y no tienen autenticación incorporada; un dispositivo que acepta escrituras Modbus las aceptará de cualquiera que pueda alcanzarlo. Por eso el camino importa tanto: si un portátil corporativo puede alcanzar un PLC en tcp/502, lo único que se interpone entre un error (o un atacante) y una bomba es que nadie lo haya intentado.
Los servicios de internet (DNS, NTP, HTTPS, SSH) son la fontanería de todo servicio moderno. Cada uno tiene un modo de fallo que importa en la operación: un fallo de DNS impide resolver los nombres aunque los equipos estén bien; un fallo de NTP deja que los relojes se desvíen; un fallo de TLS (un certificado caducado) convierte un servicio que funciona en uno inalcanzable; un SSH expuesto a internet atrae intentos constantes de adivinar contraseñas.
2.3 Lo declarado frente a lo observado
Una base de reglas de cortafuegos o un diagrama de diseño dice lo que debería ocurrir. Los registros de flujo (resúmenes de conversaciones recogidos por cortafuegos, conmutadores o sensores) dicen lo que ocurrió. Comparar ambos es una de las tareas rutinarias de mayor valor que puede hacer un tecnólogo, y no necesita herramientas de ataque: consiste en leer sus propios registros. Cada diferencia cae en una de cuatro clases:
- Observado y declarado: lo esperado; compruebe aun así que los volúmenes parecen normales.
- Observado pero no declarado: existe un camino que nadie justificó. O la declaración está incompleta (actualícela, con un responsable y un propósito) o la base de reglas es demasiado permisiva (corríjala).
- Declarado pero no observado: o el servicio no funciona (una estación está en silencio), o el conducto declarado está obsoleto y debe eliminarse.
- Observado hacia una zona desconocida: una dirección que usted no sabe ubicar; su inventario está incompleto.
2.4 Ejemplo resuelto: los flujos de una noche (sintético)
B. Lind le entrega una exportación de flujos del cortafuegos central correspondiente a una noche. La mayoría de los flujos coinciden con conductos. Tres no: una estación de trabajo corporativa, 10.40.3.7, habló Modbus directamente con el PLC de PS-04 (12 conversaciones); una dirección externa, 192.0.2.44, alcanzó el retransmisor por SSH (3 conversaciones); y el retransmisor abrió una conexión HTTPS hacia una dirección externa, 192.0.2.80. Un origen declarado, la RTU de PS-09 en 10.20.0.13, no envió nada. Nada de esto prueba un ataque. El flujo de la zona corporativa al PLC podría ser un ingeniero que usa una herramienta de configuración desde la red equivocada; el SSH externo podría ser ruido de fondo de internet que llega a un puerto expuesto; el HTTPS saliente del retransmisor podría ser una actualización de paquetes. Aun así, cada uno es un hallazgo, porque cada uno es un camino que el diseño no permite. La estación en silencio es ante todo un problema operativo: puede que Operaciones de Agua esté operando PS-09 a ciegas.
2.5 Actividad práctica: flujos frente a conductos
Ejecute el Lab 2. Asigna cada dirección a una zona con el módulo ipaddress, compara cada flujo con los conductos declarados e informa de los flujos declarados sin tráfico. Lab 2 (guárdelo como lab02.py y ejecútelo con python3 lab02.py):
# Lab 2 - observed flows versus the declared conduit list (offline, standard library only)
# Synthetic: Fallowmere Water pumping-station network. Addresses are documentation/private ranges.
import ipaddress
zones = {
"station": ipaddress.ip_network("10.20.0.0/24"),
"relay": ipaddress.ip_network("10.30.0.0/28"),
"corp": ipaddress.ip_network("10.40.0.0/16"),
"vendor": ipaddress.ip_network("192.0.2.0/24"), # TEST-NET-1, stands in for internet
}
declared = {("station", "relay", "tcp", 502), ("relay", "corp", "tcp", 443),
("corp", "relay", "tcp", 22), ("relay", "station", "udp", 123)}
flows = """10.20.0.11,10.30.0.5,tcp,502,1840
10.20.0.12,10.30.0.5,tcp,502,1790
10.30.0.5,10.40.8.20,tcp,443,3600
10.40.3.7,10.30.0.5,tcp,22,4
10.30.0.5,10.20.0.11,udp,123,96
10.40.3.7,10.20.0.11,tcp,502,12
192.0.2.44,10.30.0.5,tcp,22,3
10.30.0.5,192.0.2.80,tcp,443,1
10.20.0.13,10.30.0.5,tcp,502,0"""
def zone(a):
ip = ipaddress.ip_address(a)
return next((z for z, net in zones.items() if ip in net), "unknown")
seen = set()
for line in flows.splitlines():
s, d, p, port, count = line.split(",")
key = (zone(s), zone(d), p, int(port))
if int(count) == 0:
print(f"SILENT {s:>12} -> {d:<12} {p}/{port} (declared flow with no traffic)")
continue
seen.add(key)
tag = "OK " if key in declared else "UNDECL "
print(f"{tag} {s:>12} -> {d:<12} {p}/{port} {key[0]}->{key[1]} n={count}")
for k in sorted(declared - seen):
print("NOT SEEN", k)
Salida esperada (Python 3.13.5):
OK 10.20.0.11 -> 10.30.0.5 tcp/502 station->relay n=1840
OK 10.20.0.12 -> 10.30.0.5 tcp/502 station->relay n=1790
OK 10.30.0.5 -> 10.40.8.20 tcp/443 relay->corp n=3600
OK 10.40.3.7 -> 10.30.0.5 tcp/22 corp->relay n=4
OK 10.30.0.5 -> 10.20.0.11 udp/123 relay->station n=96
UNDECL 10.40.3.7 -> 10.20.0.11 tcp/502 corp->station n=12
UNDECL 192.0.2.44 -> 10.30.0.5 tcp/22 vendor->relay n=3
UNDECL 10.30.0.5 -> 192.0.2.80 tcp/443 relay->vendor n=1
SILENT 10.20.0.13 -> 10.30.0.5 tcp/502 (declared flow with no traffic)
Escriba cada hallazgo en una línea: qué se observó, a qué clase pertenece, la explicación benigna más probable, la explicación más preocupante y la siguiente comprobación. No «pruebe» usted ningún camino; pregunte al responsable.
Aplicadas a la exportación de esa noche, las cuatro líneas quedan así. De la zona corporativa 10.40.3.7 a PS-04 por Modbus, 12 conversaciones: camino no declarado; benigna, la herramienta de configuración de un ingeniero en la red equivocada; preocupante, una estación de trabajo comprometida que alcanza un PLC; siguiente comprobación, preguntar a Ingeniería de Agua quién usa ese equipo. De la dirección externa 192.0.2.44 al retransmisor por SSH: exposición; siguiente comprobación, por qué el puerto 22 responde desde fuera. Del retransmisor a 192.0.2.80 por HTTPS: salida no declarada. PS-09 en silencio: flujo declarado sin tráfico, que se plantea primero a Operaciones de Agua.
2.6 Errores frecuentes y límites
- Leer una base de reglas y creer que describe el tráfico; las reglas son intenciones, los flujos son hechos.
- Tratar «no declarado» como «malicioso», o como «inofensivo porque es interno».
- Ignorar los flujos declarados en silencio; una estación que deja de hablar es una interrupción del servicio antes que una cuestión de seguridad.
- Suponer que un puerto identifica una aplicación.
- Recoger flujos solo en el borde de internet, donde los caminos de mayores consecuencias (de la zona corporativa a la de control) son invisibles.
Los registros de flujo muestran quién habló con quién, en qué puerto y cuánto; no muestran el contenido ni la intención, y pueden estar muestreados. Son excelentes para comprobar la arquitectura y pobres para probar lo que se hizo.
Ejercicios — capítulo 2
EX004 — Clasifique y priorice. Objetivo: clasificar las diferencias de flujo y ordenar el seguimiento. Entradas: la salida del Lab 2. Restricciones: cuatro hallazgos; como máximo una frase de explicación cada uno. Pasos: (1) asigne cada hallazgo a una clase del capítulo 2 («Lo declarado frente a lo observado»); (2) ordénelos para el seguimiento según su posible consecuencia para el servicio de agua; (3) nombre el responsable al que contactaría primero en cada caso. Evidencia esperada: tabla. Rúbrica: 3 = el Modbus de la zona corporativa a la estación queda primero porque alcanza el proceso físico, el silencio de PS-09 se trata como prioridad operativa, el SSH externo y la salida del retransmisor se ordenan con sensatez, se nombran los responsables; 2 = clases correctas, orden poco justificado; 1 = ordena por número de conversaciones; 0 = nada.
EX005 — Actualice la declaración. Objetivo: decidir entre cambiar el diseño y cambiar la red. Entradas: Operaciones de Agua confirma que el HTTPS saliente del retransmisor fue una actualización del sistema operativo desde un espejo del proveedor; el tráfico de la zona corporativa al PLC fue el portátil de un ingeniero. Restricciones: cada conducto necesita origen, destino, protocolo/puerto, propósito y responsable. Pasos: (1) decida en cada caso si añadir un conducto o eliminar el camino; (2) para cualquier conducto añadido, escriba su entrada completa; (3) para el acceso del ingeniero, proponga el camino declarado que debería sustituirlo. Evidencia esperada: lista de conductos actualizada y justificación. Rúbrica: 3 = camino de actualización añadido de forma acotada (espejo concreto, a través de un proxy o un servidor de actualizaciones, responsable nombrado) o sustituido por una fuente de actualizaciones interna; el acceso de ingeniería se traslada a un camino de salto declarado y autenticado, no de la zona corporativa al PLC; 2 = entradas sensatas pero incompletas; 1 = simplemente permite todo lo observado; 0 = nada.
EX006 — Amplíe el laboratorio. Objetivo: hacer más útil la herramienta de comparación. Entradas: el Lab 2. Restricciones: solo la biblioteca estándar; no cambie los datos sintéticos salvo en lo indicado. Pasos: (1) añada un flujo de 10.50.1.9 al retransmisor por tcp/443; (2) modifique el script para que las direcciones que no pertenecen a ninguna zona se notifiquen como "UNKNOWN ZONE" en lugar de compararse; (3) muestre la nueva salida. Evidencia esperada: diferencias del código y salida. Rúbrica: 3 = la dirección desconocida se notifica de forma diferenciada y la ejecución lo muestra; 2 = funciona pero el mensaje es poco claro; 1 = no se ejecutó; 0 = nada.
Síntesis del capítulo
Piense en la red como zonas unidas por conductos declarados, cada uno con un propósito y un responsable. Las reglas expresan intenciones; los registros de flujo expresan hechos. Comparar ambos con regularidad (observado y declarado, observado pero no declarado, declarado pero en silencio, desconocido) es barato, seguro y de lo más valioso que hace un implementador. En la infraestructura crítica, el camino no declarado de mayores consecuencias es el que alcanza el proceso físico.
Siga estudiando — capítulo 02 de 30
← Capítulo 01 · Índice de capítulos del curso · Capítulo 03 →
Continúe con la siguiente lección escrita.