Kodėl namų NAT neapsaugo jūsų VPN sąsajos
Namų maršrutizatorius persiunčia tunelį, bet prieglobstis sprendžia apie iššifruotą paketą. Skaitykite klausytoją, vidinį kelią ir įvesties politiką atskirai.
Nešiojamieji kompiuteriai už namų maršrutizatoriaus be prievadų persiuntimo vis dar priima SSH ryšius, atvykstančius per VPN. Tai ne prieštaravimas, nes du skirtingi įrenginiai sprendžia apie du skirtingus paketus. Maršrutizatorius persiunčia užšifruotą transportą, o prieglobstis nusprendžia, ką daryti su iššifruotu paketu, atvykstančiu į jo tunelio sąsają. Šių dviejų sprendimų atskyrimas ir yra visas pratimas.
Maršrutizatorius persiunčia tunelį, prieglobstis sprendžia apie paketą
Nubrėžkite kelią nuo tolimo šaltinio iki paslaugos prieš žiūrėdami į vieną taisyklę. Išorinė dalis yra VPN transportas, kurį tvarko maršrutizatorius ir tinklų sietuvas. Vidinė dalis prasideda, kai galinis taškas nuima tunelio sluoksnį ir prieglobstis gauna paketą, adresuotą jo VPN adresui.
Sujunkite šias dvi dalis ir maršrutizatorius gaus nuopelnus už sprendimą, kurį priima prieglobstis. Prievadų persiuntimo puslapis arba maršrutizatoriaus žurnalas aprašo tik išorinius pokalbius, ir nė vienas nesako, kokį iššifruotą srautą priims prieglobstis. Prieglobstis taiko savo įvesties politiką vidiniam paketui, kaip ir bet kuriam paketui, atvykstančiam į sąsają. Būtent šioje politikoje iš tikrųjų sprendžiamas poveikio klausimas.
Pakaitinis klausytojas nėra viešoji paslauga
Linux sistemoje prisirišimas prie INADDR_ANY reiškia kiekvieną vietinį adresą, todėl paslauga gali atsakyti tunelio sąsajoje, kurios niekada neįvardijo. IP lizdo nuoroda aprašo tą prisirišimą, ir verta ją perskaityti prieš darant išvadas iš klausytojų sąrašo. Pakaitinis įrašas yra faktas apie lizdą, o ne teiginys apie pasiekiamumą.
Dvi eilutės žemiau yra ta pati paslauga dviejuose skirtinguose prisirišimuose, o skirtumas yra visas atsakymas į klausimą, ar sąsaja svarbi. Pirmiausia perskaitykite, kuriame adrese yra lizdas.
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))
Įvardykite išdėstymą, kuris galėtų pasiekti prievadą
Trys išdėstymai padeda paketą į tą sąsają, ir jie turi skirtingus savininkus. Tinkamo įvardijimas nusprendžia, kas turi pakeisti politiką.
| 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 |
Naršyklės rezultatas, rodantis viešą išėjimo adresą, nieko nesako apie nė vieną iš trijų, nes jis aprašo, kaip išeinantis srautas išeina, o ne kas leidžiama įeinamam srautui. Dirbkite atgal nuo klausytojo ir šaltinio adreso paslaugos žurnale. Jei šaltinis yra kitas tunelio peer, tinklų sietuvo politika yra įdomus dokumentas. Jei tai išverstas adresas, raskite vertimą prieš keisdami taisyklę.
Apribokite paslaugą numatytu keliu
Jei SSH reikia tik iš administravimo kelio, užrašykite tą kelią kaip šaltinio diapazoną ir sąsają. Tada apribokite prieglobsčio įvesties taisykles pagal sąsają, paskirties vietą ir šaltinį, o ne pagal tinklo pavadinimą, nes pavadinimas, atrodantis privatus, gali reikšti bet kurį adresą. Palikite maršrutą žmogui, kuris išspręs kitą problemą.
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
Taisyklė, įvardijanti tunelio sąsają ir administravimo diapazoną, išreiškia ketinimą vienoje vietoje. Palyginkite ją su taisykle, parašyta Wi-Fi tinklui, kuri nieko nesako apie iššifruotą tunelio srautą. Kai du sluoksniai nesutaria, prieglobsčio politika yra ta, kurią paketas sutinka.
Palikite prisijungimus ir pataisymus ten, kur jie yra; pasiekti prievadą niekada nebuvo tas pats, kas turėti leidimą juo naudotis. Užrašykite adresų šeimą ir laiką kiekvienam nepažįstamam šaltiniui ir ištirkite prieš kaltindami funkciją ar pažeidžiamumą. Taisyklė, priimanti kiekvieną tunelio peer, yra kitokia konstrukcija nei ta, kuri priima administravimo potinklį, ir jokia žurnalo eilutė nepasakys, kuri buvo numatyta.
Priimkite pataisymą su viena sėkme ir vienu atmetimu
Įrodykite abi puses: vienas patvirtintas ryšys pavyksta, o vienas atmestas kelias atmetamas. Atmetimas yra ta pusė, kurią žmonės praleidžia, ir būtent ji rodo, kad taisyklė dirba, o ne stovi šalia leidžiančios numatytosios reikšmės. Testuokite iš atmestos pusės, o ne samprotaukite apie tai.
Pakartokite porą po prisijungimo iš naujo, nes tunelis, grįžtantis su kitu sąsajos pavadinimu, gali tyliai apeiti taisyklę, susietą su senąja. Riba, kuri svarbi, yra ta, kurią prieglobstis taiko paketams, kuriuos iš tikrųjų gauna.