Capítulo 12 — Segurança de TO, IoT e sistemas ciberfísicos: fluxos de dados
Mapa da aula
Aula 12 publicada. Mapa, exemplo, EX034.
flowchart TD
N0["12.1 A matriz de fluxos"]
N1["12.2 Fluxos não aprovados"]
N2["12.3 Aprovados mas sem uso"]
N3["12.4 Da comparação à mudança"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX034"]
Desenho lógico
flowchart LR
N0["12.1 A matriz de fluxos"]
N1["12.2 Fluxos não aprovados"]
N2["12.3 Aprovados mas sem uso"]
N3["12.4 Da comparação à mudança"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX034"]
[12.1 A matriz de fluxos]
|
v
[12.2 Fluxos não aprovados]
|
v
[12.3 Aprovados mas sem uso]
|
v
[12.4 Da comparação à mudança]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX034]
Objetivos de aprendizagem
Você vai (1) escrever uma matriz de fluxos aprovados; (2) comparar com ela os fluxos observados; (3) interpretar fluxos não aprovados e fluxos aprovados sem uso; e (4) transformar a comparação em mudanças de firewall.
12.1 A matriz de fluxos
Uma matriz de fluxos lista toda conversa permitida: origem, destino, porta e propósito. É a tabela de conduítes do Capítulo 8 tornada precisa o bastante para ser testada. A NCS tem quatro fluxos aprovados: a HMI-C para cada CLP em Modbus/TCP 502, o historiador consultando o PLC-R1 e o GW-LOG para a nuvem do fornecedor na 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)))
Execute com python3 lab_flows.py. Saída 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)]
O laboratório compara esses quatro fluxos aprovados com cinco conversas observadas. As duas linhas não aprovadas, OFFICE-7 conversando com o PLC-R2 e GW-LOG alcançando o PLC-R1, são as primeiras a investigar, enquanto o fluxo HMI-C para PLC-R2 não visto pode simplesmente não ter ocorrido durante a captura. O Capítulo 27 mostra depois que faltava na lista a consulta do historiador ao PLC-R2, um fluxo aprovado que ninguém tinha anotado.
12.2 Fluxos não aprovados
O OFFICE-7 falando Modbus com o PLC-R2 é exatamente o que a regra 9 permitia. Pode ser a macro de planilha de um engenheiro, ou um malware. De qualquer forma, é um caminho do escritório até um controlador de compressor. O GW-LOG falando com o PLC-R1 é mais estranho: o gateway dos registradores não tem razão para falar Modbus. Pode ser um recurso de "integração" do fornecedor ou um sinal de comprometimento. Priya rastreou os dois. O OFFICE-7 rodava uma macro de relatório de energia que lia as horas de funcionamento dos compressores do PLC-R2; o fornecedor dos registradores confirmou um recurso "PLC integration" sem uso no GW-LOG, habilitado por padrão, que foi desabilitado.
12.3 Aprovados mas sem uso
HMI-C → PLC-R2 não apareceu. Talvez a janela tenha sido curta; talvez a HMI leia o PLC-R2 através do PLC-R1. Aprovações sem uso são candidatas à remoção depois de conferir com a operação — menos caminhos abertos, menos a defender. O Capítulo 27 mostra o risco de ler isso depressa demais. A janela de observação também deixou escapar o historiador consultando o PLC-R2, de modo que a matriz de fluxos listava só HIST → PLC-R1. Quando o novo conjunto de regras entrou em produção, o HIST parou de receber as tags do PLC-R2 em quatro minutos e Priya reverteu. Um fluxo aprovado mas não visto é uma pergunta para a operação e para os fornecedores, e não uma prova de que o fluxo não é usado.
12.4 Da comparação à mudança
Cada fluxo não aprovado recebe um responsável e uma decisão: aprovar com justificativa (e atualizar a matriz) ou bloquear. O bloqueio acontece numa janela planejada, com a operação informada, porque um fluxo "misterioso" pode acabar sendo algo de que a planta precisa. As duas decisões de Priya: a macro de energia do OFFICE-7 passou a ler as horas de funcionamento da réplica do historiador na DMZ, e escritório → controle foi bloqueado na janela de manutenção de 20 de março, depois da troca; o recurso "PLC integration" do GW-LOG foi desabilitado com a concordância do fornecedor dos registradores, e o fluxo desapareceu sem mudança de firewall.
Exemplo resolvido (NCS sintética)
Priya pergunta ao escritório: o OFFICE-7 roda uma macro de relatório de energia que lê as horas de funcionamento dos compressores diretamente do PLC-R2. Ela propõe ler os mesmos valores da réplica do historiador na DMZ e depois bloquear escritório → controle. Para GW-LOG → PLC-R1, ela contata o fornecedor dos registradores, que confirma um recurso "PLC integration" sem uso, habilitado por padrão; ele é desabilitado e o fluxo desaparece.
Caso sintético — Northgate Cold Storage. Os fluxos e as explicações são inventados.
Erros e limites
Janelas de observação deixam escapar fluxos mensais ou sazonais, como programações de degelo ou relatórios de fim de mês. Portas não provam protocolo; um fluxo na 502 pode não ser Modbus.
Exercícios
- EX034 — Classificando uma nova observação. Acrescente
("HMI-C", "PLC-R2", 502)aobserved. O que muda na saída? Rubrica: 3 = ela imprime approved e a lista de não vistos fica vazia; 2 = um efeito; 1 = unapproved; 0 = nada. - EX035 — Decisão para o OFFICE-7. Escreva o registro de decisão para o fluxo do OFFICE-7. Rubrica: 3 = causa, caminho substituto pela DMZ, data do bloqueio, responsável; 2 = três; 1 = "bloqueie"; 0 = nada.
- EX036 — Por que GW-LOG → PLC-R1 é suspeito. Explique em duas frases. Rubrica: 3 = nenhuma necessidade de negócio para o gateway dos registradores falar Modbus; liga a zona conectada à internet ao controle; 2 = um; 1 = vago; 0 = nada.
Síntese
Comparar os fluxos observados com uma matriz aprovada encontra os caminhos que ninguém pretendia, e cada um termina numa decisão com responsável.
Continue estudando — capítulo 12 de 30
← Capítulo 11 · Índice de capítulos do curso · Capítulo 13 →
Siga para a próxima lição escrita.