Stop VPN-klanten om inoar op de tunnel te berikken
In tsjinst berikke is in rûte, in oare klant berikke is belied. Fyn it trochstjoerpunt dat it ferkear tusken pearen beslút, en bewiis dan de wegering fan in klant ôf.
Twa klanten kinne beide de springhost iepenje en dochs gjin saak hawwe om inoar te iepenjen. In tsjinst berikke is in trochstjoerbeslút, wylst in pear berikke in beliedsbeslút is, en de measte VPN-stapels hâlde dy yn aparte objekten. Neat dat jo foar it earste konfigurearje twingt it twadde ôf. De taak is dus net in regel taheakje, mar it objekt fine dat op dizze server it ferkear tusken pearen beslút, de wegering dêr skriuwe en it fan in klant ôf bewiisje.
In rûte nei de mienskiplike tsjinst is gjin tastimming tusken pearen
It oankundigjen fan it kliïnt-subnet fertelt in pear hoe't er in pakket op de tried set nei it adres fan in oare klant. Oft dat pakket besoarge wurdt, wurdt dêrnei besletten, troch wat it trochstjoert. Op in Linux-poarte is dat de FORWARD-ketting; yn in daemon yn brûkersromte is it de eigen sesjetabel fan de tunnel. In rûte beantwurdet berikberens en lit tastimming ûnoanroer.
Dêrom bewiist in isolaasjekontrôle dy't allinnich rûtes lêst neat. In /24 kin nei elke klant stjoerd wurde, wylst elk pakket tusken pearen by de trochstjoerhaak fallen wurdt. It gefaarlike gefal is it omkearde: gjin eksplisite regel, in tastimmingjaande standert, en isolaasje dy't allinnich bestiet om't nimmen it test hat.
Skriuw de eask op ien rigel foardat jo in terminal iepenje. Berik de tsjinstblok en de springhost, berik neat oars binnen de kliïntblok.
Fyn út wa't it pearpakket eins trochstjoert
Twa gedragingen fan de server sjogge der fan de kliïntkant itselde út en freegje oare regels. Of de kearn stjoert it pakket wer út de tunnelinterface, of de daemon kopiearret it tusken sesjes en de kearn sjocht it nea.
WireGuard heart by de earste groep: it hat gjin skeakel tusken pearen, dus in pakket fan 10.8.0.4 nei 10.8.0.5 komt op wg0 oan, rekket de trochstjoerhaak en wurdt wer út wg0 rûte as AllowedIPs beide adressen dekt. OpenVPN is de twadde groep sadree't client-to-client yn de serverkonfiguraasje set is, want dy direktyf jout it pakket tusken sesjes yn brûkersromte oer. Kontrolearje de laden konfiguraasje op dy direktyf foardat jo wat skriuwe. In kearnregel dy't nea ferkear sjocht is net te ûnderskieden fan in regel dy't wurket, en sa einiget in útrol hielendal sûnder isolaasje.
Lês de effektive konfiguraasje yn stee fan it bestân dat jo oannimme dat laden is, want distribúsjepakketten bringe har eigen ynslútsels mei. As de daemon trochstjoert, heart de wegering yn syn eigen per-klant-kontrôles, en in host-firewall filteret allinnich ferkear nei de host. As de kearn trochstjoert, is de trochstjoerhaak it iennige plak dat telt.
Rûte en oersetten útrollen hawwe noch ien kontrôle nedich: de boarne dy't in fiere klant sjocht is miskien net dy't jo ferwachtsje. Dan komt in regel dy't by it kliïnt-subnet past nearne mei oerien. Notearje it adres dat de oersetting oerlibbet foardat jo de oerienkomst skriuwe, en ferkies it ynterfacepear te passen boppe it rieden fan NAT-adressen.
Jou elk adres in identiteit dy't jo apart weromlûke kinne
Isolaasje stoart yninoar sadree't twa apparaten ien oantekening diele. In regel dy't oan dy identiteit bûn is kin se net skiede, en it weromlûken fan in ferlerne laptop lûkt de hiele groep werom. Sertifikaten per apparaat of kaaien per pear hâlde it weromlûken lokaal en it belied lêsber, want elk adres kaart nei krekt ien persoan of masine. Wêr't it ûntwerp dat net kin, sis dat yn it runboek yn stee fan de regel as fynmoedich te beskriuwen.
Adrestaewizing moat mei it belied oerienkomme. Reservearje in blok foar tsjinsten, in blok foar klanten, en diel klantadressen út in pool dy't jo kontrolearje yn stee fan in berik fan wa't earst komt. As de server oerset of oerbrêget, hâld de mappingstabel njonken de konfiguraasje, want dy tabel is wat de folgjende lêzer nedich hat om de regel op 'e nij ôf te lieden.
Set de wegering dêr't it pakket de tunnel krúst
Op in poarte dy't WireGuard-ferkear trochstjoert, dekke twa regels it gefal: tastean it tsjinstblok, en dan it rest fan de kliïntblok falle litte. It ynterfacepear is like wichtich as de adressen, want allinnich op bestimming passen fangt ek ferkear fan it LAN ôf. Laad se yn dy folchoarder sadat de tastimming earst beoardiele wurdt.
Mei nftables giet it pear yn in besteande inet filter-tabel, tastimming earst en falle litte twadde. Beide oerienkomsten pinne it ynterfacepear likegoed as de adressen.
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
Lês de ketting werom nei it laden yn stee fan op de útgongstatus te fertrouwen, en befêstigje dat beide regels yn de folchoarder steane dy't jo bedoelden. Foegje passende ip6-regels ta foar de IPv6-pool, oars is it v4-pear op in dûbele-stapel-tunnel allinnich fersiering. As de server al in tastimmingjaand trochstjoerbelied hat, foegje de wegering ta yn stee fan de ketting hielendal te ferfangen.
As client-to-client oan is op OpenVPN, passe dizze trochstjoerregels nea op pearferkear en moat de wegering yn de eigen kontrôles fan de daemon wêze. Hâld de kearnregels foar ferkear nei de host, mar rekkenje se net as de isolaasjekontrôle.
Bewiis de wegering fan in klant ôf, net fan de server
Testen fan de poarte ôf bewiist neat, want lokaal generearre ferkear nimt it útgongspaad en krúst nea de trochstjoerhaak. Brûk twa echte klanten: ien dy't de tsjinst berikke moat, ien dy't wegere wurde moat. Rin earst it tasteande gefal, sadat in brutsen tunnel net foar in wurkjend belied oansjoen wurdt.
Befêstigje fan de tastiene klant ôf dat de tsjinst op syn poarte antwurdet. Probearje fan deselde klant it pearadres en ferwachtsje in stil falle litten yn stee fan in wegering:
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
In fallen pakket en in offline pear lykje beide op in tiidferrin, dus kontrolearje de tellers foardat jo wat beslute. Befêstigje dat de teller fan de wegeringsregel omheech giet wylst it pear oantoanber oan is. Werhelje oer IPv6, dêr't in ûntbrekkende ip6-regel de v4-wegering effektyf lykje lit. Notearje de akseptearre en wegere resultaten yn it runboek mei de datum, want de folgjende migraasje sil de regel op 'e nij ôfliede.