Musíte sa rozhodnúť, koľko strojov si vaše laboratórium VPN zaslúži. Smerovaná bránová VM medzi dvoma segmentmi VirtualBoxu reprodukuje preklad adries, spiatočnú cestu a pozíciu firewallu, za ktorou sedí skutočný klient. Jediný segment iba pre hostiteľa vám dá jedny kontrolované dvere a nič viac. Verzia s bránou stojí troch hostí a smerovaciu tabuľku, ktorú udržiavate; verzia iba pre hostiteľa stojí jedného hosťa a jednu politiku. Tri otázky ich oddeľujú a tretia rozhoduje, či váš test vôbec môže prejsť.

Odpovedzte na tri otázky, skôr než čokoľvek naklonujete

Začnite tým, čo musí server VPN pozorovať. Ak musí server vidieť zdrojovú adresu, ktorá nie je adresou testovacieho hosťa, musí medzi nimi niečo prekladať a tým niečím musí byť router, ktorý ovládate. Sieť iba pre hostiteľa dáva hostiteľovi adaptér v segmente hosťa, nie prekladač. Keď sa hosť potom potrebuje dostať niekam von, pripojíte adaptér NAT a vlastný NAT engine VirtualBoxu prepíše zdroj bez toho, aby sa vás spýtal.

Ďalej sa opýtajte, či sa hosť smie dostať niekam inam než tunelom. Táto odpoveď vyberá internú alebo iba pre hostiteľa, a to je otázka, ktorú väčšina opisov laboratórií vynecháva. Nakoniec sa opýtajte, čo sa musí stať, keď tunel padne, pretože to určuje politiku, nie topológiu, a laboratórium, ktoré dokazuje iba šťastnú cestu, neotestovalo takmer nič.

What the test requiresRouted gateway VMHost-only guest
Server sees a translated source addressYes, from your own MASQUERADE ruleNo, VirtualBox NAT does it instead
The guest has exactly one egressYes, while the second adapter faces the tunnelOnly until a NAT adapter is attached
Policy is testable during a tunnel failureRules live in one placeRules live on each guest

Prepojte tri role internými sieťami

Použite troch hostí a dva pomenované segmenty, pričom brána má byť jediný stroj s adaptérom na oboch:

VBoxManage modifyvm lab-client --nic1 intnet --intnet1 WAN
VBoxManage modifyvm lab-server --nic1 intnet --intnet1 LAN
VBoxManage modifyvm lab-gw --nic1 intnet --intnet1 WAN --nic2 intnet --intnet2 LAN

Pre internú sieť neexistuje samostatný krok vytvorenia. Reťazec v --intnet1 je segment: dva stroje ho zdieľajú len pri presnej zhode názvu a nič na hostiteľovi k nemu nie je pripojené. Práve táto posledná vlastnosť je dôvodom, prečo sa laboratórium čisto opakuje, pretože trasy hostiteľa, jeho vlastný klient VPN aj jeho firewall sa k hosťom nemôžu dostať omylom. Interný segment nemá ani server DHCP, kým nejaký nepridáte, takže statické adresy sú najkratšou cestou.

Dajte klientovi len jeho WAN adresu s predvolenou bránou ukazujúcou na WAN adresu brány. Server dostane LAN adresu a použije LAN adresu brány ako svoju predvolenú bránu. Hosť, ktorý drží dve adresy v jednom segmente alebo má zatúlanú trasu do druhého segmentu, má cestu okolo routera, a testy nižšie vám budú klamať.

Vedľa názvov VM držím textový súbor so štyrmi adresami a dvoma názvami segmentov a vkladám ho do každého shellu. O týždne neskôr, keď zmena profilu niečo pokazí, je tento súbor rozdielom medzi ladením profilu a ladením vlastnej pamäte.

Pre segment, ktorý nesmie unikať, zvoľte interný alebo iba pre hostiteľa

Režim iba pre hostiteľa vytvára virtuálny adaptér na samom hostiteľovi, zvyčajne vboxnet0, a dáva hostiteľovi adresu v segmente hosťa. To je pohodlné pre správu a smrteľné pre test izolácie, pretože hostiteľ teraz môže dosiahnuť hosťa priamo a každá služba na strane hostiteľa sa stáva možnou cestou. Interný režim nemá adaptér hostiteľa vôbec. Oba režimy sa v paneli nastavení siete ľahko pletú, preto skontrolujte dokumentovaný rozdiel, nie označenie (pozrite stránku podrobnosti o sieťach VirtualBoxu).

Pre hosťa, ktorý musí používať tunel, je interný bezpečnejšou predvolenou voľbou, s bránou ako jediným východom. Ak ponecháte iba pre hostiteľa, berte adaptér hostiteľa ako správnu cestu a povedzte to nahlas: hostiteľ môže dosiahnuť hosťa a hosť nesmie môcť použiť hostiteľa ako východ.

