Op macOS ass e Kill-Switch just sou gutt wéi d’Paketfilterpolitik déi dobannen ass, an pf ass deen Deel, deen déi Politik durchsetzt. D’Politik muss zwee géigesätzlech Saachen op eemol maachen: de Client bis op säi Server loossen, sou datt en Tunnel ka bestoen, an alles anescht stoppen, direkt erauszegoen. Déi meescht publizéiert Regelseet kréien dat Zweet hin an vergiessen dat Éischt, dofir verléiert d’Maschinn d’Verbindung amplaz Schutz ze gewannen. D’Versioun déi funktionéiert nennt den Endpunkt, de Resolver an den Tunnel, a näischt méi.

Wat e Paketfilter decidéiere kann, a wat net

pf kuckt op Interfaces, Adressen, Protokollnummeren a Porten, an do hält et op. Et weess ni, wéi en Prozess e Socket opgemaach huet, dofir gëtt eng Erlaabnes déi fir ee Programm geschriwwe gouf eng Erlaabnes fir all Programm, dee bis op dee selwechte Port kënnt. Sou verwandelt eng grousszügeg UDP-Ausnam e Kill-Switch zeréck an en normale Reseau. D’Blockéiere bewosst vun der Applikatioun gehéiert zum Client oder zu enger Systemverlängerung, net zu dëser Datei.

De Filter baut och keng Route op. Wann de Client fällt, kann d’Standardroute nach ëmmer op en doudegen Tunnel weisen, an pf mécht doraus blockéiert Paketen amplaz engem stille Réckzuch op Wi-Fi. D’Blockade ass dat gewollt Resultat, keen Defekt, deen ee soll ëmgoen.

D’Uerdnung entscheet d’Resultat méi dacks wéi den Text vun der Reegel. Ouni quick hält pf no engem Treffer weider mat evaluéieren an déi lescht passend Reegel gewënnt, dofir iwwerstëmmt e breede Passage ënnen déi suergfälteg Ausnamen uewen. D’Passagen mat quick markéieren mécht den éischten Treffer definitiv, wat en Auteur vun enger Politik normalerweis mengt.

Lies fir d’éischt d’Fakten iwwer Interface an Endpunkt

Drahtlos Interfaces ginn net op all Mac gläich nummeréiert, an den Tunnelapparat kritt eng Nummer déi sech tëschent Neistarte ka änneren. Eng Reegel déi en Apparat nennt deen et net gëtt, fält beim Parsen duerch, wat haart a liicht ze gräifen ass, wärend eng Reegel déi de falschen existéierenden Apparat nennt, propper parst an Trafic erlaabt deen s du wolls stoppen.

Sammel d’Fakten während de Client verbonne ass, well den Tunnelapparat just dann existéiert. Du brauchs den Interface deen d’Standardroute huet, den Apparat dee vum Client erstallt gouf, an d’Adress an de Port vum Server deen en uwielt. Genee dee leschte Wäert loosse déi meescht Regelseet ewech, an en ewech ze loossen ass de Grond firwat e kopéierte Set säin eegenen Tunnel blockéiert.

route -n get default
ifconfig -l
scutil --nc list

Den éischte Kommando nennt den Interface deen elo gewënnt, den zweeten zielt all Apparat op deen de Kernel kennt, an den drëtten weist d’VPN-Konfiguratiounen déi de System ka starten. Schréif déi Äntwerten op, a lies dann d’Serveradress an de Port aus der Konfiguratioun vum Client selwer.

Schréif de Regelset ronderëm den Tunnelwee

D’Datei hei drënner refuséiert standardméisseg a léisst fënnef Saachen erëm duerch: loopback, den Tunnelapparat, de Wee vum Client bis op säi Server, de Resolver deen benotzt gëtt ier den Tunnel existéiert, an déi zwee Austausch déi eng drahtlos Verbindung brauchbar halen. D’Interfacebezeechnungen an d’Serveradress kommen aus denger Maschinn, also ersetz d’Wäerter déi s du bestätegt hues. D’Tunnelnummer wäert och net mat denger iwwerenee stëmmen.

set skip on lo0
block all
pass out quick on utun0
# maintain this line when the server address changes
pass out quick on en1 inet proto udp to 203.0.113.10 port 1194
# only the resolver the client uses before the tunnel exists
pass out quick on en1 inet proto udp to 192.0.2.53 port 53
pass out quick on en1 inet proto udp from any port 68 to any port 67
pass out quick on en1 inet proto udp to 224.0.0.251 port 5353

