Capítulo 17 — Laboratório isolado II
Mapa da aula
Aula 17 publicada. Mapa, exemplo, EX065.
flowchart TD
N0["17.1 A tarefa do laboratório"]
N1["Laboratório — Detecção de logins suspeitos em regist"]
N2["17.2 Medir"]
N3["17.3 Recomendar"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX065"]
Desenho lógico
flowchart LR
N0["17.1 A tarefa do laboratório"]
N1["Laboratório — Detecção de logins suspeitos em regist"]
N2["17.2 Medir"]
N3["17.3 Recomendar"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX065"]
[17.1 A tarefa do laboratório]
|
v
[Laboratório — Detecção de logins suspeitos em regist]
|
v
[17.2 Medir]
|
v
[17.3 Recomendar]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX065]
Objetivos de aprendizagem
Você vai (1) testar num laboratório a detecção de logins suspeitos; (2) medir detecções e alarmes falsos; (3) recomendar configurações para a Linden.
17.1 A tarefa do laboratório
O segundo laboratório de Daniel usa registros sintéticos de login de um sistema clínico em nuvem. Cada registro mostra o usuário, a hora, o local e se o login teve sucesso, com alguns logins maliciosos plantados. Nadia precisa desenhar uma regra que alerte sobre logins suspeitos sem inundar Grace de alarmes. A equipe da Linden trabalha em cinco cidades, principalmente entre as sete da manhã e as sete da noite, então ela começa descrevendo, a partir dos dados, o comportamento normal antes de escrever qualquer regra. Ela escreve sua descrição do normal em poucas frases e pede que Daniel a confira antes de começar a programar.
Laboratório — Detecção de logins suspeitos em registros sintéticos
# Compare two sign-in alert rules on synthetic records: (user, hour, town, attack?)
recs = [("dr.ali", 9, "Elmfield", 0), ("dr.ali", 23, "Elmfield", 0), ("n.ross", 8, "Norbury", 0),
("n.ross", 14, "Norbury", 0), ("dr.ali", 3, "Lisbon", 1), ("k.chan", 10, "Ashby", 0),
("k.chan", 2, "Unknown", 1), ("m.ojo", 12, "Kingsley", 0), ("m.ojo", 22, "Riga", 1),
("p.lee", 18, "Westcott", 0), ("p.lee", 11, "Westcott", 0)]
seen = {}
for u, h, t, _ in recs:
if 7 <= h < 19: seen.setdefault(u, set()).add(t)
def rule_a(r): return not (7 <= r[1] < 19)
def rule_b(r): return rule_a(r) and r[2] not in seen.get(r[0], set())
for name, rule in (("Rule A", rule_a), ("Rule B", rule_b)):
hits = [r for r in recs if rule(r)]
caught = sum(r[3] for r in hits)
print(f"{name}: {len(hits)} alerts, {caught} attacks caught, {len(hits) - caught} false alarms")
Execute com python3 lab_signin.py. Saída verificada:
Rule A: 4 alerts, 3 attacks caught, 1 false alarms
Rule B: 3 alerts, 3 attacks caught, 0 false alarms
17.2 Medir
Nadia testa duas regras. A regra A alerta sobre qualquer login fora do horário de trabalho. A regra B alerta sobre logins fora do horário de trabalho que também venham de um local nunca usado antes por aquele usuário. O laboratório conta, para cada uma, os alertas, os ataques plantados detectados e os alarmes falsos. A regra A detecta todos os ataques plantados, mas também sinaliza um dentista que confere a agenda tarde da noite. A regra B detecta os mesmos ataques com menos alarmes falsos. Medir os dois resultados mostra o trade-off com clareza. Ela guarda as contagens para o relatório.
17.3 Recomendar
Nadia recomenda a regra B para a Linden, com alertas enviados a Grace e uma revisão semanal, e anota seus limites: um atacante usando uma senha roubada durante o horário de trabalho, a partir de uma cidade habitual, não seria sinalizado. Ela acrescenta que o login multifator no sistema clínico importa mais do que qualquer regra de alerta, já que ele bloqueia de saída a maioria dos ataques com senhas roubadas. Daniel concorda, observando que a detecção complementa a prevenção, mas não pode substituí-la. Ela escreve a recomendação como uma nota de uma página para Grace, listando a regra, quem recebe os alertas, a revisão semanal e o ponto cego conhecido, para que a decisão possa ser revista se os padrões de trabalho da Linden mudarem.
Exemplo resolvido
Nadia compara duas regras de alerta de login em dados sintéticos, escolhe a que tem menos alarmes falsos e declara seu ponto cego.
Caso sintético. Os registros e os ataques são sintéticos.
Erros e limites
Os ataques plantados podem ser mais fáceis que os reais. Os dados de localização podem estar errados.
Exercícios
-
EX065 — Normal primeiro. O que Nadia descreveu antes de escrever as regras? Rubrica: 3 = o comportamento normal: cinco cidades, das 7h às 19h;; 2 = normal;; 1 = vago;; 0 = nenhuma.
-
EX066 — Resultado da regra A. Quais foram os resultados da regra A? Rubrica: 3 = 4 alertas, 3 ataques detectados, 1 alarme falso;; 2 = números;; 1 = vago;; 0 = nenhuma.
-
EX067 — Resultado da regra B. Quais foram os resultados da regra B? Rubrica: 3 = 3 alertas, 3 ataques detectados, 0 alarme falso;; 2 = números;; 1 = vago;; 0 = nenhuma.
-
EX068 — Ponto cego. O que a regra B deixaria passar? Rubrica: 3 = uma senha roubada usada no horário de trabalho a partir de uma cidade habitual;; 2 = horário de trabalho;; 1 = vago;; 0 = nenhuma.
Síntese
Medir a detecção e os alarmes falsos em dados rotulados mostra qual regra implantar, enquanto a prevenção continua essencial.
Continue estudando — aula 17 (capítulo 17 de 18)
← Capítulo 16 · Índice das aulas · Capítulo 18 →
Continue para a próxima aula já escrita.