# Firewall a zóny

Firewall rozhoduje, který provoz smí projít. Zní to jednoduše a v principu to jednoduché je — komplikované je to jen tím, že každý výrobce tomu říká jinak.

## Stavovost

Moderní firewall si pamatuje, jaká spojení jsou otevřená. Když povolíš odchozí požadavek, odpověď na něj se propustí automaticky.

To vysvětluje, proč doma vystačíš s velmi malou sadou pravidel. Nemusíš psát „povol odpovědi z webserverů" — firewall ví, že jsi si o ně řekl.

Stavy, které se v pravidlech objevují:

- **NEW** — první paket nového spojení
- **ESTABLISHED** — patří k už otevřenému spojení
- **RELATED** — souvisí s otevřeným spojením (třeba datové spojení FTP)
- **INVALID** — nedává smysl, obvykle se zahazuje

Základní kostra každého firewallu je pak: povol ESTABLISHED a RELATED, zahoď INVALID, a pak řeš NEW podle svých pravidel.

Souvislosti s TCP jsou v [porty a spojení](Porty-a-spojeni).

## Směr, ne jen adresa

Pravidlo musí vždycky říct, kterým směrem provoz teče. Nejčastější kategorie:

| Směr | Co to je | Výchozí nastavení |
|---|---|---|
| Internet → dovnitř | někdo zvenku se hlásí k tobě | zakázat |
| Dovnitř → internet | tvoje zařízení jde ven | povolit |
| VLAN → VLAN | mezi tvými sítěmi | zakázat, povolovat výjimky |
| → do routeru samotného | správa, DNS, DHCP | opatrně |

Ta poslední kategorie se přehlíží. Provoz **na** router (jeho webové rozhraní, SSH, DNS) je něco jiného než provoz **přes** router. V iptables je to rozdíl mezi řetězcem INPUT a FORWARD, v UniFi mezi „Local" a „LAN In".

Když si chceš zakázat správu routeru z IoT sítě, potřebuješ pravidlo té první kategorie. Zakázání provozu mezi VLANami na to nestačí.

## Pořadí rozhoduje

Pravidla se vyhodnocují **shora dolů a první shoda vyhrává**. Zbytek se už nečte.

To znamená, že tohle pořadí je nefunkční:

```
1. zakázat IoT → všude
2. povolit IoT → DNS server
```

Druhé pravidlo se nikdy nepoužije. Musí být první.

Praktické doporučení: výjimky nahoru, obecné zákazy dolů, a na konci výchozí politika.

## Zóny

Novější systémy včetně UniFi 9 opustily seznam pravidel ve prospěch **zón**. Sítě zařadíš do skupin a pak popisuješ vztahy mezi skupinami, ne mezi jednotlivými sítěmi.

Typické zóny: `Internal` (hlavní síť), `IoT`, `Guest`, `Cameras`, `VPN`, `External` (internet), `Gateway` (router sám).

Výhoda je v tom, že matice zón se čte na jeden pohled, zatímco třicet řádků pravidel ne. Když přidáš novou síť, zařadíš ji do zóny a pravidla platí automaticky.

Pokud přecházíš ze starého rozhraní, počítej s tím, že se logika pravidel převede, ale ne vždy elegantně. Vyplatí se to po migraci projít ručně.

## Návrh pro domácnost

Výchozí bod, který se dá použít skoro všude:

```
1. Povol ESTABLISHED + RELATED (odpovědi na vlastní požadavky)
2. Zahoď INVALID
3. Povol Hlavní → kamkoliv
4. Povol Hlavní → správa zařízení
5. Zakaž IoT → jakákoliv vnitřní síť
6. Zakaž Kamery → internet
7. Zakaž Hosté → jakákoliv vnitřní síť
8. Zakaž cokoliv → webové rozhraní routeru, kromě Hlavní
9. Výchozí: zakázat mezi sítěmi, povolit ven
```

Kamery bez přístupu na internet je bod, který stojí za zmínku. Většina levných kamer volá domů. Když jim to zakážeš, přestane fungovat výrobcova aplikace, ale kamera i nadále nahrává na tvůj NVR. To je obvykle přesně to, co chceš.

## Logování

Zapni logování na zahazovacích pravidlech, aspoň dočasně. Bez toho hádáš.

Zároveň to nenech zapnuté napořád na pravidlu, které zahazuje provoz z internetu — zaplníš si úložiště za pár dní. Internet je hlučný a někdo ti klepe na dveře každou minutu.

## Jak si to ověřit

Konfigurace, kterou jsi neověřil, je jen názor.

**Zevnitř:** zkus se z IoT VLANy dostat na NAS. Nemělo by to jít.

```
nmap -Pn 192.168.10.20
```

**Zvenku:** z mobilu na datech zkus, co je vidět.

```
nmap -Pn tvoje.verejna.adresa
```

Test z domácí sítě na vlastní veřejnou adresu je nespolehlivý, protože ne každý router umí hairpin NAT. Viz [NAT](NAT-a-port-forwarding).

**Nezapomeň na IPv6.** Ve starším rozhraní UniFi jsou pravidla pro IPv4 a IPv6 v oddělených záložkách a je snadné zajistit síť jen napůl. Prověř obojí.

## Co firewall neumí

Nevidí do šifrovaného provozu. Když je něco v HTTPS, firewall vidí cílovou adresu a port, ne obsah. Filtrování podle obsahu vyžaduje buď [reverse proxy](Vzdaleny-pristup), nebo rozbalování TLS, což doma dělat nechceš.

Nechrání proti tomu, co si sám pustíš dovnitř. Malware ve stažené příloze si spojení ven naváže sám a firewall mu ochotně pomůže, protože odchozí provoz je povolený.

Nezastaví provoz, který k němu nedorazí. Dvě zařízení ve stejné VLANě spolu mluví přímo přes switch. Proto [VLANy](VLANy).
