Duração: 80 minutos (explicação 20, prática guiada 50, verificação 10). Resultados dos TdR trabalhados: Políticas, normas e boas práticas; Documentação: diagramas, procedimentos (SOP) e contingência; Competências profissionais e de formador replicador.
Objectivos
- Aplicar o ciclo de melhoria contínua (planear, executar, verificar, agir) à segurança da rede, a partir dos achados de testes e auditorias.
- Manter um registo de acções com origem, prioridade, responsável, prazo, estado e reteste, e calcular indicadores com um script que trata erros.
- Distinguir acção fechada de acção eficaz: sem reteste positivo, a acção reabre.
- Preparar a actividade integrada do curso e a apresentação como formador replicador, com critérios de avaliação rastreáveis aos resultados R01–R18.
Planear, executar, verificar, agir
Segurança não é um estado que se atinge; é um ciclo. Planeia-se (riscos, prioridades, acções), executa-se, verifica-se (monitorização, testes, auditorias) e age-se sobre o que a verificação mostrou. A ISO/IEC 27001 exige este ciclo num sistema de gestão da segurança da informação, e o NIST SP 800-137 descreve a monitorização contínua que o alimenta.
Cada achado vira uma acção com origem rastreável (o controlo ou teste de onde veio), prioridade justificada (exposição e impacto), responsável com nome, prazo e critério de fecho. Uma acção só está concluída quando o reteste confirma que o problema desapareceu; «fechada» sem reteste positivo é apenas papel.
Indicadores e transmissão do conhecimento
Poucos indicadores, bem definidos, dizem se o ciclo funciona: percentagem de acções concluídas com reteste positivo, acções atrasadas por prioridade, tempo médio até à correcção de achados altos. Cada indicador tem fórmula, fonte de dados e frequência; um indicador que não leva a nenhuma decisão não vale a pena medir. Os números servem para decidir, não para enfeitar relatórios: um indicador verde com reteste em falta esconde risco.
O formador replicador leva o conhecimento a outras equipas. Uma boa sessão tem objectivo claro, demonstração segura (em rede de prática, nunca em produção), alternativa sem computador, verificação da aprendizagem e materiais acessíveis. A actividade integrada deste curso avalia cada resultado R01–R18 com um critério e a evidência correspondente.
Caso fictício
Depois da auditoria interna (lição 4), a DPE (fictícia) tem cinco acções de melhoria. O chefe quer saber, a 15 de Outubro de 2026, quantas estão realmente concluídas, quais estão atrasadas e o que apresentar à direcção. Depois, cada equipa prepara a actividade integrada do curso e uma sessão de 10 minutos para colegas de outra delegação. Todos os dados são fictícios.
Prática guiada em rede isolada
Rede de prática fictícia, criada dentro de um computador de prática com o script base (módulo 1, lição 1). Nunca use estes passos na rede de produção nem contra endereços reais. As saídas mostradas são exemplos didácticos, não resultados de uma execução.
Topologia (descrição em texto)
- pc-adm (10.10.10.10) — ligado a r1 pela VLAN 10.
- srv (10.10.20.53) — ligado a r1 pela VLAN 20.
- r1 (encaminhador da sede) — ligado a pc-adm, srv, r2 e isp.
- r2 (encaminhador da delegação) — ligado a r1 e a pc-del (10.20.10.10).
- isp (operador simulado) — ligado a r1 e ao servidor externo 198.51.100.10 (endereço dentro de isp).
- Esta lição trabalha sobretudo com ficheiros: registo de acções fictício e script de indicadores em /tmp/dpe-m12/l5.
- Reteste técnico: repete-se, dentro dos espaços de nomes, uma verificação das lições anteriores para fechar uma acção com evidência.
Passos
Pré-verificação e âmbito (não altera nada): confirme as ferramentas, a rede de prática e que a pasta do módulo está livre. Leia em voz alta a declaração de âmbito: «os testes desta aula só se aplicam aos espaços de nomes da rede de prática; qualquer outro endereço está fora do âmbito autorizado». Todos os comandos de teste começam por «ip netns exec <nome>»: um comando sem esse prefixo sairia da rede de prática e não deve ser executado.
for d in nmap nft python3 ssh ssh-keygen sshd git; do command -v $d >/dev/null || echo "Em falta: $d"; done ip netns list | grep -cE '^(pc-adm|srv|r1|r2|pc-del|isp)( |$)' sudo ip netns exec pc-adm ping -c 2 10.10.20.53 | tail -1 test -e /tmp/dpe-m12 && echo 'ATENÇÃO: /tmp/dpe-m12 já existe' || echo 'pasta livre'Saída de exemplo (didáctica):
(nenhuma linha «Em falta») 6 rtt min/avg/max/mdev = 0.05/0.07/0.09/0.02 ms pasta livrePrepare a pasta, o registo de acções fictício e o script de indicadores (textos completos abaixo).
mkdir -p /tmp/dpe-m12/l5 && cd /tmp/dpe-m12/l5 cat > registo-accoes.csv <<'EOF' id,origem,accao,prioridade,responsavel,prazo,estado,data_fecho,reteste M01,A04,Frase de acesso nas chaves administrativas,alta,Equipa de redes,2026-10-12,fechada,2026-10-09,ok M02,A11,Cópia semanal das configurações com reposição testada,media,Equipa de redes,2026-10-28,aberta,, M03,A07,Receptor central de registos em produção,media,Equipa de sistemas,2026-11-15,aberta,, M04,L3-2323,Retirar serviço de gestão antigo sem cifra,alta,Equipa de redes,2026-10-05,aberta,, M05,A09,Alerta de utilização da WAN com responsável,baixa,Equipa de redes,2026-11-30,fechada,2026-10-20,falhou EOF cat > indicadores.py <<'EOF' #!/usr/bin/env python3 """indicadores.py — indicadores do registo de acções de melhoria (exercício DPE, fictício). Uso: python3 indicadores.py REGISTO.csv DATA_DE_REFERENCIA(AAAA-MM-DD) Uma acção só conta como concluída se estiver fechada E com reteste 'ok'.""" import csv, datetime, sys try: ficheiro, hoje = sys.argv[1], datetime.date.fromisoformat(sys.argv[2]) except (IndexError, ValueError): sys.exit("Uso: python3 indicadores.py REGISTO.csv AAAA-MM-DD") try: with open(ficheiro, newline="", encoding="utf-8") as f: accoes = list(csv.DictReader(f)) for a in accoes: a["prazo_d"] = datetime.date.fromisoformat(a["prazo"]) except (OSError, KeyError, ValueError) as e: sys.exit(f"ERRO a ler {ficheiro}: {e}") if not accoes: sys.exit("Registo vazio.") concluidas = [a for a in accoes if a["estado"] == "fechada" and a["reteste"] == "ok"] reabrir = [a for a in accoes if a["estado"] == "fechada" and a["reteste"] != "ok"] atrasadas = [a for a in accoes if a not in concluidas and a["prazo_d"] < hoje] print(f"Acções: {len(accoes)} | concluídas com reteste ok: {len(concluidas)} ({len(concluidas) / len(accoes):.0%})") for a in reabrir: print(f"REABRIR: {a['id']} fechada mas reteste '{a['reteste'] or 'em falta'}'") for a in sorted(atrasadas, key=lambda a: a["prazo_d"]): print(f"ATRASADA: {a['id']} ({a['prioridade']}) prazo {a['prazo']} — {a['accao']}") EOFCalcule os indicadores na data de referência do caso.
python3 indicadores.py registo-accoes.csv 2026-10-15; echo "código=$?"Saída de exemplo (didáctica):
Acções: 5 | concluídas com reteste ok: 1 (20%) REABRIR: M05 fechada mas reteste 'falhou' ATRASADA: M04 (alta) prazo 2026-10-05 — Retirar serviço de gestão antigo sem cifra (M02, M03 e M05 não aparecem como atrasadas: o prazo ainda não passou) código=0Teste o tratamento de erros: data inválida e ficheiro inexistente.
python3 indicadores.py registo-accoes.csv 15-10-2026; echo "código=$?" python3 indicadores.py nao-existe.csv 2026-10-15; echo "código=$?"Saída de exemplo (didáctica):
Uso: python3 indicadores.py REGISTO.csv AAAA-MM-DD código=1 ERRO a ler nao-existe.csv: [Errno 2] No such file or directory: 'nao-existe.csv' código=1Reteste técnico da acção M04 na rede de prática: inicie o serviço antigo como na lição 3, aplique a correcção (bloqueio no r1) e confirme com o mesmo comando da lição 3. Registe a evidência e só então feche a acção.
C: sudo ip netns exec srv python3 -c "import socketserver;socketserver.TCPServer.allow_reuse_address=True;socketserver.TCPServer(('10.10.20.53',2323),socketserver.BaseRequestHandler).serve_forever()" sudo ip netns exec pc-adm nmap -Pn -p 2323 10.10.20.53 | grep 2323 sudo ip netns exec r1 nft add table inet m12melhoria sudo ip netns exec r1 nft add chain inet m12melhoria fwd '{ type filter hook forward priority -10; policy accept; }' sudo ip netns exec r1 nft add rule inet m12melhoria fwd ip daddr 10.10.20.53 tcp dport 2323 counter drop comment \"M04\" sudo ip netns exec pc-adm nmap -Pn -p 2323 10.10.20.53 | tee reteste-M04.txt | grep 2323Saída de exemplo (didáctica):
2323/tcp open 3d-nfsd 2323/tcp filtered 3d-nfsdActualize M04 no registo (estado fechada, data, reteste ok, evidência reteste-M04.txt) e volte a calcular. Nota: o bloqueio é a medida provisória; a acção definitiva (retirar o serviço) continua a exigir alteração aprovada.
sed -i 's/^M04,\(.*\),aberta,,$/M04,\1,fechada,2026-10-15,ok/' registo-accoes.csv && grep ^M04 registo-accoes.csv python3 indicadores.py registo-accoes.csv 2026-10-15Saída de exemplo (didáctica):
M04,L3-2323,Retirar serviço de gestão antigo sem cifra,alta,Equipa de redes,2026-10-05,fechada,2026-10-15,ok Acções: 5 | concluídas com reteste ok: 2 (40%) REABRIR: M05 fechada mas reteste 'falhou'Actividade integrada: leia o enunciado e os critérios C01–C18 (rastreáveis a R01–R18), distribua os papéis na equipa e escreva o índice do relatório e o guião da apresentação de 10 minutos.
nano /tmp/dpe-m12/l5/indice-relatorio.txt nano /tmp/dpe-m12/l5/guiao-apresentacao.txt
Critérios de sucesso
- O indicador inicial é 1 de 5 (20 %) e passa a 2 de 5 (40 %) só depois do reteste com evidência.
- A dupla explica porque M05 reabre apesar de estar «fechada».
- O script termina com mensagem clara e código 1 perante data ou ficheiro inválidos.
- O índice do relatório cobre C01 a C18, cada secção com a evidência prevista, e o guião da apresentação tem objectivo, demonstração segura, alternativa em papel e verificação.
Como desfazer (reversão)
- sudo ip netns exec r1 nft delete table inet m12melhoria
- Ctrl+C na consola C (serviço de exercício). Não usar pkill/killall. Confirmar: sudo ip netns pids srv não lista python3.
- Se ainda existirem as tabelas das lições 1 e 2, removê-las com as reversões dessas lições (m12acessos, m12equip) e repor os valores sysctl guardados.
- Guardar o índice e o guião fora da VM e depois rm -r /tmp/dpe-m12 (todas as pastas do módulo). A forma segura de repor tudo continua a ser descartar a VM.
Alternativa em papel: tarefas e respostas esperadas
- Com o registo fictício, calcule à mão os indicadores a 15-10-2026: acções concluídas com reteste ok, acções a reabrir, acções atrasadas.
- Concluídas com reteste ok: 1 (M01) = 20 %. A reabrir: M05 (fechada, reteste falhou). Atrasadas: M04 (prazo 05-10, aberta). M02, M03 e M05 têm prazo futuro; M05 reabre mas não está atrasada.
- Defina um indicador útil para a direcção, com fórmula, fonte, frequência e decisão que suporta.
- Exemplo: «percentagem de acções de prioridade alta concluídas com reteste ok dentro do prazo» = altas concluídas no prazo / altas com prazo vencido; fonte: registo de acções; mensal; decisão: reforçar recursos ou rever prioridades se ficar abaixo de 80 %.
- Para os critérios C07, C12 e C18 da actividade integrada, diga que evidência entregaria.
- C07: contadores das regras nftables antes/depois de um teste negativo, ou captura que mostra o descarte. C12: configuração SSH só com chave e a mensagem «Permission denied (publickey)»; verificação de que os documentos não contêm segredos. C18: guião da sessão de 10 minutos e grelha de avaliação dos pares preenchida.
- Escreva o guião de uma sessão de 10 minutos para colegas sobre «testes autorizados», incluindo a alternativa sem computador.
- 0–2 min objectivo e regra da autorização; 2–6 min demonstração na rede de prática (ou leitura das saídas de exemplo impressas) de uma porta aberta e da sua confirmação; 6–8 min exercício: classificar três achados; 8–10 min pergunta de verificação e resumo. Materiais em letra grande; comandos lidos em voz alta.
Verifique o que aprendeu
Questão 1
Uma acção de melhoria está marcada «fechada», mas o reteste falhou. Como se conta no indicador?
- Como concluída
- Como não concluída, e a acção reabre
- Como não aplicável
- Retira-se do registo
Ver resposta comentada
Resposta: Como não concluída, e a acção reabre
O que interessa é o problema ter desaparecido. Sem reteste positivo, fechar é só mudar o estado no papel; o indicador tem de o mostrar.
Questão 2
Para que serve ligar cada critério da actividade integrada a um resultado R01–R18?
- Para aumentar o número de páginas
- Para demonstrar, com evidência, que cada resultado de aprendizagem dos TdR foi avaliado
- Para dispensar a apresentação
- Para substituir a auditoria
Ver resposta comentada
Resposta: Para demonstrar, com evidência, que cada resultado de aprendizagem dos TdR foi avaliado
A rastreabilidade mostra que nenhum resultado ficou por avaliar e que cada avaliação assenta numa evidência concreta.
Em leitura fácil
- A segurança melhora num ciclo que nunca acaba.
- Cada problema encontrado vira uma tarefa com responsável e prazo.
- Uma tarefa só acaba quando se confirma que resolveu.
- Poucos números bem escolhidos mostram se está a melhorar.
- No fim do curso, a equipa faz um trabalho completo e apresenta-o.
- Ensine os colegas com uma rede de prática, nunca com a rede real.
Fontes
- ISO/IEC 27001:2022 — Information security management systems — Requirements (https://www.iso.org/standard/27001)
- NIST SP 800-137 — Information Security Continuous Monitoring (ISCM) (https://csrc.nist.gov/pubs/sp/800/137/final)
- NIST SP 800-53A Rev. 5 — Assessing Security and Privacy Controls (https://csrc.nist.gov/pubs/sp/800/53/a/r5/final)
- NIST SP 800-115 — Technical Guide to Information Security Testing and Assessment (https://csrc.nist.gov/pubs/sp/800/115/final)
- Projecto nftables — wiki oficial (https://wiki.nftables.org/)
- Nmap Reference Guide (https://nmap.org/book/man.html)
- Python 3 — documentação oficial dos módulos json, csv, subprocess e statistics (https://docs.python.org/3/library/)
