Hub koji pokreće WireGuard može držati peer grupe odvojeno bez zasebnog interfejsa ili tabele rutiranja za svaku grupu. Dva mehanizma obavljaju taj posao, a njihovo miješanje uobičajen je razlog zašto politika izgleda ispravno i ne radi ništa. Jedan sloj odlučuje ko može zatražiti izvornu adresu. Drugi odlučuje kuda se tom paketu smije ići.

Dva posla, držana odvojeno

Tunelski sloj odgovara na usko pitanje: je li ključ ovog peera ovlastio ovu unutrašnju izvornu adresu. Sloj prosljeđivanja odgovara na šire: smije li ovaj paket otići prema tom odredištu. Nijedan ne odgovara na pitanje onog drugog i nijedan sam po sebi nije potpuna politika pristupa.

Zbog te podjele peer može biti autentificiran, ispravno adresiran i ipak ne moći doći do hosta do kojeg ne bi smio doći. To objašnjava i obrnuto: pravilo firewall-a koje dopušta sve ne dokazuje ništa o tome ko smije zatražiti koju adresu.

Projektujte oba sloja zajedno, pa testirajte oba. Konfiguracija koja je ispravna na jednom sloju i netestirana na drugom pada otvoreno ili zatvoreno, zavisno od zadanog.

Dajte svakom peeru samo njegovu vlastitu adresu

Peeri s više hostova mame vas da na strani servera dodijelite cijeli raspon grupe. Ta dozvola je zahtjev za izvornu adresu, pa kompromitovan ili pogrešno konfigurisan klijent može predstaviti bilo koju adresu iz raspona i tunel će je prihvatiti. Dodijelite /32 po peeru za njegovu vlastitu unutrašnju adresu. Raspone grupa postavljajte samo na klijentima, gdje oni opisuju koja odredišta taj klijent smije dosegnuti, a ne koje izvore smije koristiti.

Firewall tada uparuje izvor kojem može vjerovati. Pravilo napisano za raspon grupe ostaje korisno grupisanje i postaje smisleno tek kad nijedan pojedinačni peer ne može zatražiti adresu koja pripada drugom članu.

Napišite politiku prosljeđivanja koja razdvaja grupe

Zanimljiv saobraćaj ovdje ulazi i izlazi kroz isti tunelski interfejs, pa prelazi put prosljeđivanja, a ne put unosa hosta. Pravila pripadaju postojećem lancu prosljeđivanja onog menadžera firewall-a koji posjeduje host, i ona su fragmenti, a ne potpun skup pravila.

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

Prva dva pravila dopuštaju saobraćaj unutar svake grupe. Posljednje blokira sve ostalo što prelazi taj interfejs, i to stvara izolaciju između grupa. Dodajte eksplicitna pravila za drugu adresnu familiju ako vam trebaju, jer drop napisan za IPv4 ne ovlašćuje niti opisuje ponašanje IPv6.

Redoslijed odlučuje primjenjuje li se politika

Redoslijed pravila važniji je od samog fragmenta. Generičko pravilo koje prihvata uspostavljene veze, postavljeno prije ovih unosa, pušta stari međugrupni tok da se nastavi, pa se izolacija odnosi samo na nove veze. Odlučite koji od ta dva ishoda želite prije nego što učitavate iznova.

Presuda prihvatanja takođe nije uvijek konačna kroz lance na istoj kuki. Ako se drugi osnovni lanac izvršava kasnije, djelotvorna politika je kombinacija, pa pregledajte brojače, a ne datoteku koju ste uredili. Brojači su najjeftiniji dostupni dokaz. Pravilo bez broja paketa ne uparuje se, a pravilo koje se uparuje dok kasniji lanac prihvata kaže vam da je drop na pogrešnom mjestu.

Testirajte matricu, a ne broj datoteka

Napravite malu matricu očekivanih rezultata i provjerite svaku ćeliju. Grupa A u grupu A treba raditi, grupa B u grupu B treba raditi, a A u B ne treba, u oba smjera i za obje adresne familije ako ih podržavate.

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

Prva dva pokazuju šta je konfigurisano. Ping od člana pogrešne grupe pokazuje šta se zaista događa. conntrack lista pokazuje prihvata li se stariji tok još uvijek, i tako promjena izolacije tiho ne stupa na snagu.

Host servisi na hubu i pristup LAN-u iza njega odvojeni su putevi s odvojenom politikom. Zabilježite koje od njih matrica pokriva, jer test koji provjerava samo peer-to-peer saobraćaj ne kaže ništa ni o jednom od njih.

Povezani članci