Capítulo 27 — Seguridad de TO, IoT y sistemas ciberfísicos: diseño de controles
Mapa de la lección
Lección 27 publicada. Mapa, ejemplo, EX079.
flowchart TD
N0["Resultados de aprendizaje"]
N1["27.1 Tres tipos"]
N2["27.2 Competencia del operador"]
N3["27.3 Compensación"]
N4["Nota práctica"]
N5["27.1b Responsables y detección del acceso de emergen"]
N6["Nota de campo: jornada de salud de los controles"]
N7["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX079"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["27.1 Tres tipos"]
N2["27.2 Competencia del operador"]
N3["27.3 Compensación"]
N4["Nota práctica"]
N5["27.1b Responsables y detección del acceso de emergen"]
N6["Nota de campo: jornada de salud de los controles"]
N7["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX079"]
[Resultados de aprendizaje]
|
v
[27.1 Tres tipos]
|
v
[27.2 Competencia del operador]
|
v
[27.3 Compensación]
|
v
[Nota práctica]
|
v
[27.1b Responsables y detección del acceso de emergen]
|
v
[Nota de campo: jornada de salud de los controles]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX079]
Resultados de aprendizaje
Usted podrá (1) diseñar controles preventivos, detectivos y correctivos para el CNHP; (2) vincular los controles a los requisitos; (3) evitar controles que exijan competencias de explotación para operarlos.
27.1 Tres tipos
Preventivo: lista de permitidos antes de reenviar. Detectivo: alerta ante códigos de escritura denegados. Correctivo: desactivar automáticamente una cuenta de ingeniería comprometida al final de la ventana. Cada uno se asocia a un identificador de requisito. En ABP, la lista de permitidos del monitor serie es preventiva, la alerta cuando HMI-1 intenta escribir fuera de 40001 a 40010 es detectiva y la desactivación de las cuentas temporales de ingeniería al final de cada ventana es correctiva. Lena registra el identificador del requisito junto a cada control, para que un revisor pueda ver qué requisito falla si el control se elimina o se debilita.
27.2 Competencia del operador
Los controles del CNHP los comprueban los ingenieros del sitio durante ventanas autorizadas, no especialistas en explotación. Un control que necesita shellcode a medida para verificarse es el control equivocado para este programa. Lena redacta una entrada de procedimiento para cada control del CNHP que describe cómo comprobarlo con herramientas ordinarias, como reproducir una trama sintética en el banco y leer el registro de decisiones. Si un control solo puede verificarlo alguien que escriba código de explotación, lo sustituye por otro que los propios ingenieros del sitio puedan comprobar con seguridad durante el trabajo rutinario.
27.3 Compensación
Si un PLC heredado no puede aplicar listas de permitidos, añada monitorización detectiva y una aprobación humana más estricta para el acceso de ingeniería. Documente la compensación en el permiso de trabajo.
"""Lab: Modbus function-code allow-list on synthetic, already-decoded requests (no network)."""
ALLOW = {("HMI-1", 3), ("HMI-1", 6), ("HIST-1", 3), ("HIST-1", 4)} # (source, function code)
WRITE_REGS = {("HMI-1", 6): range(40001, 40011)} # HMI may write setpoints only
reqs = [("HMI-1", 3, 40001), ("HMI-1", 6, 40003), ("HMI-1", 6, 40050),
("HIST-1", 3, 30001), ("HIST-1", 16, 40001), ("ENG-WS", 8, 0), ("HIST-1", 4, 30010)]
for src, fc, reg in reqs:
if (src, fc) not in ALLOW:
d = "BLOCK fc-not-allowed"
elif (src, fc) in WRITE_REGS and reg not in WRITE_REGS[(src, fc)]:
d = "BLOCK register-out-of-range"
else:
d = "PASS"
print(f"{src:7} fc={fc:2} reg={reg:5} -> {d}")
Salida esperada:
HMI-1 fc= 3 reg=40001 -> PASS
HMI-1 fc= 6 reg=40003 -> PASS
HMI-1 fc= 6 reg=40050 -> BLOCK register-out-of-range
HIST-1 fc= 3 reg=30001 -> PASS
HIST-1 fc=16 reg=40001 -> BLOCK fc-not-allowed
ENG-WS fc= 8 reg= 0 -> BLOCK fc-not-allowed
HIST-1 fc= 4 reg=30010 -> PASS
Caso sintético — Ashford Batch Plant. Las escrituras fuera de 40001-40010 se deniegan: un control preventivo con un evento detectivo cuando alguien lo intenta.
En ABP, la compensación se escribe en el permiso de trabajo con un responsable y una fecha de revisión, para que se compruebe en lugar de darse por supuesta. Para un PLC heredado que no puede aplicar una lista de permitidos, Lena combina la monitorización detectiva en su línea troncal con la aprobación de dos personas para el acceso de ingeniería.
27.4 Errores y límites
Las pilas de controles compensatorios sin responsable se convierten en alertas ignoradas. El registro de controles de Lena enumera cada control compensatorio de ABP con su responsable, sus alertas y la fecha de su última prueba. Un control sin responsable recibe uno antes de la siguiente ventana, o se retira del registro y su requisito se marca como no cumplido. Los controles que nadie vigila se cuentan como ausentes, porque sus alertas se ignorarán cuando por fin salten. La asignación de responsables se revisa en cada jornada de salud de los controles.
Nota práctica
Una vez por trimestre, Lena reserva una jornada de salud de los controles en el banco: cada control preventivo del CNHP se rompe con tráfico sintético, y la alerta correspondiente del monitor debe saltar. Los controles no probados son deseos.
27.1b Responsables y detección del acceso de emergencia
Cada control del CNHP, como la lista de permitidos de la línea troncal del PLC-A, tiene un responsable que recibe sus alertas y una fecha de revisión. Registre cuándo un operador usa el acceso de emergencia para saltarse la doble aprobación. Un acceso de emergencia sin detección no es más que un control único oculto. La revisión semanal de los eventos de acceso de emergencia forma parte del diseño de controles, y cada revisión nombra quién lo usó y el motivo alegado. La entrada de cada control en el registro indica también cómo falla: que una lista de permitidos rota bloquee el tráfico o lo deje pasar decide qué alerta detectiva debe saltar primero; en la línea troncal del PLC-A es la alerta de política ausente, que avisa al responsable de la ventana.
Nota de campo: jornada de salud de los controles
En la jornada de salud de marzo, el equipo borró la lista de permitidos de un monitor de banco y confirmó que la alerta detectiva saltaba en 12 segundos. El camino preventivo denegó las escrituras de inmediato. Un control compensatorio de un PLC heredado no tenía responsable; recibió uno antes de la siguiente ventana.
Ejercicios — capítulo 27
- EX079 — Mapa. Un control preventivo y uno detectivo contra la manipulación de la evidencia. Rúbrica: 3 = ambos; 2 = uno; 1 = vago; 0 = nada.
- EX080 — Operable. ¿Por qué «verificar volviendo a explotar» es un mal control? Rúbrica: 3 = doble uso + inestable + competencia equivocada; 2 = una razón; 1 = vago; 0 = lo defiende.
- EX081 — Laboratorio. ¿Qué regla bloquea HIST-1 fc=16? Rúbrica: 3 = fc-not-allowed; 2 = denegación vaga; 1 = incorrecta; 0 = nada.
Síntesis del capítulo
Los controles son preventivos, detectivos o correctivos, tienen responsable y se operan sin exploits.
Siga estudiando — capítulo 27 de 50
← Capítulo 26 (borrador) · Índice de capítulos del curso · Capítulo 28 (borrador) →