◇ OpenCyber Academy
Tecnólogo · Capítulo 2 · Español

Capítulo 2 — Redes y servicios de internet

Aprendizaje gratuito y abierto para quienes desean proteger a las personas y la tecnología. No se necesita una cuenta para estudiar ni consultar las respuestas.

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:

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:

  1. Observado y declarado: lo esperado; compruebe aun así que los volúmenes parecen normales.
  2. 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).
  3. Declarado pero no observado: o el servicio no funciona (una estación está en silencio), o el conducto declarado está obsoleto y debe eliminarse.
  4. 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

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.

Respuestas desarrolladas

EX004 — Clasifique y priorice. (1) Zona corporativa 10.40.3.7 → PS-04 tcp/502: observado pero no declarado; primero, porque alcanza el proceso físico con un protocolo sin autenticación; contacte con Operaciones de Agua y con el responsable de la estación de trabajo. (2) RTU de PS-09 en silencio: declarado pero no observado; prioridad operativa, porque Agua puede estar operando a ciegas; contacte con la sala de control de Agua ese mismo día. (3) Externa 192.0.2.44 → retransmisor tcp/22: observado pero no declarado; SSH expuesto más allá del servidor de salto; responsable de la plataforma de FSTS; compruebe si algún inicio de sesión tuvo éxito (capítulo 17). (4) Retransmisor → externa tcp/443: observado pero no declarado; probablemente tráfico de actualización, la menor consecuencia; responsable de la plataforma. Ordenar por número de conversaciones pondría erróneamente primero el tráfico entre retransmisor e historiador o los flujos de las estaciones; decide la consecuencia.

EX005 — Actualice la declaración. Actualizaciones del retransmisor: o bien añadir un conducto acotado (retransmisor → espejo de actualizaciones con nombre o, mejor, un servidor interno de actualizaciones de FSTS, tcp/443, propósito «actualizaciones del sistema operativo», responsable FSTS Platform, revisión anual), o bien eliminar el acceso directo a internet y apuntar el retransmisor al servidor interno de actualizaciones; se prefiere lo segundo, porque el retransmisor no debería alcanzar internet. Portátil del ingeniero: eliminar el camino de la zona corporativa a la estación; declarar un camino de ingeniería desde el servidor de salto de gestión (MFA, registro de sesiones) hasta la interfaz de ingeniería de la estación, responsable Ingeniería de Agua, propósito «configuración de PLC», habilitado solo para trabajos aprobados. La máxima puntuación se niega a «permitir lo observado» y pone responsables y propósitos en cada entrada nueva.

EX006 — Amplíe el laboratorio. Un cambio mínimo: en el bucle, después de calcular key, añada if "unknown" in key[:2]: print(f"UNKNOWN ZONE {s:>12} -> {d:<12} {p}/{port} n={count}"); continue. Con la línea añadida 10.50.1.9,10.30.0.5,tcp,443,5, la nueva salida incluye UNKNOWN ZONE 10.50.1.9 -> 10.30.0.5 tcp/443 n=5. La máxima puntuación explica que «zona desconocida» significa que el inventario o el mapa de zonas está incompleto, un hallazgo distinto de un camino no declarado entre zonas conocidas.