Capítulo 14 — Firewalls e segmentação
Mapa da aula
Aula 14 publicada. Mapa, exemplo, EX040.
flowchart TD
N0["14.1 Por que revisar as regras"]
N1["14.2 O laboratório do firewall"]
N2["Laboratório — Revisando uma lista sintética de regra"]
N3["14.3 Interpretação"]
N4["14.4 Limpeza segura"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX040"]
Desenho lógico
flowchart LR
N0["14.1 Por que revisar as regras"]
N1["14.2 O laboratório do firewall"]
N2["Laboratório — Revisando uma lista sintética de regra"]
N3["14.3 Interpretação"]
N4["14.4 Limpeza segura"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX040"]
[14.1 Por que revisar as regras]
|
v
[14.2 O laboratório do firewall]
|
v
[Laboratório — Revisando uma lista sintética de regra]
|
v
[14.3 Interpretação]
|
v
[14.4 Limpeza segura]
|
v
[Exemplo resolvido] --> [Exercício EX040]
Objetivos de aprendizagem
Você vai (1) revisar as regras de firewall de forma sistemática; (2) encontrar regras amplas demais, sombreadas e sem uso; (3) limpar as regras com segurança.
14.1 Por que revisar as regras
As regras de firewall se acumulam ao longo dos anos à medida que fornecedores e funcionários pedem acesso. As regras antigas raramente são removidas, porque ninguém se lembra por que existem e todos têm medo de quebrar alguma coisa. Pedem a Jamal que revise a lista de regras do firewall da sede do Riverbend. A Sra. Grant explica três problemas comuns: regras que permitem demais, regras que nunca podem ter efeito porque uma regra anterior já corresponde ao mesmo tráfego e regras que não são usadas há muito tempo. Ele exporta a lista de regras com noventa dias de contagens de acertos.
14.2 O laboratório do firewall
O laboratório revisa uma lista sintética de doze regras com as contagens de acertos de noventa dias. A regra 11 permite qualquer tráfego de qualquer origem para qualquer destino. Como o firewall aplica a primeira regra correspondente, a regra 11 torna inalcançável a regra final de bloqueio, a regra 12, que tem zero acertos. A regra 9 duplica a regra 1 e é sombreada por ela. As regras 6, 9, 10 e 12 têm zero acertos, incluindo a regra 6, que permite a um fornecedor acesso por área de trabalho remota aos caixas. Ele apresenta os achados ao gerente de TI numa tabela curta que lista cada regra, seus acertos e o problema encontrado, se houver, com uma ação proposta para cada uma.
Laboratório — Revisando uma lista sintética de regras de firewall em busca de regras amplas, sombreadas e sem uso
"""Review a synthetic firewall rule list for any-any rules, shadowed rules and unused rules (stdlib only)."""
rules = [
(1, "allow", "staff", "internet", "443", 51234), (2, "allow", "staff", "internet", "80", 20877),
(3, "allow", "staff", "booking", "443", 9411), (4, "allow", "guest", "internet", "443", 40210),
(5, "deny", "guest", "staff", "any", 1876), (6, "allow", "supplier", "tills", "3389", 0),
(7, "allow", "staff", "tills", "443", 2210), (8, "allow", "cctv", "internet", "any", 1530),
(9, "allow", "staff", "internet", "443", 0), (10, "allow", "mgmt", "switches", "22", 0),
(11, "allow", "any", "any", "any", 312), (12, "deny", "any", "any", "any", 0),
]
anyany = [r[0] for r in rules if r[2] == "any" and r[3] == "any" and r[4] == "any" and r[1] == "allow"]
def shadowed(rs):
out = []
for i, r in enumerate(rs):
for p in rs[:i]:
if p[2] in ("any", r[2]) and p[3] in ("any", r[3]) and p[4] in ("any", r[4]):
out.append((r[0], p[0])); break
return out
unused = [r[0] for r in rules if r[5] == 0]
print(f"rules {len(rules)}; allow any-any: {anyany}")
print(f"shadowed (rule, by): {shadowed(rules)}")
print(f"zero hits in 90 days: {unused}")
print(f"after removing rule 11, shadowed: {shadowed([r for r in rules if r[0] != 11])}")
Execute com python3 lab_firewall.py. Saída verificada:
rules 12; allow any-any: [11]
shadowed (rule, by): [(9, 1), (12, 11)]
zero hits in 90 days: [6, 9, 10, 12]
after removing rule 11, shadowed: [(9, 1)]
14.3 Interpretação
A regra que permite tudo para tudo é o achado mais grave, porque significa que o firewall na prática permite qualquer coisa que não tenha correspondido antes, e a regra de bloqueio destinada a barrar todo o resto nunca se aplica. Jamal pergunta sobre ela ao gerente de TI; ela foi acrescentada durante um problema de rede há dois anos como solução temporária. A regra sem uso de área de trabalho remota do fornecedor também é preocupante, porque a área de trabalho remota para os caixas é uma via comum de entrada de ransomware. A regra 10, para administrar os switches, está sem uso, mas é legítima. Ele registra o histórico de cada achado.
14.4 Limpeza segura
Jamal propõe mudanças: remover a regra 11, para que o bloqueio final tenha efeito; remover a regra duplicada 9; remover a regra 6 do fornecedor depois de confirmar com ele; e manter a regra 10 com uma nota explicando sua finalidade. O laboratório mostra que, depois de remover a regra 11, apenas a regra 9 continua sombreada. O gerente de TI faz as mudanças num período tranquilo, com um plano de reversão, monitora problemas por uma semana e registra cada mudança. O fornecedor confirma que não precisa mais da regra 6. Depois de uma semana sem problemas, Jamal agenda uma revisão da lista de regras a cada seis meses.
Exemplo resolvido
Jamal revisa doze regras sintéticas, encontra uma regra que permite tudo para tudo e torna inalcançável o bloqueio final, uma duplicata e uma regra sem uso de área de trabalho remota do fornecedor, e faz a limpeza com segurança.
Caso sintético. As regras são sintéticas; as saídas vêm de lab_firewall.py.
Erros e limites
Uma regra que permite tudo acima do bloqueio final torna o bloqueio inútil.
Exercícios
-
EX040 — Regra ampla. Qual regra permite qualquer tráfego? Rubrica: 3 = a regra 11;; 2 = parcialmente correto;; 1 = errado;; 0 = nenhuma.
-
EX041 — Bloqueio inalcançável. Por que a regra 12 tem zero acertos? Rubrica: 3 = a regra 11 corresponde antes;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
-
EX042 — Regra do fornecedor. O que a regra 6, sem uso, permite? Rubrica: 3 = área de trabalho remota do fornecedor para os caixas;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
Continue estudando — aula 14 (capítulo 14 de 30)
← Capítulo 13 · Índice das aulas · Capítulo 15 →
Continue para a próxima aula já escrita.