Varnostno stikalo za VPN sidecar: blokiraj promet, ko se konča
Deljenje imenskega prostora vsebnika VPN ne ustavi aplikacije, ko tunel pade. Dodajte izrecno politiko odhodnega prometa in preizkusite ponovne zagone, ne le prekinitve.
Aplikacijski vsebnik, ki si deli omrežni imenski prostor vsebnika VPN, nima lastnega vmesnika, zato je lahko domnevati, da ob okvari tunela ne more ničesar poslati. Ta domneva je napačna v načinu okvare, ki je pomemben. Če proces VPN umre, medtem ko imenski prostor preživi, aplikacija obdrži svoje vtičnice in imenski prostor obdrži svoje poti, promet pa se nadaljuje po poti, ki je še nameščena. Pravi kill switch je izrecna politika filtriranja skupaj s preizkusi življenjskega cikla izvajalnega okolja, ne odvisnost pri zagonu.
Zakaj deljenje imenskega prostora ni kill switch
Deljenje imenskega prostora pomeni, da aplikacija uporablja vmesnike, naslove in usmerjevalno tabelo vsebnika VPN. Odstrani neodvisno pot aplikacije v omrežje, dokler je deljeni imenski prostor nedotaknjen, in ne pove ničesar o tem, kaj bo ta imenski prostor naredil, ko tunel izgine.
Pogoji odvisnosti v Composeu lahko odložijo zagon aplikacije, dokler odvisnost ni zdrava. To pokriva en trenutek v času in nobene poznejše okvare, zato je to orodje za vrstni red zagona in ne trajna odhodna požarna pregrada.
Kaj se v resnici zgodi, ko se vsebnik konča
Razlikujte tri dogodke. Proces VPN znotraj vsebnika lahko umre, medtem ko vsebnik še deluje. Vsebnik se lahko ustavi ali odstrani, kar uniči imenski prostor. Vsebnik se lahko znova ustvari, kar zgradi nov imenski prostor in nova pravila.
V prvem primeru imenski prostor vztraja, privzeta pot lahko še vedno kaže na fizični vmesnik, aplikacija pa še naprej pošilja neposredno. V drugem primeru odvisna aplikacija običajno popolnoma izgubi povezljivost, ker je njen imenski prostor izginil. V tretjem primeru se lahko aplikacija znova poveže s svežim imenskim prostorom, preden je tunel pripravljen. Vsak primer zahteva drugačen preizkus, zasnova, ki pokriva le urejeno prekinitev, pa pokriva najmanj zanimivo.
Zgradite izrecno politiko odhodnega prometa
Zapišite politiko znotraj deljenega imenskega prostora, da velja za pakete aplikacije. Oblika je privzeto zavračanje z ozkimi izjemami: loopback, vmesnik tunela ter določen naslov in vrata končne točke, ki jih potrebuje transport tunela.
Izjema za končno točko mora biti vzpostavljena, preden se tunel dvigne, sicer odjemalec VPN ne more doseči svojega strežnika. Zato nabor pravil izrecno dovoljuje zunanji transport, namesto da bi dovoljeval fizični vmesnik na splošno. Dodajte tudi pravila IPv6, če ima imenski prostor povezljivost IPv6, ker politika samo za IPv4 pušča drugo družino odprto.
Tudi DNS spada v politiko. Če aplikacija razrešuje imena prek razreševalnika, dosegljivega le znotraj tunela, bo pravilo zavračanja prekinilo razreševanje, ko bo tunel spodaj, kar je pravilno vedenje za kill switch. Odločite se zavestno, ali je to tisto, kar želite.
Preizkusite življenjski cikel, ne le prekinitve
Pošljite svež neškodljiv zahtevek, medtem ko je tunel zdrav, nato ubijte proces VPN in pošljite še enega. Ponovite po zaustavitvi vsebnika, po ponovnem zagonu in po ponovnem ustvarjanju. Svež zahtevek je pomemben, ker lahko obstoječa povezava preživi spremembo pravil, ki blokira nove.
Ne zanašajte se na preverjanje zdravja ali iskanje izhodnega naslova IP kot mehanizem blokiranja. Preverjanje opazuje stanje in ga poroča; politika nadzoruje promet. Oboje sodi v isto uvedbo in se ne nadomeščata.
Zapišite pravila, da preizkus preživi posodobitev
Zapišite pričakovani izid za vsak primer okvare v dokumentacijo uvedbe skupaj s pravili, ki ga uresničujejo. Ta zapis omogoča, da se isti preizkus izvede po posodobitvi slike ali nadgradnji izvajalnega okolja, ko se vedenje imenskega prostora ali privzete poti lahko spremenijo, ne da bi kdo urejal datoteko compose.
Ohranite zahtevano zunanjo pot končne točke VPN ločeno od neomejenega izhoda aplikacije in ohranite DNS ter IPv6 v predvidenem obsegu. Če politika za udobje dovoljuje celoten fizični vmesnik, kill switcha ni več. Dokumentacija omrežij Docker opisuje ureditev deljenega imenskega prostora, na kateri temelji politika, in to je referenca, ki jo je treba preveriti, ko je vedenje izvajalnega okolja vprašljivo.