OpenCyber Academy
Tecnólogo · Capítulo 12 · Español
Código del curso: OCA-091Capítulo 12: OCA-091-C012

Capítulo 12 — Seguridad de TO, IoT y sistemas ciberfísicos: flujos de datos

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.

Mapa de la lección

Lección 12 publicada. Mapa, ejemplo, EX034.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["12.1 La matriz de flujos"]
  N2["12.2 Flujos no aprobados"]
  N3["12.3 Aprobados pero sin uso"]
  N4["12.4 De la comparación al cambio"]
  N5["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX034"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["12.1 La matriz de flujos"]
  N2["12.2 Flujos no aprobados"]
  N3["12.3 Aprobados pero sin uso"]
  N4["12.4 De la comparación al cambio"]
  N5["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX034"]
[Resultados de aprendizaje]
    |
    v
[12.1 La matriz de flujos]
    |
    v
[12.2 Flujos no aprobados]
    |
    v
[12.3 Aprobados pero sin uso]
    |
    v
[12.4 De la comparación al cambio]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX034]

Resultados de aprendizaje

Usted será capaz de (1) redactar una matriz de flujos aprobados; (2) comparar con ella los flujos observados; (3) interpretar los flujos no aprobados y los aprobados que no se usan; y (4) convertir la comparación en cambios del cortafuegos.

12.1 La matriz de flujos

Una matriz de flujos enumera cada conversación permitida: origen, destino, puerto y propósito. Es la tabla de conductos del capítulo 8 hecha lo bastante precisa como para ponerla a prueba. NCS tiene cuatro flujos aprobados: HMI-C hacia cada PLC por Modbus/TCP 502, el historiador consultando a PLC-R1 y GW-LOG hacia la nube del proveedor por 443.

"""Lab 12: compare observed synthetic flows with the approved flow matrix."""
approved = {("HMI-C", "PLC-R1", 502), ("HMI-C", "PLC-R2", 502), ("GW-LOG", "CLOUD-LOG", 443), ("HIST", "PLC-R1", 502)}
observed = [("HMI-C", "PLC-R1", 502), ("GW-LOG", "CLOUD-LOG", 443), ("OFFICE-7", "PLC-R2", 502),
            ("HIST", "PLC-R1", 502), ("GW-LOG", "PLC-R1", 502)]
for f in observed:
    print(f"{f[0]:8} -> {f[1]:9} :{f[2]:<4} {'approved' if f in approved else 'UNAPPROVED'}")
print("approved but not seen:", sorted(approved - set(observed)))

Ejecútelo con python3 lab_flows.py. Salida verificada:

HMI-C    -> PLC-R1    :502  approved
GW-LOG   -> CLOUD-LOG :443  approved
OFFICE-7 -> PLC-R2    :502  UNAPPROVED
HIST     -> PLC-R1    :502  approved
GW-LOG   -> PLC-R1    :502  UNAPPROVED
approved but not seen: [('HMI-C', 'PLC-R2', 502)]

El laboratorio compara esos cuatro flujos aprobados con cinco conversaciones observadas. Las dos filas no aprobadas, OFFICE-7 comunicándose con PLC-R2 y GW-LOG llegando a PLC-R1, son las que hay que investigar primero, mientras que el flujo HMI-C hacia PLC-R2 que no se vio puede simplemente no haberse producido durante la captura. El capítulo 27 muestra más adelante que a la lista le faltaba la consulta del historiador a PLC-R2, un flujo aprobado que nadie había anotado.

12.2 Flujos no aprobados

Que OFFICE-7 hable Modbus con PLC-R2 es exactamente lo que permitía la regla 9. Podría ser la macro de una hoja de cálculo de un ingeniero, o software malicioso. En cualquier caso, es un camino desde la oficina hasta un controlador de compresores. Que GW-LOG hable con PLC-R1 es más extraño: la pasarela de los registradores no tiene ningún motivo para hablar Modbus. Podría ser una función de «integración» del proveedor o un indicio de compromiso. Priya rastreó ambos. OFFICE-7 ejecutaba una macro de informe energético que leía las horas de funcionamiento de los compresores en PLC-R2; el proveedor de los registradores confirmó en GW-LOG una función de «integración con PLC» no utilizada y activada por defecto, que se desactivó.

