Files
bf-infra/routeros/tp5-e5-main-iot.rsc

51 lines
2.8 KiB
Plaintext

# TP5 Etappe 5 — MAIN -> IOT aufmachen.
#
# BEFUND (User-Meldung 2026-08-19: Brother P750W und die Shellys aus VLAN10
# nicht erreichbar). Der Deny-by-default aus Etappe 3 arbeitet korrekt — es
# gab schlicht nie eine vlan10->vlan30-Zeile. Offen waren nur MAIN->MEDIA,
# MAIN->INFRA, MAIN->MGMT; IOT fehlte in der Liste.
#
# QUELLE: /opt/tp5-syslog/log/tp5-would-drop.log auf dem Docker-LXC,
# gefiltert auf "in:vlan10 out:vlan30". Aggregiert:
# 497 ICMP (Ping auf .30.5 und die Shellys)
# 489 udp 5353 mDNS
# 489 udp 137 NetBIOS
# 237 udp 3722 Apple-Continuity -> .30.201
# 40 udp 161 SNMP -> 10.40.30.5 (Brother P750W)
# Quellen: .10.183 (1596, Subnetz-Sweep), .10.180 (118), .10.82 (38).
#
# MERKREGEL AUS DEM LOG: der Drucker faellt mit udp/161 auf, NICHT mit 631.
# macOS fragt zuerst den SNMP-Status ab und bricht ab, bevor es zu IPP kommt.
# Wer nur 631 whitelistet, repariert nichts.
#
# ENTSCHEID (User, 2026-08-19): voll einbahnig, kein Portfilter.
# - MAIN ist das vertrauenswuerdige VLAN und steht zu INFRA/MEDIA/MGMT
# ohnehin schon vollstaendig offen — INFRA haelt NAS, Proxmox und
# Nautobot, also deutlich mehr Wert als die Shellys. MAIN->IOT eng zu
# filtern waere an dieser Stelle Symbolik, kostet aber bei jedem neuen
# IoT-Geraet eine Runde Fehlersuche.
# - Der Sicherheitswert der Segmentierung sitzt in der GEGENRICHTUNG:
# IOT->MAIN bekommt bewusst KEIN accept und bleibt gedroppt. Antworten
# auf Anfragen aus MAIN laufen ueber "defconf: accept est,rel,untracked",
# dafuer braucht es keine Regel.
#
# NEBENWIRKUNG, bewusst in Kauf genommen: der Subnetz-Sweep von .10.183
# (137/5353 an alle 254 Adressen) laeuft ab jetzt durch, statt im Drop-Log
# aufzulaufen. Betriebsneutral, aber der Log wird an dieser Stelle leiser —
# nicht mit "Problem geloest" verwechseln.
#
# INPUT-KETTE: unveraendert. "TP5-E4: MAIN->core admin" und
# "TP5: mDNS in vlan30" stehen bereits, der Core braucht nichts.
#
# BLOCKIERT NICHTS: ausschliesslich action=accept.
#
# Push: python3 nautobot/gc-manual-plan.py --device crs326-core \
# --commands-file routeros/tp5-e5-main-iot.rsc \
# --change-id TP5-E5-MAIN-IOT --deploy \
# --assert '/ip/firewall/filter?comment=TP5-E5: MAIN->IOT|count=1'
# ---------------------------------------------------------------------------
# 1) MAIN -> IOT, einbahnig. place-before die Log-Regel, damit sie vor dem
# Drop greift und der Log weiter zeigt, was uebrig bleibt.
:do { :if ([:len [/ip firewall filter find comment="TP5-E5: MAIN->IOT"]] = 0) do={ /ip firewall filter add chain=forward action=accept in-interface=vlan10 out-interface=vlan30 comment="TP5-E5: MAIN->IOT" place-before=[/ip firewall filter find comment="TP5: log-only, Vorstufe zum deny-by-default"] } } on-error={ :log info "tp5e5: 01 MAIN->IOT warf" }