◇ OpenCyber Academy
Técnico · Capítulo 1 · Español

Capítulo 1 — Arquitectura informática y del servicio

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 1 — Arquitectura informática y del servicio

Mapa de la lección

Lección 01 publicada. Mapa, ejemplo, EX001.

flowchart TD
  N0["Resultados de aprendizaje y conexión"]
  N1["1.1 Las capas de un servicio de control supervisor"]
  N2["1.2 Tres rutas, tres problemas de protección"]
  N3["1.3 Sondeo y frescura"]
  N4["1.4 Plataformas compartidas"]
  N5["1.6 Actividad práctica: dibuje su propio diagrama de"]
  N6["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX001"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje y conexión"]
  N1["1.1 Las capas de un servicio de control supervisor"]
  N2["1.2 Tres rutas, tres problemas de protección"]
  N3["1.3 Sondeo y frescura"]
  N4["1.4 Plataformas compartidas"]
  N5["1.6 Actividad práctica: dibuje su propio diagrama de"]
  N6["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX001"]
[Resultados de aprendizaje y conexión]
    |
    v
[1.1 Las capas de un servicio de control supervisor]
    |
    v
[1.2 Tres rutas, tres problemas de protección]
    |
    v
[1.3 Sondeo y frescura]
    |
    v
[1.4 Plataformas compartidas]
    |
    v
[1.6 Actividad práctica: dibuje su propio diagrama de]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX001]

Resultados de aprendizaje y conexión

Al terminar este capítulo debería ser capaz de:

Este es el primer capítulo de un curso práctico. Todo lo posterior (decodificación de protocolos, bastionado, detección, diagnóstico de averías) supone que usted puede señalar una caja del diagrama y decir qué tráfico envía, qué almacena y qué se rompe si se detiene. Se dan por sabidos los conocimientos de entrada (redes, sistemas operativos, scripts); el elemento nuevo es el proceso físico que hay al otro extremo del cable.

1.1 Las capas de un servicio de control supervisor

La mayoría de los servicios de sectores críticos que mueven agua, electricidad, aire o personas comparten una forma en capas reconocible. La guía del NIST sobre tecnología operacional describe los mismos componentes en términos generales (SP 800-82 Rev. 3); los nombres siguientes son los que usa este libro.

1.2 Tres rutas, tres problemas de protección

Un técnico debe ser capaz de trazar tres rutas distintas en el diagrama. La ruta de control lleva las órdenes al proceso: HMI → servidor SCADA → enlace → controlador → actuador. La integridad y la disponibilidad de esta ruta son lo que mantiene a salvo a las personas; una escritura no autorizada o corrompida en ella es el peor caso de este libro. La ruta de supervisión trae de vuelta las mediciones: sensor → controlador → enlace → servidor SCADA → historiador y HMI. Si es errónea, los operadores actúan sobre información falsa, un fallo que puede ser tan peligroso como una orden incorrecta y más difícil de advertir.

La ruta de gestión cambia el propio sistema: un ingeniero que descarga lógica nueva, un administrador que aplica parches al historiador, un proveedor que se conecta para diagnosticar una avería. Se usa poco, pero concentra los mayores privilegios, y es por donde, según los informes, ha comenzado la mayoría de las intrusiones reales en entornos de control; la alerta de CISA sobre los ataques de diciembre de 2015 contra empresas de distribución ucranianas describe el acceso remoto y el uso de credenciales que precedieron al impacto operativo (CISA IR-ALERT-H-16-056-01).

Las tres rutas comparten a menudo cables, conmutadores y servidores. Dibujarlas por separado es la manera de descubrir que un portátil «de supervisión» conectado al conmutador del centro de control también puede alcanzar los puertos de programación de los controladores.

1.3 Sondeo y frescura

La mayoría de los protocolos de estación de este libro son de petición-respuesta: el servidor SCADA pregunta y el dispositivo contesta. El tiempo necesario para refrescar una vez cada estación es el ciclo de sondeo. Para cada estación es aproximadamente sondeos por ciclo × (tiempo de ida y vuelta del enlace + tiempo de respuesta del dispositivo). Si el servidor sondea las estaciones una tras otra por un único canal, el ciclo es la suma de las estaciones; si dispone de un canal independiente por estación, el ciclo lo fija la estación más lenta.