D’DHCP-Zeil gëtt et well e Mac eng Adress freet ier en eng huet, dofir verléisst d’Ufro Port 68 a Richtung Port 67 ouni brauchbar Quelladress. D’Multicast-Zeil léisst de System beurteelen ob d’drahtlos Verbindung et wäert ass, an se ewech ze huelen ergëtt eng Maschinn déi keng Verbindung mëttelt an engem Reseau dee funktionéiert. D’Endpunktzeil ass dat wat OpenVPN iwwerhaapt bis op säi Server kënnt; ouni si verwërft block all den äusseren Handshake an den Tunnel kënnt ni erop. D’Resolverzeil ass méi enk wéi eng allgemeng DNS-Erlaabnes, well se eng Adress an ee Port nennt amplaz all Ufro déi d’Maschinn mécht.

Déi Endpunkt- an Resolverausname sinn déi zwee déi musse existéieren; alles anescht bleift blockéiert. Wann de Client eng wuertwiertlech Adress uwielt, läsch d’Resolverzeil an hal déi Endpunktzeil. Wann d’Serveradress sech ännert, aktualiséier déi Zeil virun der nächster Verbindung, oder fëll eng pf-Tabell aus dem eegene Haken vum Client an passt amplaz d’Tabell un.

Huel den Tunnel erof, da start nei

Pars virum Lueden, well e Syntaxfehler ass bëlleg an engem proche Lauf an deier an enger Fernsitzung. Da lued d’Datei, aktivéier de Filter wann en aus war, a lies zréck wat wierklech a Kraaft ass. D’Zeréckliesen ass keng Zermonie: en aneren Anker kann Reegelen derbäisetzen déi s du net geschriwwen hues, also vergläich de gedréckte Set mat denger Datei.

sudo pfctl -n -v -f /etc/pf.conf
sudo pfctl -f /etc/pf.conf
sudo pfctl -e
sudo pfctl -s rules
sudo pfctl -s Anchors
sudo pfctl -a <anchor> -s rules
sudo pfctl -s info

Mat de Reegelen gelueden, huel den Tunnel erof a versich eng Säit ze lueden. Den normale Trafic soll stoppen, an en soll och stoppen nodeems d’Maschinn schléift an erwächt, well grad bei deem Iwwergang de veralte Staat zréckkraucht. Verbenn nei a bestäteg datt den Trafic erëm ufänkt ouni de Regelset unzeréieren. Wann e Browser nach funktionéiert mam Tunnel erof, ass eng Reegel méi breet wéi s du geduecht hues, an d’Zeréckliesen nennt se meeschtens.

Den Neistart ass deen Deel deen d’Leit iwwersprangen. macOS lies d’/etc/pf.conf beim Start, awer d’Datei liesen ass net d’selwecht wéi de Filter aktivéieren, dofir e Regelset deen elo funktionéiert kann no engem Neistart inaktiv sinn. Féier duerno sudo pfctl -s info aus a bestäteg datt d’Statuszeil de Filter als aktiv mëttelt.

Halt den Ausgang an de Neistartwee éierlech

E Regelset deen alles blockéiert kann dech och aus enger Maschinn ausschléissen déi s du aus der Ferne administréiers. Änner aus enger lokaler Sitzung wann s du kanns, hal déi virech Datei nieft der neier, a wëss de Réckwee ier s en brauchs. D’Kommandos hei drënner deaktivéieren de Filter a lueden d’Kopie déi s du gehal hues nei, an dat ass d’Reiefolleg fir vun enger Konsole aus ze fueren, net iwwer den Tunnel deen s du just ofgeschnidden hues. E Réckwee a fënnef Sekonne gewënnt all Kéier géint eng intelligent Reegel.

sudo pfctl -d
sudo pfctl -f /etc/pf.conf.previous
sudo pfctl -s rules

Fir Bestännegkeet brauch et en launch daemon deen pfctl -e ausféiert an deng Datei beim Start lued. Behandel en wéi all aner privilegiéiert Aarbecht: absolut Weeër, e Log deen s du duerno liese kanns, an en Test op enger Maschinn déi s du kierperlech erreeche kanns. En Daemon deen stëll feelt, léisst d’Maschinn ongeschützt an normal ausgesinn.

Dokumentéier d’Lücken, ugefaange mat engem zweeten VPN-Client deen säin eegenen Tunnelapparat erstallt. Deng Reegelen nennen een Tunnelinterface, also bleift en zweeten blockéiert oder gëtt vun enger breeder Reegel erfaasst déi méi spéit derbäikënnt. Tethering- an Hotspot-Interfacen erschéngen nëmme mol an verdéngen déi selwecht Notiz. Keng vun deene Lücken ass e Grond fir d’Politik ze iwwersprangen; se sinn d’Konditiounen ënner deene se nach hält.

Ähnlech Artikelen