Přeskočit obsah

pfSense Firewall Pravidla

Tato dokumentace popisuje skutečnou konfiguraci firewall pravidel v pfSense podle zálohy z 5.2.2026.

Zdrojová data

Záloha: pfSense config-pfSense.marada.lan-20260205145402.xml
Systém: pfSense CE 2.8.1 na marada.lan, Timezone: Europe/Prague

REST API

Na pfSense je nainstalován balíček pfSense-pkg-RESTAPI (v2.7.3) pro programatický přístup.

Parametr Hodnota
URL http://192.168.20.1/api/v2/
Autentizace API Key (SHA-512) + Local Database
API Key PFSENSE_API_KEY v .env
MCP server pfsense v .mcp.json (gensecaihq/pfsense-mcp-server)
Swagger docs pfSense webUI → System → REST API → Documentation

Klíčové endpointy:

  • GET /api/v2/status/system — systémový stav (uptime, CPU, RAM)
  • GET /api/v2/diagnostics/arp_table — ARP tabulka všech VLANů
  • GET /api/v2/services/dhcp_server?id=lan — DHCP konfigurace a statické mapování (per interface: lan, opt1opt5)
  • GET /api/v2/firewall/rules — firewall pravidla
  • GET /api/v2/system/dns — DNS konfigurace
  • GET /api/v2/auth/keys — správa API klíčů

[!WARNING] Balíček se po upgradu pfSense automaticky smaže. Po každém upgradu přeinstalovat: pkg-static add https://github.com/jaredhendrickson13/pfsense-api/releases/latest/download/pfSense-<verze>-pkg-RESTAPI.pkg

Přehled Interfaces

Interface VLAN IP Adresa Subnet Popis
WAN 10 DHCP - Internet (ISP)
LAN 1 192.168.20.1 /24 Servery, Trusted zařízení
GUEST 30 (opt1) 192.168.30.1 /24 Wi-Fi pro hosty
IOT 40 (opt2) 192.168.40.1 /24 Chytrá domácnost
MEDIA 50 (opt3) 192.168.50.1 /24 TV, Audio
SECURITY 60 (opt4) 192.168.60.1 /24 Kamery, NVR
STAGING 1 (opt5) 192.168.1.1 /24 Testovací síť

Firewall Rules (Detailně)

LAN Interface (VLAN 1 / 192.168.20.0/24)

# Type Protocol Source Destination Port Popis
1 ✅ pass any lan opt5 (STAGING) - TEMP Allow LAN to Staging
2 ✅ pass any 192.168.20.7 (HA) 192.168.40.0/24 - Allow HA to All IoT Devices
3 ✅ pass any lan any - Default allow LAN to any rule
4 ✅ pass any (IPv6) lan any - Default allow LAN IPv6 to any rule

Strategie: LAN je trusted síť - má plný přístup kamkoliv (internet, ostatní VLANy).

Specifické pravidlo: Pravidlo #2 (Allow HA to All IoT Devices) je historický artefakt — HA má dnes přímou L2 přítomnost v IoT VLAN přes druhou síťovku (192.168.40.7), takže tímto pravidlem v praxi neprochází žádný traffic (pf state creations: 0). Ponecháno jako záloha pro případ, že by druhá NIC vypadla.

Dual-homed servery na LAN:

Server NIC 1 (LAN, primary) NIC 2 (IoT VLAN 40) Účel IoT rozhraní
Home Assistant enp0s18 192.168.20.7 enp0s19 192.168.40.7 Přímé ovládání IoT zařízení same-VLAN
debian-services 192.168.20.20 192.168.40.20 CUPS tiskový server → Canon GX7040

Bezpečnost: Oba servery mají ip_forward=1 (vyžaduje Docker/supervisor), ale iptables FORWARD chain má policy DROP — cross-VLAN routing přes tyto servery neprojde. Veškerý inter-VLAN provoz jde výhradně přes pfSense.

