IPv6 blokavimas siekiant apsaugoti WireGuard sugadina mazgą
Taisyklė, atmetanti visą IPv6, pašalina ir kaimynų paiešką, ir Packet Too Big. Atskirkite tris atsakomybes, tada patikrinkite, ar mazgas veikia.
Tikslas pagrįstas: šio įrenginio paslaugas turėtų pasiekti tik tunelio naudotojai. Įgyvendinimas, kurio griebiamasi, yra IPv6 įvesties grandinė, atmetanti viską, išskyrus WireGuard, ir kartu atmetanti srautą, kuris laiko mazgą prijungtą prie jo paties jungties. Kaimynų paieška ir maršruto priežiūros pranešimai nėra prieiga prie paslaugų, o juos pašalinus gaunamas įrenginys, nepasiekiamas dėl priežasčių, nesusijusių su jūsų politika. Tunelis pakyla, paslaugos teisingai apribotos, o jungtyje niekas kitas neveikia.
Trys atsakomybės, vienas taisyklių rinkinys
Pirmoji atsakomybė – išorinio tinklo darbas: mazgas turi likti savo jungtyje, išspręsti kaimynus ir žinoti tos jungties maršruto ribas. Antroji – šifruotas klausytojas, priimantis UDP jūsų pasirinktu adresu ir prievadu. Trečioji – iššifruotų paslaugų, kurias turi pasiekti tunelio naudotojai, rinkinys.
Tai trys skirtingos politikos, ir tik antroji bei trečioji susijusios su VPN. Taisyklių rinkinys, kuris jas laiko viena, paveldi gedimo būdą, kai programos ribos griežtinimas tyliai nutraukia mazgo prisijungimą.
Laikykite jas atskirose grandinėse arba bent atskiruose komentaruose, kad kitas žmogus matytų, kuri eilutė dėl ko egzistuoja.
Ką ICMPv6 daro mazgui
IPv6 daug kuo labiau pasikliauja ICMPv6 nei aids. Kaimyno užklausa ir skelbimas pakeičia ARP ir yra būtini vietiniam pristatymui. Packet Too Big perneša maršruto MTU informaciją, o jos nepaisymas sukelia perdavimus, kurie stringa dideliais paketais. Maršrutizatoriaus skelbimai perneša numatytąjį maršrutą ir prefikso informaciją, kai jungtis naudoja automatinę konfigūraciją.
RFC 4890 atskiria pranešimus, kuriuos mazgo filtras privalo praleisti, nuo tų, kurie yra administracinis pasirinkimas, ir tai daro mazgo skyriuje, kuris skiriasi nuo taisyklių maršrutizatoriui, persiunčiančiam tarp tinklų. Skaitant tik persiuntimo skyrių gaunama įvesties politika, per griežta saugomam mazgui.
Praktinė taisyklė – leisti būtinuosius klaidų ir konfigūracijos pranešimus tame sąsajoje, kuriam jų reikia, apribotus pagal tipą ir šaltinį ten, kur platforma leidžia, ir aiškiai nuspręsti dėl likusių.
Pakeitus visa tai bendru ICMPv6 leidimu, prieinamumo problema išsprendžiama, bet filtravimo atsisakoma. Pakeitus jį bendru atmetimu, filtravimo problema išsprendžiama, bet mazgo atsisakoma.
Pirmiausia įleiskite tunelį, paskui paslaugą
Priimkite WireGuard transportą numatytuoju išoriniu adresu ir UDP prievadu, o grįžtamąjį srautą priimkite per jungčių sekimą. Tada leiskite programų paslaugoms praeiti per tunelio sąsają iš šaltinių, kuriems tikrai suteikiate teisę.
Išorinio UDP prievado leidimas nesuteikia teisės į jo viduje esančias iššifruotas užklausas. Būtent šis skirtumas yra visa priežastis, kodėl paslaugų taisyklėse atsiranda tunelio sąsaja.
Skaitkite taisyklių rinkinį tokį, koks jis yra, o ne tokį, kokį aprašo failas:
sudo nft list ruleset
ip -6 addr show
ip -6 route show default
Klausytojas fiziniame adrese yra atskiras tos pačios paslaugos tunelio adresu eksponavimas. Jei įrenginys taip pat persiunčia srautą kitam įrenginiui, tai persiuntimo grandinės sprendimas, o ne ši įvesties politika, ir jam reikia savo pagrindimo.
Išbandykite jungtį, o ne tik tunelį
Veikiantis tunelis po pakeitimo įrodo mažiau, nei atrodo, nes esamas kaimyno įrašas ir užmegztas ryšys gali paslėpti valdymo pranešimą, kurį politika dabar atmeta.
Patikrinkite prisijungimą tiesiogiai, tada patikrinkite, ar išskirtas maršrutas vis dar nepavyksta:
ip -6 neigh show
ping -6 -c 3 2001:db8:1::1
sudo nft -c -f /etc/nftables.conf
Kaimynų lentelė, kuri po perkrovimo lieka pilna, yra ženklas, kad paieška dar veikia. Lentelė, kuri ištuštėja ir niekada vėl nepasipildo, yra ženklas, kad ją išfiltravote. Trečioji komanda patikrina taisyklių rinkinio sintaksę jo nepritaikydama, ką verta padaryti, kol dar turite sesiją.
Atkurkite mazgą, iš kurio užsirakinote
Prieš keisdami ugniasienės taisykles, kurios neša jūsų pačių administravimo sesiją, turėkite antrą kanalą: konsolę, serijinį ryšį arba suplanuotą atsukimą, kuris pašalina naujas taisykles, jei jo neatšauksite.
Jei pakeitimas vis dėlto užrakina jus, atkūrimas vyksta tuo kanalu, o ne tinklu, kurį ką tik pašalinote. Atkurkite ankstesnį taisyklių rinkinį iš išsaugotos kopijos, patvirtinkite, kad mazgas vėl pasiekiamas, ir tik tada taikykite numatytą politiką mažesnėmis dalimis.
Galutinė politika nėra universali. Adresavimas, maršrutizavimas ir ugniasienės įgyvendinimas yra diegimo įvestys, bet riba visur ta pati: atmeskite nepageidaujamą programų prieigą, išlaikydami valdymo srautą, kuris neša leidžiamą tunelį.