◇ OpenCyber Academy
Tecnólogo · Capítulo 12 · Português

Capítulo 12 — Segurança de TO, IoT e sistemas ciberfísicos: fluxos de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

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

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.