Koncentratorius, kuriame veikia WireGuard, gali laikyti lygiaverčių grupes atskirai be atskiros sąsajos ar maršrutizavimo lentelės kiekvienai grupei. Šį darbą atlieka du mechanizmai, ir jų painiojimas yra įprasta priežastis, kodėl politika atrodo teisinga ir nieko nedaro. Vienas sluoksnis nusprendžia, kas gali reikalauti šaltinio adreso. Kitas nusprendžia, kur tam paketui leidžiama eiti.

Du darbai, laikomi atskirai

Tunelio sluoksnis atsako į siaurą klausimą: ar šio lygiaverčio raktas įgaliojo šį vidinį šaltinio adresą. Persiuntimo sluoksnis atsako į platesnį: ar šis paketas gali išeiti tos paskirties link. Nė vienas neatsako į kito klausimą, ir nė vienas pats savaime nėra išsami prieigos politika.

Šis atskyrimas yra priežastis, kodėl lygiavertis gali būti autentifikuotas, teisingai adresuotas ir vis tiek negalėti pasiekti hosto, kurio neturėtų pasiekti. Jis paaiškina ir priešingą atvejį: ugniasienės taisyklė, leidžianti viską, nieko neįrodo apie tai, kas gali reikalauti kokio adreso.

Projektuokite abu sluoksnius kartu, tada išbandykite abu. Konfigūracija, kuri teisinga viename sluoksnyje ir neišbandyta kitame, nepavyksta atvirai arba uždarai, priklausomai nuo numatytosios reikšmės.

Duokite kiekvienam lygiaverčiui tik jo paties adresą

Kelių hostų lygiaverčiai vilioja serverio pusėje suteikti visą grupės diapazoną. Tas leidimas yra šaltinio adreso reikalavimas, todėl kompromituotas ar neteisingai sukonfigūruotas klientas gali pateikti bet kurį diapazono adresą, ir tunelis jį priims. Skirkite /32 kiekvienam lygiaverčiui jo paties vidiniam adresui. Grupės diapazonus nustatykite tik klientuose, kur jie aprašo kurias paskirties vietas tas klientas gali pasiekti, o ne kokius šaltinius gali naudoti.

Tada ugniasienė lygina šaltinį, kuriuo gali pasitikėti. Taisyklė, parašyta grupės diapazonui, išlieka naudingas grupavimas, ir ji tampa prasminga tik tada, kai nė vienas atskiras lygiavertis negali reikalauti adreso, priklausančio kitam nariui.

Parašykite persiuntimo politiką, kuri atskiria grupes

Įdomus eismas čia patenka ir išeina per tą pačią tunelio sąsają, todėl kerta persiuntimo kelią, o ne hosto įvesties kelią. Taisyklės priklauso esamai to ugniasienės valdytojo, kuriam priklauso hostas, persiuntimo grandinei, ir jos yra fragmentai, o ne visas taisyklių rinkinys.

iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept
iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept
iifname "wg0" oifname "wg0" drop

Pirmosios dvi taisyklės leidžia eismą kiekvienos grupės viduje. Paskutinė blokuoja visa kita, kas kerta tą sąsają, ir būtent tai sukuria izoliaciją tarp grupių. Pridėkite aiškias taisykles kitai adresų šeimai, jei jų reikia, nes IPv4 parašytas drop neįgalioja ir neaprašo IPv6 elgsenos.

Tvarka nusprendžia, ar politika taikoma

Taisyklių tvarka svarbesnė už patį fragmentą. Bendra taisyklė, priimanti nusistovėjusius ryšius ir esanti prieš šiuos įrašus, leidžia senam tarpgrupių srautui tęstis, todėl izoliacija taikoma tik naujiems ryšiams. Nuspręskite, kurio iš šių dviejų rezultatų norite, prieš įkeldami iš naujo.

Priėmimo nuosprendis taip pat ne visada galutinis tarp grandinių tame pačiame kabliuke. Jei kita bazinė grandinė vykdoma vėliau, veiksminga politika yra derinys, todėl tikrinkite skaitiklius, o ne failą, kurį redagavote. Skaitikliai yra pigiausias prieinamas įrodymas. Taisyklė be paketų skaičiaus nesutampa, o taisyklė, kuri sutampa, kol vėlesnė grandinė priima, pasako, kad drop yra netinkamoje vietoje.

Išbandykite matricą, o ne failų skaičių

Sukurkite nedidelę laukiamų rezultatų matricą ir patikrinkite kiekvieną langelį. A grupė į A grupę turėtų veikti, B grupė į B grupę turėtų veikti, o A į B neturėtų, abiem kryptimis ir abiem adresų šeimoms, jei jas palaikote.

nft list ruleset
wg show wg0 allowed-ips
ping -c 2 10.66.10.5
conntrack -L -s 10.66.20.7 2>/dev/null | head

Pirmieji du rodo, kas sukonfigūruota. Ping iš neteisingos grupės nario rodo, kas iš tikrųjų vyksta. conntrack sąrašas rodo, ar senesnis srautas vis dar priimamas, ir būtent taip izoliacijos pakeitimas tyliai neįsigalioja.

Hosto paslaugos koncentratoriuje ir prieiga prie LAN už jo yra atskiri keliai su atskira politika. Užsirašykite, kuriuos iš jų apima matrica, nes testas, tikrinantis tik lygiaverčių tarpusavio eismą, nieko nesako apie nė vieną iš jų.

Susiję straipsniai