[!CAUTION] HA musí mít LAN NIC jako primary. Pokud se po HA OS upgrade přehodí primary: true na IoT NIC (enp0s19), HA pošle veškerý non-local traffic ze zdroje 192.168.40.7 a pravidlo IoT Block IoT to Internal Networks to zařízne — HA ztratí přístup ke kamerám, doorbell, MEDIA i Proxmoxu. Detaily a postup opravy: Home Assistant — Síťová Topologie. Incident 2026-05-06 v decision_log.md.


Tailscale VPN Interface

# Type Protocol Source Destination Popis
1 ✅ pass any any any Allow Tailscale VPN Full Access

Strategie: Tailscale klienti mají plný přístup do všech sítí (jako by byli na LAN).

Více informací viz VPN dokumentace.


GUEST Interface (VLAN 30 / 192.168.30.0/24)

# Type Protocol Source Destination Port Popis
1 ✅ pass tcp/udp opt1 (self) 53 Allow GUEST DNS to pfSense
2 🚫 block any opt1 Private_Networks - Block Guest to Internal Networks
3 ✅ pass any opt1 any - Allow Guest to Internet

Strategie:

  • ✅ Hosté mají DNS rozlišení přes pfSense
  • 🚫 Hosté nemají přístup do LAN, IoT, Media, Security VLANů
  • ✅ Hosté mají přístup na internet

Bezpečnost: Client Isolation měla by být zapnutá na WiFi AP (viz wifi.md).


IOT Interface (VLAN 40 / 192.168.40.0/24)

# Type Protocol Source Destination Port Popis
1 ✅ pass udp opt2 224.0.0.251 5353 Allow mDNS (Device Discovery)
2 ✅ pass tcp/udp opt2 (self) 53 Allow IOT DNS to pfSense
3 🚫 block any opt2 Private_Networks - Block IoT to Internal Networks
4 ✅ pass any opt2 any - Allow IOT to Internet

Strategie:

  • ✅ IoT zařízení mají plný přístup na internet (pro cloudové služby: Aqara, Shelly, atd.)
  • 🚫 IoT nemá přístup do LAN (192.168.20.0/24) ani jiných VLANů
  • ✅ mDNS povolen pro discovery protokoly (např. HomeKit, Chromecast)
  • ✅ DNS přes pfSense

