Proč domácí NAT nechrání vaše rozhraní VPN
Domácí router přeposílá tunel, ale hostitel posuzuje dešifrovaný paket. Čtěte naslouchač, vnitřní cestu a vstupní politiku odděleně.
Notebooky za domácím routerem bez přesměrování portů stále přijímají SSH připojení, která přicházejí přes VPN. To není rozpor, protože dva různé stroje posuzují dva různé pakety. Router přeposílá šifrovaný přenos a hostitel rozhoduje, co udělat s dešifrovaným paketem, který dorazí na jeho tunelové rozhraní. Držet tato dvě rozhodnutí oddělená je celé cvičení.
Router přeposílá tunel, hostitel posuzuje paket
Načrtněte cestu od vzdáleného zdroje ke službě, než se podíváte na jediné pravidlo. Vnější část je přenos VPN, který obsluhuje router a brána. Vnitřní část začíná ve chvíli, kdy koncový bod strhne tunelovou vrstvu a hostitel obdrží paket adresovaný jeho VPN adrese.
Spojte tyto dvě části a router získá zásluhu za rozhodnutí, které dělá hostitel. Stránka přesměrování portů nebo log routeru popisují jen vnější konverzace a žádný z nich neříká, jaký dešifrovaný provoz hostitel přijme. Hostitel uplatňuje vlastní vstupní politiku na vnitřní paket stejně jako na každý paket, který dorazí na rozhraní. Právě v této politice se otázka vystavení skutečně rozhoduje.
Zástupný naslouchač není veřejná služba
V Linuxu vazba na INADDR_ANY znamená každou lokální adresu, takže služba může odpovídat na tunelovém rozhraní, které nikdy nepojmenovala. Referenční příručka IP socketů tuto vazbu popisuje a stojí za přečtení, než ze seznamu naslouchačů vyvodíte závěry. Zástupný záznam je fakt o socketu, ne tvrzení o dosažitelnosti.
Dva řádky níže jsou tatáž služba ve dvou různých vazbách a rozdíl je celá odpověď na to, zda rozhraní záleží. Přečtěte, na které adrese socket sedí, dřív než cokoli jiného.
ss -lntp "sport = :22"
LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=812,fd=3))
LISTEN 0 4096 10.8.0.6:22 0.0.0.0:* users:(("sshd",pid=812,fd=4))
Pojmenujte uspořádání, které by se na port mohlo dostat
Tři uspořádání dostanou paket na toto rozhraní a mají různé vlastníky. Pojmenování toho správného rozhoduje o tom, kdo musí změnit politiku.
| Arrangement | What reaches the port | Where the decision lives |
|---|---|---|
| Another permitted VPN peer | A packet from the same tunnel subnet | Gateway forwarding policy and host input rules |
| A deliberate public forward | Traffic the gateway publishes on purpose | Gateway service definition |
| A subnet routed behind the gateway | Client traffic from the far side | Gateway route and host input rules |
Výsledek prohlížeče s veřejnou výstupní adresou neříká nic o žádném ze tří, protože popisuje, jak odchází výstupní provoz, nikoli co je povoleno vstupnímu provozu. Postupujte zpětně od naslouchače a zdrojové adresy v logu služby. Je-li zdrojem jiný peer tunelu, zajímavým dokumentem je politika brány. Je-li to přeložená adresa, najděte překlad dřív, než změníte pravidlo.
Omezit službu na zamýšlenou cestu
Pokud je SSH potřeba jen z řídicí cesty, zapište tuto cestu jako rozsah zdroje plus rozhraní. Poté omezte vstupní pravidla hostitele podle rozhraní, cíle a zdroje, nikoli podle názvu sítě, protože název, který vypadá soukromě, může znamenat jakoukoli adresu. Nechte trasu pro člověka, který vyřeší příští problém.
nft add rule inet filter input iifname "tun0" ip saddr 10.8.0.0/24 tcp dport 22 accept
nft list chain inet filter input
Pravidlo, které pojmenuje tunelové rozhraní a řídicí rozsah, vyjadřuje záměr na jednom místě. Porovnejte ho s pravidlem napsaným pro síť Wi-Fi, které o dešifrovaném tunelovém provozu neříká nic. Když se obě vrstvy neshodují, politikou, kterou paket potká, je politika hostitele.
Nechte přihlašování a záplatování přesně tam, kde jsou; dosáhnout portu nikdy nebylo totéž jako smět ho používat. Zaznamenejte rodinu adres a čas u každého neznámého zdroje a vyšetřete to dřív, než obviníte funkci nebo zranitelnost. Pravidlo, které propustí každý peer tunelu, je jiný design než to, které propustí řídicí podsíť, a žádný řádek logu neřekne, který byl zamýšlen.
Přijměte opravu s jedním úspěchem a jedním odmítnutím
Dokažte obě poloviny: jedno schválené připojení uspěje a jedna vyloučená cesta je odmítnuta. Odmítnutí je polovina, kterou lidé přeskakují, a je to ta, která ukazuje, že pravidlo pracuje, místo aby stálo vedle povolujícího výchozího nastavení. Testujte z vyloučené strany, místo abyste o tom uvažovali.
Po opětovném připojení pár zopakujte, protože tunel, který se vrátí s jiným názvem rozhraní, může tiše obejít pravidlo vázané na starý. Hranice, na které záleží, je ta, kterou hostitel uplatňuje na pakety, které skutečně přijímá.