12.3 Aprobados pero sin uso

HMI-C → PLC-R2 no apareció. Quizá la ventana fue corta; quizá la HMI lee PLC-R2 a través de PLC-R1. Las aprobaciones sin uso son candidatas a eliminarse tras consultarlo con operaciones: menos caminos abiertos, menos que defender. El capítulo 27 muestra el riesgo de leer esto demasiado deprisa. La ventana de observación tampoco captó al historiador consultando a PLC-R2, así que la matriz de flujos solo recogía HIST → PLC-R1. Cuando el nuevo conjunto de reglas entró en servicio, HIST dejó de recibir etiquetas de PLC-R2 en cuatro minutos y Priya revirtió el cambio. Un flujo aprobado pero no visto es una pregunta para operaciones y los proveedores, no una prueba de que el flujo no se use.

12.4 De la comparación al cambio

Cada flujo no aprobado recibe un responsable y una decisión: aprobarlo con justificación (y actualizar la matriz) o bloquearlo. El bloqueo se hace en una ventana planificada y con operaciones informada, porque un flujo «misterioso» puede resultar ser algo que la planta necesita. Las dos decisiones de Priya: la macro energética de OFFICE-7 pasó a leer las horas de funcionamiento en la réplica del historiador en la DMZ, y el tráfico oficina → control se bloqueó en la ventana de mantenimiento del 20 de marzo, después del cambio; la función de «integración con PLC» de GW-LOG se desactivó con el acuerdo del proveedor de los registradores, y el flujo desapareció sin ningún cambio en el cortafuegos.

Ejemplo resuelto (NCS sintética)

Priya pregunta en la oficina: OFFICE-7 ejecuta una macro de informe energético que lee directamente en PLC-R2 las horas de funcionamiento de los compresores. Propone leer los mismos valores en la réplica del historiador en la DMZ y después bloquear oficina → control. Para GW-LOG → PLC-R1 contacta con el proveedor de los registradores, que confirma una función de «integración con PLC» no utilizada y activada por defecto; se desactiva y el flujo desaparece.

Caso sintético — Northgate Cold Storage. Los flujos y las explicaciones son inventados.

Errores y límites

Las ventanas de observación no captan flujos mensuales o estacionales, como los programas de desescarche o los informes de fin de mes. Los puertos no prueban el protocolo; un flujo en el 502 puede no ser Modbus.

Ejercicios — capítulo 12

Síntesis del capítulo

Comparar los flujos observados con una matriz aprobada encuentra los caminos que nadie pretendía, y cada uno termina en una decisión con responsable.

Siga estudiando — capítulo 12 de 30

← Capítulo 11 (borrador) · Índice de capítulos del curso · Capítulo 13 (borrador) →

Respuestas desarrolladas

EX034. Aparece una línea nueva HMI-C -> PLC-R2 :502 approved, y approved but not seen se convierte en una lista vacía [], porque ya se han observado todos los flujos aprobados.

EX035. «Flujo OFFICE-7 → PLC-R2:502: macro de informe energético que lee las horas de funcionamiento de los compresores. Sustitución: leer las horas de funcionamiento en la réplica del historiador en la DMZ. Bloquear oficina → control el 20 de marzo en la ventana de mantenimiento, una vez cambiada la macro. Responsable: Priya Nair con el responsable de instalaciones».

EX036. La única función de la pasarela de los registradores es reenviar temperaturas a la nube, así que no necesita hablar Modbus con un controlador de compresores. Como está conectada a internet, un flujo así enlaza un servicio externo con la zona de control.