Skript za spuščanje ali pravilo požarnega zidu: kaj ustavi uhajanje?
Spuščanje vmesnikov ob prekinitvi je grobo in pogosto teče brez pravic. Primerjajte ga s pravilom požarnega zidu, ki preživi padec in zapre vrzel.
Dve zasnovi obljubljata isto: ko tunel pade, nič ne odide ven v odprti obliki. Eden ob spuščanju zažene skript in prereže vmesnike. Drugi pusti pravilo požarnega zidu v veljavi in od odjemalca VPN ne zahteva ničesar. Razlikujeta se v tem, kdo ima pravico ukrepati, kaj se zgodi med vrzeljo in kako se stroj pozneje vrne v omrežje. Primerjava na teh treh točkah je koristnejša od prepira, katera je strožja.
Isto delo z dvema mehanizmoma
Odjemalec lahko zažene kavlje, ko se tunel dvigne in ko se spusti, če profil dovoljuje izvajanje skriptov. Ta kavelj teče znotraj življenjskega cikla odjemalca, v trenutku, ko se povezava zapira. Pravilo požarnega zidu pa pripada sistemu in ga ne zanima, ali odjemalec teče, se je sesul ali je bil ubit.
| Property | Teardown script | Firewall unit |
|---|---|---|
| Runs when the client is killed | No | Yes |
| Needs privilege at teardown time | Usually yes | Configured once, at boot |
| Acts on the whole machine | Often, including recovery paths | Only on the flows it matches |
Ta tabela je celoten argument. Skript, ki teče le ob urejenem zaprtju, pokriva primer, ki vas je najmanj skrbel; pomemben primer je sesutje ali izginotje omrežja in noben od njiju ne da čistega spusta.
Kaj kavelj ob spustu zmore in česa ne
Dokumentirani vzorec prehodi omrežne vmesnike in spusti vse razen loopback. Ko je fizična naprava spuščena, nič ne more uiti izven tunela, in to je natanko namen.
#!/bin/sh
for dev in /sys/class/net/*; do
name=$(basename "$dev")
[ "$name" = lo ] || ip link set dev "$name" down
done
Spusti tudi lokalno omrežje, vsako storitev, ki jo stroj gosti, in pot, ki bi jo uporabili za odpravo težave. Na prenosniku je treba brezžično napravo včasih pozneje ročno preklopiti, zato kratek izpad postane servisna seja. Še huje, kavlju to morda sploh ni dovoljeno: ko se odjemalec odpove pravicam, skript za spust teče pod neprivilegiranim računom in vsaka sprememba vmesnika spodleti z napako pravic, zapisano v trenutku, ko nihče ne bere dnevnika.
Preverite, kako se odjemalec zažene, preden zaupate kavlju. Skript, ki deluje, ko ga zaženete ročno kot root, ne dokazuje ničesar o storitvi, ki se začne ob zagonu.
Kaj pravilo požarnega zidu naredi drugače
Pravilo, ki dovoljuje samo promet tunela, deluje naprej, ko procesa odjemalca ni več, ker jedro ni odvisno od tega procesa. Pravilo je tudi ožje: blokira natanko tiste tokove, na katere se ujema, in pusti loopback, lokalno podomrežje in pot za obnovitev pri miru, zato stroja ne pusti brez izhoda.
Cena je, da mora pravilo napisati in vzdrževati tisti, ki ima požarni zid gostitelja, in mora poimenovati tunelsko napravo, ki jo odjemalec dejansko ustvari. To pomeni, da je treba pravilo in profil vzdrževati skupaj; preimenovan vmesnik pusti požarni zid, ki blokira vse in ne pojasni ničesar.
Noben mehanizem ne naredi drugega odvečnega. Pravilo požarnega zidu, ki se po urejanju nikoli znova ne naloži, je enako izmišljeno kot skript, ki se nikoli ne zažene.
persist-tun odloči, ali vrzel obstaja
Ko tunelska naprava preživi prekinitev, preživijo tudi poti, ki kažejo vanjo. Promet se takrat zavrže namesto preusmeri, zato privzeta pot ne pade nazaj na fizični prehod. Prav to vedenje naredi uhajanje malo verjetno že pred kakršnim koli pravilom požarnega zidu.
Brez te nastavitve se naprava odstrani skupaj s potmi in privzeta pot lahko spet kaže na fizični prehod. Ali bo to storila, je odvisno od platforme in odjemalca, in prav zato je treba stanje opazovati, ne pa domnevati. Nastavitev obravnavajte kot del kill switch, ne kot možnost delovanja.
Ohranite pot za ponovno povezavo živo, nato preizkusite štiri stanja
Strog blok lahko odjemalcu prepreči tudi ponovno povezavo, ker odjemalec še vedno potrebuje pot do strežnika skozi fizični prehod, medtem ko je vse drugo zavrnjeno. Namestite pot gostitelja za ta en naslov, preden se tunel dvigne, in najprej razrešite ime, ker je lahko DNS blokiran do trenutka, ko ga boste potrebovali.
ip route add 198.51.100.20/32 via 192.168.0.1 dev wlan0
Nato preverite stanja in ne oznake. Zavestno pojdite skozi štiri trenutke: hladen zagon brez tunela, zdravo sejo, prekinitev, ki je nihče ni zahteval, in sejo po obnovitvi. V vsakem trenutku preberite privzeto pot in pošljite eno zahtevo, katere izhodni naslov je viden. Aplikacija, ki obupa, ko je tunel spuščen, ne pove ničesar o poštnem odjemalcu ali posodabljalniku, zato zadnji pregled ponovite z eno aplikacijo v ozadju. Zapišite pravilo, imena vmesnikov in korake obnovitve, ker je kill switch, ki ga nihče ne more preveriti, le govorica.