Capítulo 6 — Sistemas operacionais e virtualização
Mapa da aula
Aula 06 publicada. Mapa, exemplo, EX016.
flowchart TD
N0["6.1 Chaves nos servidores"]
N1["6.2 Clonagem e snapshots"]
N2["6.3 Aleatoriedade em máquinas virtuais"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX016"]
Desenho lógico
flowchart LR
N0["6.1 Chaves nos servidores"]
N1["6.2 Clonagem e snapshots"]
N2["6.3 Aleatoriedade em máquinas virtuais"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3 --> Q["EX016"]
[6.1 Chaves nos servidores]
|
v
[6.2 Clonagem e snapshots]
|
v
[6.3 Aleatoriedade em máquinas virtuais]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX016]
Objetivos de aprendizagem
Você vai (1) proteger chaves em servidores Linux e máquinas virtuais; (2) entender os riscos da clonagem e dos snapshots; (3) usar a aleatoriedade segura do sistema operacional.
6.1 Chaves nos servidores
Os servidores web da prefeitura guardam chaves privadas TLS. Rosa confere como elas são armazenadas: as chaves devem poder ser lidas apenas pela conta do servidor web, nunca por todos os usuários, e não devem ficar em diretórios pessoais nem em pastas compartilhadas. Ela encontra um servidor em que o arquivo da chave pode ser lido por todas as contas, uma sobra de uma sessão de solução de problemas. Ela corrige as permissões, registra a mudança e acrescenta uma verificação semanal que relata os arquivos de chave com permissões frouxas. As permissões do sistema operacional são um controle de chaves básico, mas poderoso.
6.2 Clonagem e snapshots
As máquinas virtuais podem ser clonadas e ter snapshots, o que é conveniente, mas arriscado para a criptografia. Um servidor clonado carrega as mesmas chaves privadas do original, então duas máquinas passam a ter uma única identidade. Os snapshots podem capturar as chaves e o estado do gerador aleatório que estão na memória. Rosa descobre que a imagem modelo da prefeitura incluía uma chave de host SSH gerada de antemão, de modo que toda nova máquina virtual tinha a mesma chave. Ela corrige o modelo para gerar as chaves na primeira inicialização e substitui as chaves duplicadas, documentando quantas máquinas foram afetadas.
6.3 Aleatoriedade em máquinas virtuais
Máquinas virtuais recém-iniciadas podem ter pouca entropia, e máquinas clonadas podem começar com estados de gerador idênticos. Os sistemas operacionais modernos lidam melhor com isso, alimentando o gerador a partir do hipervisor e de fontes de hardware, e a NIST SP 800-90A descreve os projetos de gerador que eles usam. Rosa confere se as imagens Linux da prefeitura usam a interface getrandom do kernel, que bloqueia até que o gerador esteja alimentado, e se as aplicações a usam, por exemplo por meio do módulo secrets do Python. Ela anota que as aplicações nunca devem manter seus próprios geradores aleatórios caseiros.
Exemplo resolvido
Rosa corrige uma chave TLS legível por todos, remove uma chave de host SSH duplicada do modelo de máquina virtual e confirma que as imagens usam a aleatoriedade do sistema devidamente alimentada.
Caso sintético. Os servidores e as imagens são inventados; a SP 800-90A é real.
Erros e limites
Snapshots e backups podem conter chaves; proteja-os como chaves. Corrigir um modelo não corrige as máquinas já clonadas a partir dele.
Exercícios
-
EX016 — Permissões da chave. Que problema de permissão Rosa encontrou? Rubrica: 3 = um arquivo de chave TLS legível por todas as contas;; 2 = legível;; 1 = vago;; 0 = nenhuma.
-
EX017 — Falha do modelo. O que havia de errado com o modelo de máquina virtual? Rubrica: 3 = continha uma chave de host SSH gerada de antemão, compartilhada por todos os clones;; 2 = chave compartilhada;; 1 = vago;; 0 = nenhuma.
-
EX018 — getrandom. Por que usar o getrandom nas novas máquinas virtuais? Rubrica: 3 = ele bloqueia até que o gerador esteja alimentado, evitando uma aleatoriedade fraca no início;; 2 = alimentado;; 1 = mais rápido;; 0 = nenhuma.
Síntese
Os sistemas operacionais e a virtualização moldam a segurança das chaves por meio das permissões, dos modelos e da aleatoriedade alimentada.
Continue estudando — aula 06 (capítulo 06 de 30)
← Capítulo 05 · Índice das aulas · Capítulo 07 →
Continue para a próxima aula já escrita.