Výjimky:

  • Home Assistant (192.168.20.7) má přístup do IoT (viz LAN pravidlo #2)
  • debian-services (192.168.40.20) má druhé rozhraní přímo v IoT VLAN — CUPS tiskový server komunikuje s tiskárnou (192.168.40.8) bez cross-VLAN routingu

Bezpečnostní riziko

IoT má internet. Pokud chcete zero-trust přístup, změňte pravidlo #4 na block a přidejte whitelist pro specifická cloudová zařízení.


MEDIA Interface (VLAN 50 / 192.168.50.0/24)

# Type Protocol Source Destination Port Popis
1 ✅ pass tcp/udp opt3 (self) 53 Allow MEDIA DNS to pfSense
2 🚫 block any opt3 Private_Networks - Block MEDIA to Internal Networks
3 ✅ pass any opt3 any - Allow MEDIA to Internet

Strategie:

  • ✅ Media zařízení (Apple TV, HomePod) mají internet
  • 🚫 Media nemá přístup do LAN ani jiných VLANů
  • ✅ DNS přes pfSense

Poznámka: Žádná zařízení momentálně nejsou v této VLAN (podle DHCP).


SECURITY Interface (VLAN 60 / 192.168.60.0/24)

# Type Protocol Source Destination Port Popis
1 ✅ pass udp opt4 (self) 123 Allow Kamery NTP (Time Sync)
2 ✅ pass tcp/udp opt4 (self) 53 Allow Kamery DNS
3 ✅ pass tcp/udp opt4 192.168.20.21 - Allow Kamery to Scrypted (RTSP)
4 🚫 block any opt4 Private_Networks - Block Kamery to LAN

Strategie: Zero Internet Policy 🔒

  • ✅ Kamery mohou synchronizovat čas (NTP)
  • ✅ Kamery mohou používat DNS
  • ✅ Kamery mohou streamovat do Scrypted (192.168.20.21)
  • 🚫 Kamery nemají přístup do LAN
  • 🚫 Kamery nemají internet (implicitní DENY)

Bezpečnost: Kamery jsou zcela izolovány od internetu i LAN sítě. Pouze Scrypted může k nim přistupovat.


Globální Nastavení

DNS Resolver (Unbound)

  • Doména: marada.lan
  • DNS Server: pfSense (192.168.20.1, 192.168.30.1, atd.)
  • Režim: forwarding přes DNS-over-TLS (šifrované, s ověřením certifikátu)
  • Upstream (blokují reklamy a trackery):
  • 94.140.14.14 a 94.140.15.15 — AdGuard DNS Default (dns.adguard-dns.com)
  • 86.54.11.13 — DNS4EU Protective + Ad Blocking (noads.joindns4.eu), nezávislý fallback
  • Unbound mezi upstreamy vybírá podle odezvy a mrtvé automaticky obchází — výpadek AdGuardu dům nepoloží.
  • Když blokování rozbije nějakou stránku: přidat Host Override (Services → DNS Resolver) s reálnou IP domény, nebo dočasně vypnout checkbox Enable Forwarding Mode (Services → DNS Resolver) — resolver se vrátí k přímé rekurzi bez filtru.
  • Lokální overrides (*.marada.name) se resolvují lokálně, forwarding je neovlivňuje.

NAT

Všechny VLANy používají Outbound NAT pro přístup na internet.


Doporučení

1. IoT Internet - Zvážit Hardening

Současný stav: IoT má plný internet.

Doporučení:

🚫 Block opt2 → any (Internet)
✅ Allow 192.168.40.51-53 (Aqara FP2) → Cloud (specific IPs)
✅ Allow 192.168.40.2 (Zigbee) → Cloud (if needed)

2. Odebrat TEMP Pravidlo

Pravidlo "TEMP Allow LAN to Staging" označit jako dočasné - pokud už není potřeba, odstranit.

3. Přidat Logging

Pro kritická block pravidla zapnout logging (diagnostika útoků/problémů).


Diagram Firewall Politiky

graph TD
    Internet((Internet))

    LAN[LAN<br/>192.168.20.0/24<br/>TRUSTED]
    GUEST[GUEST<br/>192.168.30.0/24<br/>ISOLATED]
    IOT[IOT<br/>192.168.40.0/24<br/>RESTRICTED]
    MEDIA[MEDIA<br/>192.168.50.0/24<br/>ISOLATED]
    SEC[SECURITY<br/>192.168.60.0/24<br/>NO INTERNET]
    TS[Tailscale VPN<br/>FULL ACCESS]

    LAN -->|ALLOW| Internet
    LAN -->|ALLOW| IOT
    LAN -->|ALLOW| GUEST
    LAN -->|ALLOW| MEDIA
    LAN -->|ALLOW| SEC

    GUEST -->|ALLOW| Internet
    GUEST -.->|BLOCK| LAN

    IOT -->|ALLOW| Internet
    IOT -.->|BLOCK| LAN

    MEDIA -->|ALLOW| Internet
    MEDIA -.->|BLOCK| LAN

    SEC -->|ALLOW| LAN[Scrypted only]
    SEC -.->|BLOCK| Internet
    SEC -.->|BLOCK| LAN

    TS -->|ALLOW| LAN
    TS -->|ALLOW| IOT
    TS -->|ALLOW| MEDIA
    TS -->|ALLOW| SEC
    TS -->|ALLOW| Internet

Reference

  • pfSense Dokumentace: https://docs.netgate.com/pfsense/en/latest/firewall/
  • Záloha: /docs/files/zalohy/pfSense/config-pfSense.marada.lan-20260205145402.xml