Notebooky za domácim routerom bez presmerovania portov stále prijímajú SSH pripojenia, ktoré prichádzajú cez VPN. Nie je to rozpor, pretože dva rôzne zariadenia posudzujú dva rôzne pakety. Router preposiela šifrovaný prenos a hostiteľ rozhoduje, čo urobiť s dešifrovaným paketom, ktorý dorazí na jeho tunelové rozhranie. Držať tieto dve rozhodnutia oddelené je celé cvičenie.

Router preposiela tunel, hostiteľ posudzuje paket

Načrtnite cestu od vzdialeného zdroja k službe, skôr než sa pozriete na jediné pravidlo. Vonkajšia časť je prenos VPN, ktorý obsluhuje router a brána. Vnútorná časť sa začína, keď koncový bod stiahne tunelovú vrstvu a hostiteľ dostane paket adresovaný jeho VPN adrese.

Spojte tieto dve časti a router získa zásluhu za rozhodnutie, ktoré robí hostiteľ. Stránka presmerovania portov alebo log routera opisujú len vonkajšie konverzácie a ani jeden nehovorí, akú dešifrovanú prevádzku hostiteľ prijme. Hostiteľ uplatňuje vlastnú vstupnú politiku na vnútorný paket, rovnako ako na každý paket, ktorý dorazí na rozhranie. Práve v tejto politike sa otázka vystavenia skutočne rozhoduje.

Zástupný naslúchač nie je verejná služba

V Linuxe väzba na INADDR_ANY znamená každú lokálnu adresu, takže služba môže odpovedať na tunelovom rozhraní, ktoré nikdy nepomenovala. Referenčná príručka IP socketov túto väzbu opisuje a oplatí sa ju prečítať pred vyvodzovaním záverov zo zoznamu naslúchačov. Zástupný záznam je fakt o sockete, nie tvrdenie o dosiahnuteľnosti.

Dva riadky nižšie sú tá istá služba v dvoch rôznych väzbách a rozdiel je celá odpoveď na to, či rozhranie záleží. Prečítajte si, na ktorej adrese socket sedí, skôr než čokoľvek iné.

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))

Pomenujte usporiadanie, ktoré by sa na port mohlo dostať

Tri usporiadania dostanú paket na toto rozhranie a majú rôznych vlastníkov. Pomenovanie toho správneho rozhoduje o tom, kto musí zmeniť politiku.

ArrangementWhat reaches the portWhere the decision lives
Another permitted VPN peerA packet from the same tunnel subnetGateway forwarding policy and host input rules
A deliberate public forwardTraffic the gateway publishes on purposeGateway service definition
A subnet routed behind the gatewayClient traffic from the far sideGateway route and host input rules

Výsledok prehliadača s verejnou výstupnou adresou nehovorí nič o žiadnom z troch, pretože opisuje, ako odchádza výstupná prevádzka, nie čo je povolené vstupnej prevádzke. Postupujte spätne od naslúchača a zdrojovej adresy v logu služby. Ak je zdrojom iný peer tunela, zaujímavým dokumentom je politika brány. Ak je to preložená adresa, nájdite preklad, skôr než zmeníte pravidlo.

Obmedzte službu na zamýšľanú cestu

Ak je SSH potrebný len z riadiacej cesty, zapíšte tú cestu ako rozsah zdroja plus rozhranie. Potom obmedzte vstupné pravidlá hostiteľa podľa rozhrania, cieľa a zdroja, nie podľa názvu siete, pretože názov, ktorý vyzerá súkromne, môže znamenať akúkoľvek adresu. Nechajte trasu pre človeka, ktorý vyrieši ďalší 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, ktoré pomenúva tunelové rozhranie a riadiaci rozsah, vyjadruje zámer na jednom mieste. Porovnajte ho s pravidlom napísaným pre sieť Wi-Fi, ktoré o dešifrovanej tunelovej prevádzke nehovorí nič. Keď sa obe vrstvy nezhodujú, politikou, ktorú paket stretne, je politika hostiteľa.

Nechajte prihlasovanie a záplaty presne tam, kde sú; dosiahnuť port nikdy nebolo to isté ako smieť ho používať. Zaznamenajte rodinu adries a čas pre každý neznámy zdroj a vyšetrite to skôr, než obviníte funkciu alebo zraniteľnosť. Pravidlo, ktoré prepúšťa každý peer tunela, je iný návrh ako to, ktoré prepúšťa riadiacu podsiet, a žiadny riadok logu nepovie, ktorý bol zamýšľaný.

Prijmite opravu s jedným úspechom a jedným odmietnutím

Dokážte obe polovice: jedno schválené pripojenie uspeje a jedna vylúčená cesta je odmietnutá. Odmietnutie je polovica, ktorú ľudia preskakujú, a je to tá, ktorá ukazuje, že pravidlo pracuje, namiesto toho aby stálo vedľa povoľujúceho predvoleného nastavenia. Testujte z vylúčenej strany, namiesto toho aby ste o tom uvažovali.

Po opätovnom pripojení pár zopakujte, pretože tunel, ktorý sa vráti s iným názvom rozhrania, môže ticho obísť pravidlo viazané na starý. Hranica, na ktorej záleží, je tá, ktorú hostiteľ uplatňuje na pakety, ktoré skutočne prijíma.

Súvisiace články