Blokiranje IPv6 radi zaštite WireGuarda ruši host
Pravilo koje odbacuje sav dolazni IPv6 uklanja i otkrivanje susjeda i Packet Too Big. Razdvojite tri odgovornosti pa provjerite da host još radi.
Cilj je razuman: samo korisnici tunela treba da dosegnu usluge na ovom računaru. Rješenje koje ljudi posežu je dolazni lanac IPv6 koji odbacuje sve osim WireGuarda, a time odbacuje i saobraćaj koji drži host priključen na njegovu vlastitu vezu. Otkrivanje susjeda i poruke za održavanje putanje nisu pristup usluzi, i njihovo uklanjanje daje mašinu nedostupnu iz razloga koji nemaju veze s vašom politikom. Tunel se podiže, usluge su ispravno ograničene, i ništa drugo na vezi ne radi.
Tri odgovornosti, jedan skup pravila
Prva odgovornost je rad vanjske mreže: host mora ostati priključen na svoju vezu, razrješavati susjede i učiti granice putanje te veze. Druga je šifrovani slušalac, koji prihvata UDP na adresi i portu koje ste odabrali. Treća je skup dešifrovanih usluga do kojih želite da korisnici tunela dođu.
To su tri različite politike, i samo se druga i treća odnose na VPN. Skup pravila koji ih tretira kao jedno nasljeđuje način otkaza u kojem pooštravanje granice aplikacije tiho lomi priključenost hosta.
Držite ih u odvojenim lancima ili barem odvojenim komentarima, da sljedeća osoba vidi koja linija postoji zbog čega.
Šta ICMPv6 radi za host
IPv6 se oslanja na ICMPv6 za mnogo više od eha. Zahtjev i objava susjeda zamjenjuju ARP i potrebni su za lokalnu dostavu. Packet Too Big nosi informaciju o MTU putanje, a ignorisanje toga daje prenose koji se zaglave na velikim paketima. Objave rutera nose zadanu rutu i informaciju o prefiksu kada veza koristi automatsku konfiguraciju.
RFC 4890 razdvaja poruke koje filtar hosta mora propustiti od onih koje su administrativni izbor, i to u odjeljku za host koji se razlikuje od pravila za ruter koji prosljeđuje između mreža. Čitanje samo odjeljka o prosljeđivanju daje dolaznu politiku koja je prestroga za host koji štiti.
Praktično pravilo je dopustiti osnovne poruke o greškama i konfiguraciji na interfejsu kojem trebaju, ograničene po tipu i izvoru gdje platforma to dozvoljava, i donijeti izričitu odluku o ostalima.
Zamijeniti sve to sveobuhvatnim dopuštanjem ICMPv6 rješava problem dostupnosti i odriče se filtriranja. Zamijeniti ga sveobuhvatnim odbacivanjem rješava problem filtriranja i odriče se hosta.
Pustite tunel, pa uslugu
Prihvatite WireGuard transport na predviđenoj vanjskoj adresi i UDP portu, a povratni saobraćaj prihvatite kroz praćenje veza. Zatim dopustite aplikacijskim uslugama da prođu kroz interfejs tunela, s izvora koje zaista ovlašćujete.
Dopuštenje za vanjski UDP port ne ovlašćuje dešifrovane zahtjeve unutar njega. Ta razlika je cijeli razlog zašto se interfejs tunela pojavljuje u pravilima usluga.
Čitajte skup pravila onakav kakav jeste, a ne kako ga datoteka opisuje:
sudo nft list ruleset
ip -6 addr show
ip -6 route show default
Slušalac na fizičkoj adresi je odvojeno izlaganje od iste usluge na adresi tunela. Ako mašina također prosljeđuje saobraćaj na drugu mašinu, to je odluka lanca prosljeđivanja, a ne ova dolazna politika, i traži vlastito obrazloženje.
Testirajte vezu, ne samo tunel
Tunel koji radi nakon promjene dokazuje manje nego što izgleda, jer postojeći unos susjeda i uspostavljena veza mogu sakriti kontrolnu poruku koju politika sada odbacuje.
Provjerite priključenost direktno, pa provjerite da izuzeta putanja još pada:
ip -6 neigh show
ping -6 -c 3 2001:db8:1::1
sudo nft -c -f /etc/nftables.conf
Tabela susjeda koja ostane potpuna nakon ponovnog pokretanja signal je da otkrivanje još radi. Tabela koja se isprazni i nikad ne napuni signal je da ste je filtrirali. Treća naredba provjerava sintaksu skupa pravila bez primjene, što vrijedi uraditi dok još imate sesiju.
Oporavite host iz kojeg ste se zaključali
Prije nego promijenite pravila vatrozida koja nose vašu vlastitu administrativnu sesiju, držite drugi kanal: konzolu, serijsku vezu ili zakazano vraćanje koje uklanja nova pravila ako ga ne otkažete.
Ako vas promjena ipak zaključa, oporavak ide kroz taj kanal, a ne kroz mrežu koju ste upravo uklonili. Vratite prethodni skup pravila iz sačuvane kopije, potvrdite da je host opet dostupan i tek onda primijenite predviđenu politiku u manjim dijelovima.
Konačna politika nije univerzalna. Adresiranje, rutiranje i implementacija vatrozida su ulazi za uvođenje, ali granica je svuda ista: odbijte neželjeni pristup aplikacijama uz zadržavanje kontrolnog saobraćaja koji nosi ovlašteni tunel.