Para el trabajo de seguridad importan dos consecuencias. Primera: un enlace lento (un router celular congestionado, un trayecto de radio degradado) alarga el ciclo de todas las estaciones sondeadas después. Segunda: un dispositivo que no responde cuesta el tiempo de espera completo en cada sondeo, de modo que una estación caída puede alargar el ciclo más que una lenta. Los requisitos de frescura («cada estación refrescada al menos cada 5 s») dependen por tanto de los tiempos de espera y del número de reintentos, además de la velocidad del enlace, y un control de seguridad que añade latencia (una VPN, un proxy de inspección) debe contrastarse con este presupuesto antes de instalarse.

1.4 Plataformas compartidas

Los centros de control modernos ejecutan sus servidores SCADA, historiadores y directorio en servidores de virtualización, a menudo compartidos entre servicios. Un hipervisor, un directorio, una fuente de hora o una cabina de almacenamiento compartidos son un punto en el que un fallo de un sector se convierte en un fallo de varios. El Lab 15 del capítulo 15 traza estas dependencias con código; aquí, basta con aprender a marcar en el diagrama cada componente compartido con los servicios que dependen de él. En el KVROC, el servidor esx-02 ejecuta el servidor SCADA, el historiador y el servidor del BMS del hospital, de modo que una caída o un parche defectuoso pueden afectar a la vez a la supervisión del agua y a la sanitaria. Marque cada componente compartido con todos los servicios que dependen de él y pregunte quién es el responsable del servidor cuando esos servicios discrepan sobre una ventana de cambio.

1.5 Ejemplo resuelto: el centro de operaciones de Kestrel Vale (sintético)

Usted es responsable técnico en el Kestrel Vale Regional Operations Centre (KVROC), que opera los sistemas de supervisión de Kestrel Water (12 estaciones, KW-01 a KW-12), la supervisión de los sistemas de gestión del edificio del Kestrel General Hospital y el procesador de telecontrol de una subestación (SS-3) de Kestrel Grid. Las RTU de las estaciones están en 10.10.0.0/16 (KW-n es 10.10.n.2); el centro de control es 10.20.0.0/24 (servidor SCADA scada-01 10.20.0.10, estación de ingeniería eng-ws-15 10.20.0.15, historiador hist-02 10.20.0.21); los puestos corporativos están en 10.30.0.0/16; la red de gestión es 10.90.0.0/24 (servidor de salto jump-01 10.90.0.20). Todos los nombres y direcciones son ficticios.

Operaciones exige que cada estación se refresque en menos de 5 segundos. scada-01 sondea las doce estaciones por un único canal. El Lab 1 calcula el presupuesto.

Lab 1 (guárdelo como lab01.py y ejecútelo con python3 lab01.py):

# Lab 1 - poll-cycle budget for a SCADA server polling stations (offline, standard library only)
# Synthetic Kestrel Water figures. Each poll = request + response over the link plus device turnaround.
stations = {  # name: (link, round-trip ms on the link, device turnaround ms, polls per cycle)
 "KW-01": ("fibre", 4, 20, 3), "KW-02": ("fibre", 4, 20, 3), "KW-03": ("fibre", 5, 25, 3),
 "KW-04": ("cellular", 180, 40, 4), "KW-05": ("cellular", 210, 40, 4), "KW-06": ("cellular", 650, 40, 4),
 "KW-07": ("radio", 420, 60, 3), "KW-08": ("radio", 460, 60, 3), "KW-09": ("cellular", 190, 40, 4),
 "KW-10": ("fibre", 4, 20, 3), "KW-11": ("radio", 440, 60, 3), "KW-12": ("cellular", 200, 40, 4),
}
REQUIRED_S = 5.0          # operations require every station refreshed at least every 5 s
TIMEOUT_MS = 1500         # a poll that gets no reply costs the full timeout
def cycle(stations, sequential=True, dead=()):
    per = {}
    for n, (link, rtt, turn, polls) in stations.items():
        per[n] = polls * (TIMEOUT_MS if n in dead else rtt + turn)
    return (sum(per.values()) if sequential else max(per.values())) / 1000, per
c, per = cycle(stations)
print(f"sequential cycle {c:.2f} s (requirement {REQUIRED_S} s) -> {'OK' if c <= REQUIRED_S else 'FAILS'}")
worst = max(per, key=per.get); print(f"slowest station {worst}: {per[worst] / 1000:.2f} s per cycle")
c2, _ = cycle(stations, dead={"KW-06"})
print(f"sequential with KW-06 not answering: {c2:.2f} s")
c3, _ = cycle(stations, sequential=False, dead={"KW-06"})
print(f"one polling channel per station, KW-06 dead: {c3:.2f} s")

