mirror of
https://github.com/lgcosta/pf-linux-port.git
synced 2026-11-12 21:48:05 -03:00
Screencasts: seis videos silenciosos 1080p30 da demonstracao
Novo pipeline de video: scripts/screencast/render.py roda uma fase em um pty,
emula o terminal com pyte, gera frames PNG e mux com ffmpeg (H.264,
yuv420p, +faststart, sem trilha de audio). Fallback de encoder: libx264 ->
libopenh264 -> VP9.
Fases (scripts/screencast/phases/, uma sessao real contra o lab por video):
1. implementacao no kernel - fontes OpenBSD + compat + build limpo do pf.ko
2. ativacao - insmod, /dev/pf, pfctl -e, pfctl -s info
3. regras basicas - tabela, anchor, keep state, block drop
4. roteamento - route-to e reply-to (provado com tcpdump nas 2 interfaces)
5. balanceamento - pool round-robin, pool source-hash, dup-to
6. QOS - filas hfsc, pfctl -s queue -v, transferencia de 2 MB pela fila
Os videos ficam versionados em out/screencast/ (.gitignore ajustado para
nao ignorar *.mp4) e o indice/texto de descricao do YouTube em
docs/{en,pt-BR}/screencast.md.
Correcoes na propria demo (encontradas gravando): a acao de uma regra no pf
e pass OU block (nunca os dois); as regras de um anchor vivem em um ruleset
proprio (pfctl -a <anchor> -f); o nc do QOS precisa rodar na VM do servidor,
nao no firewall; o rotulo 'FASE x/6' vem do numero da fase, nao da posicao
na lista de gravacao.
This commit is contained in:
1 parent
90c51f43fc
commit
fe324259c0
20 files changed
+958
-2
No files matched your search
+77
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
# Fase 3 - regras basicas: tabelas, anchors, keep state, block/pass.
|
||||
set -u
|
||||
cd "$(dirname "$0")"
|
||||
. ./lib.sh
|
||||
|
||||
banner "FASE 3 - REGRAS BASICAS"
|
||||
|
||||
p0 "/opt/pf/pfctl -e"
|
||||
p0 "/opt/pf/pfctl -f /dev/null"
|
||||
|
||||
bold "# um pf.conf de verdade, sintaxe do OpenBSD"
|
||||
cat > /tmp/sc-regras.conf <<'CONF'
|
||||
# --- regras basicas do PF ---
|
||||
set block-policy return
|
||||
|
||||
table <trusted> { 10.0.1.0/24 }
|
||||
|
||||
anchor "demo"
|
||||
|
||||
pass in quick on ingress proto icmp from <trusted> keep state
|
||||
pass out quick on egress proto icmp keep state
|
||||
|
||||
pass in quick
|
||||
pass out quick
|
||||
CONF
|
||||
put /tmp/sc-regras.conf >/dev/null
|
||||
p0 "cat /tmp/sc-regras.conf"
|
||||
p0 "/opt/pf/pfctl -f /tmp/sc-regras.conf && echo 'ruleset carregado'"
|
||||
echo
|
||||
|
||||
bold "# o que o pf entendeu"
|
||||
p0 "/opt/pf/pfctl -sr"
|
||||
p0 "/opt/pf/pfctl -s Tables"
|
||||
p0 "/opt/pf/pfctl -t trusted -T show"
|
||||
echo
|
||||
|
||||
bold "# trafego permitido: passa e cria estado"
|
||||
vmc "ping -c2 -W2 $SRV_IP | tail -3"
|
||||
p0 "/opt/pf/pfctl -ss | head -5"
|
||||
echo
|
||||
|
||||
bold "# a mesma regra com 'block drop' bloqueia de verdade"
|
||||
cat > /tmp/sc-block.conf <<CONF
|
||||
set block-policy return
|
||||
table <trusted> { 10.0.1.0/24 }
|
||||
block drop in quick on ingress proto icmp from <trusted>
|
||||
pass in quick
|
||||
pass out quick
|
||||
CONF
|
||||
put /tmp/sc-block.conf >/dev/null
|
||||
p0 "/opt/pf/pfctl -f /tmp/sc-block.conf && echo 'ruleset de bloqueio carregado'"
|
||||
vmc "ping -c2 -W2 $SRV_IP | tail -3"
|
||||
p0 "/opt/pf/pfctl -sr -vv | head -4"
|
||||
echo
|
||||
|
||||
bold "# anchors: regras aninhadas, como no OpenBSD"
|
||||
p0 "cat > /tmp/sc-anchor.conf <<'EOF'
|
||||
pass in quick on ingress proto icmp from 10.0.1.10 to 10.0.2.20 keep state
|
||||
pass in quick
|
||||
pass out quick
|
||||
EOF"
|
||||
p0 "/opt/pf/pfctl -a demo -f /tmp/sc-anchor.conf && echo 'ruleset do anchor carregado'"
|
||||
p0 "/opt/pf/pfctl -a demo -sr"
|
||||
p0 "cat > /tmp/sc-main.conf <<'EOF'
|
||||
anchor \"demo\"
|
||||
pass in quick on ingress proto icmp keep state
|
||||
pass out quick on egress proto icmp keep state
|
||||
EOF"
|
||||
p0 "/opt/pf/pfctl -f /tmp/sc-main.conf && echo 'ruleset principal com anchor carregado'"
|
||||
p0 "/opt/pf/pfctl -sr"
|
||||
echo
|
||||
|
||||
bold "# voltando ao ruleset com estado"
|
||||
p0 "/opt/pf/pfctl -f /tmp/sc-regras.conf && echo 'ruleset stateful restaurado'"
|
||||
vmc "ping -c2 -W2 $SRV_IP | tail -2"
|
||||
green " tabelas, anchors, quick, keep state, block drop: todos no lugar"
|
||||
Reference in new issue
Block a user