VBoxManage modifyvm lab-client --nic1 hostonly --hostonlyadapter1 vboxnet0

Izolácia, ktorú môžete dokázať, je izolácia, ktorú ste nakonfigurovali. Hosť s jedným interným adaptérom, predvolenou trasou na bráne a bez adaptéra NAT nemá cestu, ktorá by obišla bránu. Hosť s adaptérom iba pre hostiteľa a adaptérom NAT má dve cesty a len jedna z nich je tá, ktorú ste chceli testovať.

Smerujte a prekladajte na bráne a potom ju nechajte pri výpadku zavrieť

VirtualBox nepreposiela medzi segmentmi; robí to hosť. Keď je VM servera VPN za bránou, zapnite preposielanie a prekladajte prevádzku klienta, keď odchádza k serveru:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

S týmto pravidlom server vidí LAN adresu brány namiesto adresy klienta, a presne tak vyzerá skutočný klient za NAT operátora z pohľadu hlavového uzla. Uložte hodnotu sysctl do /etc/sysctl.d/ a pravidlo do tej služby firewallu, ktorú distribúcia používa, inak reštart ticho vráti laboratórium do smerovaného, ale nepreloženého stavu.

Preposielanie nie je autorizácia. Pod predvolenou politikou FORWARD s hodnotou ACCEPT hosť, ktorého predvolená trasa ukazuje na bránu, odchádza rozhraním, ktoré zvolí smerovacia tabuľka, s tunelom alebo bez neho. Ak má brána aj adaptér NAT na inštaláciu balíkov, tento adaptér je funkčným nešifrovaným východom v okamihu, keď tunel padne, a váš test iba-VPN nikdy nebol testom iba-VPN.

Keď je server namiesto toho vzdialený a tunel ukončuje sama brána, rovnaké rozhodnutie ukazuje na rozhranie tunela, nie na NIC, ktorá dosiahne internet:

iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Držte vlastný vonkajší transport tunela a mimosieťovú správnu trasu oddelene od preposielanej prevádzky. Ak je jediný spôsob, ako opraviť bránu, prejsť tunelom, ktorý ladíte, laboratórium sa stane cvičením v uzamknutí. Sériová konzola, správny adaptér iba pre hostiteľa alebo snímka známeho dobrého stavu sú lacnejšie než ručné obnovenie pokazeného routera.

Overte cestu z hosťa, nie z hostiteľa

Pracujte smerom von. Potvrďte, že klient dosiahne WAN adresu brány, potom server cez bránu, potom že spojenie na port VPN odíde a vráti sa. Zachytenie na oboch rozhraniach brány ukáže, či odpoveď dorazí a či je na spiatočnej ceste zahodená, čo zachytenie len na klientovi nerozozná:

tcpdump -ni eth0 udp port 1194
tcpdump -ni tun0 udp port 1194

Potom dokážte východ. Opýtajte sa z hosťa služby pre odraz adries, aký zdroj vidí, a porovnajte to s vlastnou výstupnou adresou brány; ak odpoveď zodpovedá adrese hostiteľa, existuje cesta okolo tunela. Skontrolujte, ktorý resolver hosť skutočne používa, a skontrolujte IPv6 zvlášť, pretože segment, v ktorom je IPv6 zapnuté, zatiaľ čo tunel nesie len IPv4, uniká konštrukciou, nie náhodou.

Nakoniec to zámerne rozbite. Zastavte tunel alebo zablokujte jeho vonkajší port a otvorte z hosťa nové spojenie. Musí zlyhať a dôvod musí byť taký, ktorý dokážete pomenovať: žiadna trasa, pravidlo zamietnutia alebo mŕtvy resolver. Reštartujte tunel a potvrďte, že sa hosť zotaví bez prestavby siete. Ak laboratórium zdieľa mesh VPN ako Hamachi alebo ZeroTier, pamätajte, že mostový adaptér sleduje názov adaptéra, nie mesh, takže most treba po inštalácii vlastného virtuálneho adaptéra klientom presmerovať.

VBoxManage list bridgedifs
VBoxManage modifyvm lab-client --bridgeadapter1 <mesh-adapter-name>

Zdieľanie tunela hosťa s hostiteľom zrkadlí ten istý problém. Nasmerovanie predvolenej trasy hostiteľa na hosťa funguje, rovnako ako proxy vnútri hosťa; NAT cez hostiteľa nenesie tunel hosťa pre prevádzku, ktorú hostiteľ začal. Uložte názvy segmentov a pravidlá firewallu na jedno miesto, urobte snímku funkčného stavu a poznačte zdrojovú adresu, ktorú server pozoroval. Ďalšia zmena profilu potom stojí jedno spustenie skriptu namiesto prestavného laboratória.

Súvisiace články