Salida esperada (Python 3.13.5):

sequential cycle 11.33 s (requirement 5.0 s) -> FAILS
slowest station KW-06: 2.76 s per cycle
sequential with KW-06 not answering: 14.57 s
one polling channel per station, KW-06 dead: 6.00 s

El resultado indica que el requisito ya se incumple (11,33 s), sobre todo por las estaciones celulares y de radio, y que KW-06 es la más lenta. Una KW-06 caída añade otros 3,24 s, porque cada sondeo sin respuesta cuesta 1,5 s. Incluso con un canal por estación, el ciclo es de 6,00 s mientras KW-06 está caída: los canales por estación eliminan el problema de la suma, pero no el del tiempo de espera. Un técnico al que se le pide «añadir un túnel cifrado a las estaciones celulares» sabe ahora qué preguntar primero: ¿cuántos milisegundos añade por sondeo y qué efecto tiene eso sobre un ciclo que ya falla?

1.6 Actividad práctica: dibuje su propio diagrama de tres rutas

A partir de la descripción del KVROC, dibuje las rutas de control, supervisión y gestión en tres colores. Marque cada componente que aparezca en más de una ruta y cada componente compartido de la plataforma. Conserve el dibujo: los capítulos 6, 10 y 15 lo irán refinando. Use tres colores o tres capas de página para que un conmutador o un servidor de salto compartido salte a la vista. Compruebe después si eng-ws-15 aparece tanto en la ruta de gestión como en la de control: si es así, comprometer esa estación de trabajo permite alcanzar todas las estaciones. Guarde el dibujo junto con el presupuesto del Lab 1, porque cualquier propuesta posterior de túnel o de cifrado tendrá que juzgarse frente a las rutas y frente al ciclo de sondeo.

1.7 Errores comunes y límites

Ejercicios — capítulo 1

EX001 — Clasificación de rutas. Objetivo: separar las tres rutas. Entradas: estos flujos: HMI → scada-01 «arrancar la bomba 2»; RTU de KW-04 → scada-01 lectura de nivel; eng-ws-15 → KW-04 descarga del proyecto; jump-01 → hist-02 SSH; hist-02 → servidor corporativo de informes exportación CSV. Pasos: clasifique cada uno como control, supervisión o gestión (o una combinación) e indique la peor consecuencia si un tercero no autorizado pudiera alterarlo. Evidencia esperada: una tabla de cinco filas. Rúbrica: 3 = clases correctas, con la descarga del proyecto reconocida como la acción de gestión más peligrosa y la exportación CSV reconocida como un flujo de supervisión entre zonas; 2 = una clasificación errónea; 1 = clases sin consecuencias; 0 = nada.

EX002 — Corrija el ciclo sobre el papel. Objetivo: usar el modelo del ciclo de sondeo. Entradas: el Lab 1. Pasos: proponga dos cambios que lleven el ciclo secuencial por debajo de 5 s con todas las estaciones en buen estado e indique cuál de ellos limita además el efecto de una estación caída. Modifique el laboratorio para probarlos. Evidencia esperada: los parámetros modificados y los nuevos tiempos de ciclo impresos. Rúbrica: 3 = cambios realistas (canales separados para los tipos de enlace lentos, menos sondeos por ciclo para las estaciones lentas, un tiempo de espera más corto con una política de reintentos justificada) y verificados ejecutando el laboratorio; 2 = correctos pero sin verificar; 1 = solo «comprar enlaces más rápidos»; 0 = nada.

EX003 — Impacto del túnel. Objetivo: contrastar un control de seguridad con un presupuesto operativo. Entradas: un túnel cifrado propuesto añade 35 ms a cada ida y vuelta en las cinco estaciones celulares. Pasos: calcule el efecto sobre el ciclo secuencial y sobre el diseño con un canal por estación. Evidencia esperada: aritmética y una recomendación. Rúbrica: 3 = aumentos correctos (5 estaciones × 4 sondeos × 35 ms = 0,70 s en secuencial; 0,14 s en el ciclo propio de la estación celular más lenta) y una recomendación que vincule el túnel al rediseño de canales; 2 = aritmética correcta, recomendación débil; 1 = solo cualitativo; 0 = nada.

