Ndalo klientët VPN që të arrijnë njëri-tjetrin në tunel
Të arrish një shërbim është rrugë, të arrish një klient tjetër është politikë. Gjeni pikën e përcjelljes që vendos trafikun mes kolegëve, pastaj provoni refuzimin nga një klient.
Dy klientë mund të hapin të dy hostin e kërcimit dhe prapëseprapë të mos kenë asnjë punë duke hapur njëri-tjetrin. Të arrish një shërbim është vendim përcjelljeje, ndërsa të arrish një koleg është vendim politike, dhe shumica e stivave VPN i mbajnë këto në objekte të veçanta. Asgjë nga ato që konfiguroni për të parën nuk zbaton të dytën. Prandaj detyra nuk është të shtoni një rregull, por të gjeni objektin që vendos trafikun mes kolegëve në këtë server, të shkruani refuzimin atje dhe ta provoni nga një klient.
Një rrugë drejt shërbimit të përbashkët nuk është leje mes kolegëve
Shpallja e nënrrjetit të klientëve i thotë kolegut si të vendosë një paketë në tel drejt adresës së një klienti tjetër. Nëse ajo paketë dorëzohet vendoset më vonë, nga ajo që e përcjell. Në një portë Linux është zinxhiri FORWARD; brenda një demoni në hapësirën e përdoruesit është tabela e vetë sesioneve të tunelit. Një rrugë përgjigjet për arritshmërinë dhe e lë lejen të paprekur.
Prandaj një kontroll izolimi që lexon vetëm rrugë nuk provon asgjë. Një /24 mund t'u dërgohet të gjithë klientëve ndërsa çdo paketë mes kolegëve hidhet në grep të përcjelljes. Rasti i rrezikshëm është i kundërti: asnjë rregull i qartë, një vlerë e paracaktuar lejuese dhe një izolim që ekziston vetëm sepse askush nuk e provoi.
Shkruani kërkesën në një rresht përpara se të hapni një terminal. Arrini bllokun e shërbimeve dhe hostin e kërcimit, mos arrini asgjë tjetër brenda bllokut të klientëve.
Zbuloni kush e përcjell vërtet paketën e kolegut
Dy sjellje të serverit duken njësoj nga ana e klientit dhe kërkojnë rregulla të ndryshme. Ose bërthama e përcjell paketën përsëri jashtë ndërfaqes së tunelit, ose demoni e kopjon mes sesioneve dhe bërthama nuk e sheh kurrë.
WireGuard i përket grupit të parë: nuk ka çelës mes kolegëve, prandaj një paketë nga 10.8.0.4 në 10.8.0.5 mbërrin në wg0, godet grepin e përcjelljes dhe ridrejtohet jashtë wg0 kur AllowedIPs mbulon të dy adresat. OpenVPN është grupi i dytë sapo client-to-client vendoset në konfigurimin e serverit, sepse ai direktiv e dorëzon paketën mes sesioneve në hapësirën e përdoruesit. Kontrolloni konfigurimin e ngarkuar për atë direktiv përpara se të shkruani ndonjë gjë. Një rregull bërthame që nuk sheh kurrë trafik nuk dallohet nga një rregull që funksionon, dhe kështu një vendosje përfundon pa asnjë izolim.
Lexoni konfigurimin efektiv dhe jo skedarin që supozoni të ngarkuar, sepse paketat e shpërndarjes sjellin përfshirjet e tyre. Nëse demoni e bën përcjelljen, refuzimi i përket kontrolleve të tij për çdo klient, dhe muri i zjarrit i hostit filtron vetëm trafikun drejtuar hostit. Nëse bërthama përcjell, grepi i përcjelljes është i vetmi vend që ka rëndësi.
Vendosjet e rrugëzuara dhe të përkthyera kërkojnë edhe një kontroll: burimi që sheh një klient i largët mund të mos jetë ai që prisni. Atëherë një rregull që përputhet me nënrrjetin e klientëve nuk përputhet me asgjë. Shënoni adresën që mbijeton përkthimin përpara se të shkruani përputhjen, dhe parapëlqeni përputhjen e çiftit të ndërfaqeve sesa hamendjen e adresave NAT.
Jepini secilës adresë një identitet që mund të revokohet vetë
Izolimi shembet sapo dy pajisje ndajnë një kredencial. Një rregull i lidhur me atë identitet nuk mund t'i ndajë, dhe revokimi i një laptopi të humbur revokon të gjithë grupin. Certifikatat për pajisje ose çelësat për koleg e mbajnë revokimin lokal dhe politikën të lexueshme, sepse çdo adresë përputhet saktësisht me një person ose makinë. Kur projektimi nuk e bën dot, thoni në manualin e operimit në vend që ta përshkruani rregullin si të hollë.
Ndarja e adresave duhet të pajtohet me politikën. Rezervoni një bllok për shërbimet, një bllok për klientët, dhe shpërndani adresat e klientëve nga një grup që kontrolloni ju, jo nga një interval i atij që vjen i pari. Nëse serveri përkthen ose ura, mbani tabelën e hartëzimit pranë konfigurimit, sepse ajo tabelë është ajo që lexuesi tjetër ka nevojë për të nxjerrë përsëri rregullin.
Vendosni refuzimin aty ku paketa kalon tunelin
Në një portë që përcjell trafikun WireGuard, dy rregulla e mbulojnë rastin: lejoni bllokun e shërbimeve, pastaj hidhni pjesën tjetër të bllokut të klientëve. Çifti i ndërfaqeve ka po aq rëndësi sa adresat, sepse përputhja vetëm në destinacion kap edhe trafikun që vjen nga LAN. Ngarkojini në atë rend që leja të vlerësohet e para.
Me nftables çifti hyn në një tabelë ekzistuese inet filter, leja e para dhe hedhja më pas. Të dyja përputhjet fiksojnë çiftin e ndërfaqeve si dhe adresat.
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.2.0/24 accept
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.0.0/24 drop
Lexoni zinxhirin mbrapsht pas ngarkimit në vend që të besoni statusin e daljes, dhe konfirmoni që të dy rregullat qëndrojnë në rendin e synuar. Shtoni rregulla ip6 përputhëse për grupin IPv6, përndryshe çifti v4 është vetëm dekor në një tunel me dy stiva. Nëse serveri ka tashmë një politikë përcjelljeje lejuese, shtoni hedhjen në vend që të zëvendësoni zinxhirin tërësisht.
Kur client-to-client është aktivizuar në OpenVPN, këto rregulla përcjelljeje nuk përputhen kurrë me trafikun mes kolegëve dhe refuzimi duhet të jetojë në kontrollet e vetë demonit. Mbani rregullat e bërthamës për trafikun drejtuar hostit, por mos i numëroni si kontrollin e izolimit.
Provoni refuzimin nga një klient, jo nga serveri
Testimi nga porta nuk provon asgjë, sepse trafiku i krijuar lokalisht merr rrugën e daljes dhe nuk e kalon kurrë grepin e përcjelljes. Përdorni dy klientë të vërtetë: një që duhet të arrijë shërbimin dhe një që duhet të refuzohet. Ekzekutoni së pari rastin e lejes, që një tunel i prishur të mos merret për politikë që funksionon.
Nga klienti i lejuar, konfirmoni që shërbimi përgjigjet në portën e tij. Nga i njëjti klient, provoni adresën e kolegut dhe prisni një hedhje të heshtur në vend të një refuzimi:
ping -c 3 -W 2 10.8.0.5
nc -z -w 2 10.8.0.5 22
nft list chain inet filter forward
iptables -vnL FORWARD
ping -6 -c 3 -W 2 fd00:8::5
Një paketë e hedhur dhe një koleg jashtë linje duken të dyja si skadim kohe, prandaj kontrolloni numëruesit përpara se të nxirrni ndonjë përfundim. Konfirmoni që numëruesi i rregullit të hedhjes rritet ndërsa kolegu është provueshëm aktiv. Përsëriteni mbi IPv6, ku mungesa e rregullit ip6 e lë refuzimin v4 të duket efektiv. Regjistroni rezultatet e pranuara dhe të refuzuara në manual me datën, sepse migrimi i ardhshëm do ta nxjerrë përsëri rregullin.