Capítulo 11 — Copias de seguridad y restauración
Mapa de la lección
Lección 11 publicada. Mapa, ejemplo, EX041.
flowchart TD
N0["Resultados de aprendizaje"]
N1["11.1 Qué copiar"]
N2["11.2 Dónde guardar las copias"]
N3["11.3 Comprobar la integridad"]
N4["11.4 Leer el resultado"]
N5["11.5 Restauraciones de prueba"]
N6["11.6 Con qué frecuencia"]
N7["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX041"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["11.1 Qué copiar"]
N2["11.2 Dónde guardar las copias"]
N3["11.3 Comprobar la integridad"]
N4["11.4 Leer el resultado"]
N5["11.5 Restauraciones de prueba"]
N6["11.6 Con qué frecuencia"]
N7["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX041"]
[Resultados de aprendizaje]
|
v
[11.1 Qué copiar]
|
v
[11.2 Dónde guardar las copias]
|
v
[11.3 Comprobar la integridad]
|
v
[11.4 Leer el resultado]
|
v
[11.5 Restauraciones de prueba]
|
v
[11.6 Con qué frecuencia]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX041]
Resultados de aprendizaje
Usted podrá (1) enumerar lo que hay que copiar en una línea; (2) verificar la integridad de las copias de seguridad con hashes; y (3) explicar por qué hay que probar una restauración.
11.1 Qué copiar
Los programas de los PLC, los proyectos y pantallas de las HMI, los archivos de recetas, las configuraciones de los dispositivos (conmutadores, cortafuegos, ajustes de la cámara) y los datos de la licencia del software de ingeniería. Sin ellos, recuperarse de un fallo o un ataque significa reconstruirlo todo de memoria. En HPFL eso significa los programas de PLC-FILL y PLC-WRAP, el proyecto de HMI-1, los archivos de recetas, los ajustes de VIS-CAM y las configuraciones de FW-1 y de los conmutadores de la línea. Enumere cada elemento en el registro con la fecha de su última copia. Un elemento que falta en la lista probablemente falte también en las copias.
11.2 Dónde guardar las copias
Al menos una copia fuera de la red de la línea, idealmente sin conexión, para que un malware que cifre la línea no pueda alcanzarla. Etiquete cada una con el dispositivo, la fecha y la versión. En HPFL el ingeniero de control mantiene un almacén sin conexión, que es donde se encontró una copia más antigua y coincidente del programa de la envolvedora. Guarde al menos dos copias de cada copia de seguridad importante y anote dónde está cada una. Compruebe que la copia sin conexión es accesible durante un turno de noche. Anote quién puede sacar una copia del emplazamiento.
11.3 Comprobar la integridad
Un hash como SHA-256 es una huella de un archivo: cualquier cambio da un valor distinto. Anote el hash al hacer la copia; compruébelo antes de restaurar.
"""Lab 11: verify synthetic PLC backup files against recorded SHA-256 values."""
import hashlib
files = {"PLC-FILL_2026-09.bak": b"fill program v3.2 rungs 1-140",
"PLC-WRAP_2026-09.bak": b"wrap program v2.0 rungs 1-88 edited"}
recorded = {"PLC-FILL_2026-09.bak": hashlib.sha256(b"fill program v3.2 rungs 1-140").hexdigest(),
"PLC-WRAP_2026-09.bak": hashlib.sha256(b"wrap program v2.0 rungs 1-88").hexdigest()}
for name, data in files.items():
h = hashlib.sha256(data).hexdigest()
print(f"{name:22} {h[:12]} {'MATCH' if h == recorded[name] else 'MISMATCH - do not restore'}")
Ejecútelo con python3 lab_hash.py. Salida verificada:
PLC-FILL_2026-09.bak 0278a5f83d56 MATCH
PLC-WRAP_2026-09.bak 9974ecb17bab MISMATCH - do not restore
Guarde los hashes separados de las copias, por ejemplo en el ticket de cambio o en un registro, para que quien altere una copia no pueda alterar también su hash. El Lab 11 comprueba dos archivos de copia de seguridad frente a los hashes anotados y muestra cómo se ve una discrepancia.
11.4 Leer el resultado
La copia de la llenadora coincide con su hash anotado. La de la envolvedora no: su contenido se editó después de anotar el hash. Restaurarla podría cargar un programa que nadie aprobó, así que se aparta y se notifica. Una discrepancia no prueba un ataque; prueba que el archivo cambió después de anotarse su hash. En HPFL la edición se atribuyó a un ajuste aprobado pero no registrado. El procedimiento se actualizó para que cada cambio produzca una nueva copia y un nuevo hash en el mismo ticket.
11.5 Restauraciones de prueba
Una copia que nunca se ha restaurado es una esperanza, no un plan. Una o dos veces al año, restaure un programa en un PLC de repuesto o de laboratorio y compárelo con el que está en funcionamiento. Anote la restauración de prueba en el registro con la fecha, el dispositivo, la copia utilizada y el resultado. Si una restauración falla, averigüe por qué antes de que un fallo real le obligue a hacerlo. En HPFL podría usarse para ello un PLC de repuesto de la estantería, tras comprobar que figura como repuesto en el registro.
11.6 Con qué frecuencia
Haga una copia tras cada cambio aprobado y en una fecha mensual fija, lo que ocurra primero, para que la copia buena más reciente nunca vaya muy por detrás del programa en funcionamiento. En HPFL las copias de septiembre eran las más recientes antes de la edición del programa de la envolvedora, y por eso un cambio aprobado posterior sin copia nueva causó confusión. Vincule las copias a los tickets de cambio para que cada cambio aprobado produzca una copia y un hash nuevos. Compruebe cada mes que la copia más reciente de cada dispositivo es posterior a su último cambio aprobado. Si no lo es, haga una copia nueva y calcule su hash antes del siguiente turno.
Ejemplo resuelto (HPFL sintética)
Tomás notifica la discrepancia. El ingeniero de control encuentra en el almacén sin conexión una copia más antigua que coincide y compara el archivo editado: alguien añadió una línea al programa de la envolvedora después de la copia de septiembre sin ticket de cambio. La edición se atribuye a un ajuste aprobado pero no registrado; se actualizan el registro y el procedimiento.
Caso sintético — HPFL. Los archivos y los hashes los genera el laboratorio con contenidos inventados.
Errores y límites
Un hash coincidente prueba que el archivo no ha cambiado desde que se anotó, no que la versión anotada fuera buena. Los hashes deben guardarse separados de las copias.
Ejercicios — capítulo 11
- EX041 — Lista de copias. Nombre cinco cosas que hay que copiar en la línea HPFL. Rúbrica: 3 = cinco elementos correctos; 2 = cuatro; 1 = dos; 0 = nada.
- EX042 — Decisión ante una discrepancia. ¿Qué hace Tomás con la copia de la envolvedora marcada
MISMATCH? Rúbrica: 3 = no restaurarla; apartarla; notificarla; buscar una copia verificada; 2 = solo notificarla; 1 = restaurarla igualmente; 0 = nada. - EX043 — Un byte cambiado. Si se cambiara un carácter de los datos de la llenadora, ¿qué imprimiría el laboratorio para ese archivo? Rúbrica: 3 = un hash distinto y
MISMATCH - do not restore; 2 = discrepancia; 1 = coincidencia; 0 = nada. - EX044 — Dónde guardar los hashes. ¿Por qué se guardan los hashes aparte de los archivos de copia? Rúbrica: 3 = un atacante que altere las copias podría alterar también los hashes guardados en el mismo lugar; 2 = vago; 1 = espacio; 0 = nada.
Síntesis del capítulo
Las copias se guardan sin conexión, etiquetadas, con su hash y con restauraciones de prueba; una discrepancia detiene la restauración.
Siga estudiando — capítulo 11 de 18
← Capítulo 10 (borrador) · Índice de capítulos del curso · Capítulo 12 (borrador) →