EX004 — Lista de plataformas compartidas. Objetivo: encontrar dependencias entre servicios. Entradas: la descripción del KVROC y su diagrama. Pasos: enumere cuatro componentes que probablemente compartan los servicios de agua, hospital y red eléctrica y, para cada uno, la primera pregunta que haría a su responsable. Evidencia esperada: cuatro filas. Rúbrica: 3 = por ejemplo, servidores de virtualización, directorio, fuente de hora y colector de supervisión, cada uno con una pregunta específica (margen de capacidad, grupo de administración, redundancia de la fuente de hora, comportamiento cuando se llena); 2 = preguntas genéricas; 1 = solo componentes; 0 = nada.

Síntesis del capítulo

Un servicio de un sector crítico es un conjunto de capas unidas por tres rutas. Las órdenes, las mediciones y los cambios viajan por caminos distintos y fallan de maneras distintas; la ruta de gestión concentra los mayores privilegios. El sondeo de petición-respuesta convierte la frescura en una cuestión de aritmética, y la suelen decidir los tiempos de espera, no el ancho de banda. Cada capítulo posterior añade una técnica a una de estas rutas, así que tenga a mano el diagrama y el presupuesto.

Siga estudiando — capítulo 01 de 18

← Página del curso · Índice de capítulos del curso · Capítulo 02 →

Continúe con la siguiente lección escrita.

Respuestas desarrolladas

EX001 — Clasificación de rutas. HMI → scada-01 «arrancar la bomba 2»: control; el peor caso es un arranque o una parada no autorizados de una bomba (desbordamiento, transitorio de presión). KW-04 → scada-01 lectura: supervisión; el peor caso es que los operadores actúen sobre un nivel falso. eng-ws-15 → KW-04 descarga del proyecto: gestión (e indirectamente control); el peor caso es la sustitución de la lógica del controlador, la acción más peligrosa de la lista, porque cambia lo que hace el controlador aunque no se envíe ninguna orden más. jump-01 → hist-02 SSH: gestión; el peor caso son registros históricos alterados o borrados, o un punto de apoyo en Z2. hist-02 → CSV corporativo: datos de supervisión que salen de la zona de control; el peor caso es la divulgación de datos operativos o, si se implementa como extracción iniciada desde fuera, una credencial corporativa dentro de Z2 (capítulo 15).

EX002 — Corrija el ciclo sobre el papel. Ejemplo: (1) sondear las cuatro estaciones de fibra y las cinco celulares por canales separados de los de las tres estaciones de radio (tres canales: fibra 0,31 s, celular 6,52 s, radio 4,50 s; el celular sigue siendo demasiado lento); (2) reducir los sondeos por ciclo de las celulares de 4 a 2 combinando las lecturas de registros en una sola petición (canal celular 3,26 s) y dar a KW-06 su propio canal (2 sondeos × 690 ms = 1,38 s; resto de celulares 1,88 s). Con canales de ≤ 4,5 s, todas las estaciones en buen estado cumplen los 5 s. Para limitar el efecto de una estación caída: un tiempo de espera de 800 ms sin reintento inmediato mantiene una KW-06 caída en 1,6 s en su propio canal. La máxima puntuación verifica editando stations, TIMEOUT_MS y la función cycle e informa de los valores impresos; cualquier configuración que se ejecute y cumpla el requisito obtiene puntuación si el tiempo de espera se justifica frente a la latencia real del enlace.

EX003 — Impacto del túnel. Secuencial: 5 estaciones celulares × 4 sondeos × 35 ms = 700 ms, de modo que 11,33 → 12,03 s. Canales por estación: el ciclo propio de cada estación celular sube 4 × 35 = 140 ms; KW-06 pasa a 2,90 s, todavía por debajo de 5 s. Recomendación: el túnel solo es aceptable junto con el rediseño de canales (EX002), y su latencia debe medirse en un piloto, no suponerse.

EX004 — Lista de plataformas compartidas. Servidores de virtualización: «¿Qué margen de capacidad queda si falla un servidor y qué invitados se reinician y dónde?». Directorio: «¿Quién está en los grupos de administradores y pueden los operadores iniciar sesión en la HMI si el directorio no está accesible?». Fuente de hora: «¿Cuál es la referencia, hay una segunda y se supervisa el desfase?». Colector de supervisión: «¿Qué ocurre cuando se llena su disco o se detiene? ¿Almacenan en búfer las fuentes y recibe alguien una alerta?».