iptables-Host nëmme mat VPN: nennt den tun-Apparat, net tun+
tun+ passt op all Tunnel op der Maschinn. Setzt een Apparatnam fest, setzt d'Ausnam vum endpoint als éischt a behält e Wee fir zréckzekommen, wärend Dir d'Politik testt.
-o tun+ ze schreiwen fillt sech wéi eng precis Uweisung un an ass eigentlech e Platzhalter fir all Tunnel, deen de Kernel huet. En zweeten VPN-Client, eng Containerbréck oder en Interface, dee vun enger ofgestierzter Sitzung iwwreg bleiw, erfëllen en all, an den Host erlaabt dann Traffic, deen d'Politik verhënnere sollt. D'Prozedur hei drënner fixéiert een Apparatnam, ordert d'Ausnamen esou, datt den Tunnel wierklech ka entstoen, an hannerléisst Iech e Wee zeréck, wann d'Regelen schlecht falen. All Schrëtt ass kuerz genuch, fir eleng zréckgezunn ze ginn.
Schrëtt 1: schreift d'Reegelen op, déi Dir elo hutt
Ier Dir eng Standardpolitik ännert, späichert den aktuellen Zoustand, sou datt d'Zréckrollen en Uerder ass an net eng Erënnerung. iptables-save > /root/iptables.pre schreift all Tabell an eng Datei, déi Dir kënnt restauréieren, an en zweeten Terminal mat enger oppener root-Sitzung ass keng Paranoia, wann d'Politik, déi Dir setzt, d'Verbindung fale léisst, déi se dréit. Wann Dir aus der Ferne schafft, plangt och e flush als Noutschalter an.
Dann lëscht d'Interfacen op, well en Numm, deen Dir ugeholl hutt, ass en Numm, deen Dir hätt misse liesen: ip -br link weist, wat just elo existéiert, an den Tunnel erschéngt eréischt, wann en uewen ass. Schreift d'Apparatnimm op, wéi Dir se liest.
Schrëtt 2: gitt dem Tunnel säin eegene Numm
OpenVPN acceptéiert dev tun_work an der Client-Konfiguratioun, an Linux erstellt dann en Interface mat genau deem Numm, amplaz tun0 zouzeginn. Den Numm bleift stabil iwwer Reconnecten, sou laang näischt anescht en usprécht, an dat ass wat eng Regel, déi den Apparat nennt, sënnvoll mécht.
Wou den Numm net kontrolléiert ka ginn, passt amplaz op d'Tunneladress oder en Paketszeechen. Béides funktionéiert, béides ass méi schwéier ze liesen, a béides feelt méi roueg, wann den Tunnel nei nummeréiert. Passt op alle Fall op eng Saach a sidd kloer wéi eng.
Schrëtt 3: schreift d'Politik mat der Ausnam vum endpoint als éischt
En Host nëmme mat VPN ass en Host mat Standardverweigerung an enger kuerzer Ausnamlëscht, an d'Ausnam, déi am meeschten zielt, ass déi, déi den Tunnel existéiere léisst. Baut se an dëser Reiefolleg op, mat der endpoint-Regel virun der Tunnel-Apparat-Regel, sou datt den Handshake eng Plaz huet fir ze goen:
# allow the tunnel to be built, then everything the tunnel carries
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 198.51.100.7 -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o tun_work -j ACCEPT
iptables -A INPUT -i tun_work -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTDéi wuertwiertlech endpoint-Adress an de Port gehéieren Ärem Provider, net dëser Säit. Wann den endpoint en Hostnumm ass, léist en eng Kéier op a fixéiert d'Resultat, well eng Regel keen Numm kann nogoen an eng rotéierend Äntwert brécht d'Politik roueg no der nächster DNS-Ännerung. Kontrolléiert och de Port, well Provideren, déi Iech op TCP 443 verréckelen, soss eng Regel brauchen, déi keen opgeschriwwen huet. En Tunnel, deen nëmmen iwwer ee Protokoll funktionéiert, ass meeschtens genau dës Ausloossung an net e Feeler an der Firewall.
Op engem Router geet déiselwecht Form an d'FORWARD-Kette fir d'Clienten hannendrun, an den eegenen Traffic vum Router brauch seng eegen Reegelen. En Reegelsatz, deen nëmmen duerchgeloosse Paketen deckt, léisst SSH an DNS um ale Wee, an esou gëtt en Router onereechbar an deem Moment, wou den Tunnel eropkënnt.
Schrëtt 4: kontrolléiert d'Reiefolleg, net nëmmen d'Präsenz
Reegelen ginn an der Reiefolleg evaluéiert, also verstoppt en ACCEPT, deen éischter kënnt, einfach de REJECT, deen Dir duerno bäigefüügt hutt. D'Match vun established an related ass et, wat Äntwerten op Är eege erausgehend Ufroen zréckkommen léisst, ouni en allgemenge Wee eranzekommen, an en nom Tunnel-Accept ze setzen heescht, datt en gefallenen Tunnel nach ëmmer Récktraffic op sengem eegene Interface duerchléisst.
Halt d'Zuel vun de Reegelen kleng genuch, fir op engem Écran gelies ze ginn. En Reegelsatz, deen Dir net kënnt auditéieren, ass dee wou Dir Ausnamen uewe bäisetze wäert, an esou kréien Standardverweigerungspolitike lues a lues eng Standarderlaabnes-Kant. Zielt d'ACCEPTen virun an no der Ännerung.
Schrëtt 5: maacht, datt en de Start an d'Adressfamill iwwerlieft
Reegelen, déi vun Hand agefouert goufen, verschwannen beim Reboot, also lued se aus dem Firewall-Service vun der Distributioun oder aus enger Unit, déi leeft, nodeems den Tunnel-Interface existéiert. Op tun_work an engem Skript ze referenzéieren, dee leeft, ier OpenVPN start, ass eng heefeg Manéier, eng Startschleif mat verworfene Traffic ze produzéieren.
Kontrolléiert duerno IPv6 getrennt, well eng gutt Standardverweigerungspolitik fir IPv4 näischt iwwer déi aner Famill seet. ip -6 route seet Iech, ob den Host eng Route huet, déi Traffic ëm en Tunnel kéint droen, deen nëmmen IPv4 verschafft, an ip6tables oder nftables brauch seng eegen equivalent Reegelen. Testt mat engem IPv6-only-Zil amplaz der Symmetrie vum Reegelsatz ze vertrauen.
Schrëtt 6: verifizéiert a sidd prett fir zréckzekommen
Hueft den Tunnel erop, bestätegt, datt de gewënschten Service funktionéiert, a probéiert dann eppes, wat d'Politik sollt ofleenen. Restauréiert mat iptables-restore < /root/iptables.pre, wann d'Äntwert Iech iwwerrascht, a fänkt eréischt dann un, Reegelen ze änneren. Bestännegkeet plus en getestene Wee fir zréckzekommen ass et, wat dëst zu enger Ännerung mécht, déi Dir zweemol kënnt maachen.