Capítulo 12 — Sistemas operacionais
Mapa da aula
Aula 12 publicada. Mapa, exemplo, EX034.
flowchart TD
N0["12.1 Contas de serviço"]
N1["12.2 Logs como evidência da plataforma"]
N2["12.3 Isolando parsers"]
N3["12.4 Patches"]
N4["12.5 Tempo e agendamento"]
N5["Nota de prática — Linhas de base dos hosts"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX034"]
Desenho lógico
flowchart LR
N0["12.1 Contas de serviço"]
N1["12.2 Logs como evidência da plataforma"]
N2["12.3 Isolando parsers"]
N3["12.4 Patches"]
N4["12.5 Tempo e agendamento"]
N5["Nota de prática — Linhas de base dos hosts"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX034"]
[12.1 Contas de serviço]
|
v
[12.2 Logs como evidência da plataforma]
|
v
[12.3 Isolando parsers]
|
v
[12.4 Patches]
|
v
[12.5 Tempo e agendamento]
|
v
[Nota de prática — Linhas de base dos hosts]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX034]
Objetivos de aprendizagem
Você vai (1) executar serviços de inteligência sob contas de privilégio mínimo; (2) usar os logs do sistema operacional como evidência do comportamento da plataforma; (3) isolar parsers que lidam com entradas não confiáveis; (4) aplicar patches e configurar hosts para uma plataforma sempre ligada.
12.1 Contas de serviço
O coletor do Lantern roda com uma conta dedicada, com permissão apenas para seu diretório de trabalho e para HTTPS de saída aos servidores dos parceiros. Ele não consegue ler a configuração do firewall que acaba influenciando; um serviço separado e auditado faz isso. Se o coletor fosse comprometido por um arquivo malicioso de um parceiro, o atacante teria uma conta que só lê a própria pasta e só conversa com servidores de parceiros. Ele não poderia alterar regras do firewall nem alcançar os relatórios dos analistas. Kofi lista cada conta de serviço com suas permissões e revisa a lista depois de cada versão, removendo qualquer direito que tenha entrado para um teste e nunca tenha sido retirado.
12.2 Logs como evidência da plataforma
Logs de autenticação, inícios de processos e modificações de arquivos mostram o que a própria plataforma fez. Quando um parceiro pergunta se um relatório TLP:RED foi acessado, os logs do sistema operacional e da aplicação respondem. Essa pergunta exige logs que tenham sido guardados, protegidos contra alteração e sincronizados no tempo. O Lantern envia os logs dos hosts a um repositório separado, em que os administradores da plataforma podem ler, mas não apagar. Kofi testou a resposta uma vez abrindo um relatório de teste e verificando se o acesso aparecia em até um minuto, com o usuário, o horário e o objeto. Um parceiro que confia material restrito à BEN pode pedir uma verificação assim, e a BEN deve ser capaz de respondê-la com segurança.
12.3 Isolando parsers
Os arquivos dos parceiros são entradas não confiáveis. Os parsers rodam em um contêiner ou sandbox sem acesso à rede além do necessário, com sistemas de arquivos somente leitura sempre que possível e com limites de memória. Assim, um bug em um parser não pode virar um ponto de apoio dentro do SOC. Kofi testa o sandbox entregando ao parser um arquivo que tenta abrir uma conexão de rede e outro que tenta gravar fora de sua pasta. As duas tentativas falham e são registradas. Um teste que falhasse bloquearia a versão até que o sandbox fosse corrigido.
12.4 Patches
Plataformas expostas à internet precisam de patches rápidos. Uma janela de manutenção, uma imagem testada e um snapshot de reversão permitem à BEN aplicar patches toda semana sem longas interrupções. A rotina de Kofi aplica os patches primeiro em um host de teste que reproduz um dia de tráfego sintético de feeds. Se a saída do pipeline corresponde ao snapshot esperado, a mesma imagem vai para produção na janela semanal. Um snapshot tirado logo antes permite à equipe voltar ao estado anterior em minutos se algo quebrar. Correções urgentes para falhas exploradas ativamente podem pular a espera semanal, com as mesmas etapas de teste e reversão comprimidas em horas.
12.5 Tempo e agendamento
Timers do cron ou do systemd agendam as consultas e os recálculos de decaimento. Registre os timers no gerenciamento de configuração, para que as mudanças sejam revisadas. Um timer não revisado passa despercebido com facilidade. Kofi encontrou certa vez um job de decaimento configurado para rodar a cada minuto depois de um teste, o que carregava o banco de dados sem motivo. Como os timers agora ficam no gerenciamento de configuração, uma mudança assim aparece na revisão e na linha de base do host. Cada timer registra sua finalidade e seu responsável, para que ninguém precise adivinhar se pode ser removido. Os horários são definidos em UTC, para evitar surpresas quando os relógios mudam.
Nota de prática — Linhas de base dos hosts
Uma linha de base lista os processos, as portas abertas e as tarefas agendadas esperados para cada host do Lantern. Uma comparação noturna sinaliza desvios: um serviço escutando inesperadamente ou um novo timer. As linhas de base ficam no gerenciamento de configuração e são revistas depois de cada mudança aprovada, para que os alertas signifiquem algo.
Exemplo resolvido
Um pacote de arquivos de um parceiro contém um arquivo deliberadamente malformado (teste sintético). O parser trava dentro de seu sandbox; o contêiner reinicia; um registro de rejeição é gravado. Nada mais no host é afetado, e a falha aparece nos logs com o hash do arquivo, para o parceiro.
Caso sintético. O arquivo malformado e o comportamento do sandbox são inventados.
Erros e limites
Rodar tudo como root é rápido de implantar e lento de recuperar. Sandboxes reduzem o risco, mas não o eliminam.
Exercícios
- EX034 — Direitos do coletor. A conta do coletor deve poder gravar regras de firewall? Explique. Rubrica: 3 = não; privilégio mínimo/separação; serviço separado e auditado; 2 = não; 1 = sim; 0 = nenhuma.
- EX035 — Pergunta de acesso. Que evidência responde "quem abriu o relatório TLP:RED?" Rubrica: 3 = logs de acesso da aplicação + logs de autenticação do sistema operacional; 2 = um; 1 = perguntar à equipe; 0 = nenhuma.
- EX036 — Configurações do sandbox. Cite três configurações de sandbox para um parser de arquivos não confiáveis. Rubrica: 3 = três entre rede inexistente/limitada, sistema de arquivos somente leitura, limites de memória/CPU, usuário sem privilégios; 2 = duas; 1 = uma; 0 = nenhuma.
Síntese
Privilégio mínimo, logs como evidência, parsers em sandbox e patches disciplinados mantêm a plataforma confiável.
Continue estudando — capítulo 12 de 50
← Capítulo 11 (rascunho) · Índice de capítulos do curso · Capítulo 13 (rascunho) →