Għaliex hook tal-firewall tal-VPN iżid l-istess regola darbtejn
Rikonnessjoni tista’ terġa’ tħaddem il-hook tiegħek, għalhekk iddisinja għall-istat mixtieq: ktajjen proprji, test qabel id-dħul, bidla serializzata waħda u żarmatura dejqa.
Il-hook jaħdem l-ewwel darba, u wara tliet rikonnessjonijiet il-katina żżomm tliet kopji tal-istess regola. Xejn ma falla bl-għajjat; l-iskritt sempliċement għamel dak li ntqallu kull darba li tħaddem. Il-hook tal-VPN huwa operazzjoni ta’ konfigurazzjoni li tista’ taħdem aktar minn darba, għalhekk għandu bżonn sid, stat mixtieq u bidla serializzata. Imxi f’dik l-ordni u d-duplikati jieqfu.
Agħti sid lir-regoli qabel ma tikteb waħda
Iddeċiedi liema katina jew tabella tappartjeni għal din l-integrazzjoni qabel ma tikteb regola waħda. Katina dedikata li l-hook joħloq u jbattal hija l-aktar forma ċara ta’ pussess, għax it-tindif jista’ mbagħad ineħħi dik il-katina mingħajr ma jmiss il-politika ta’ ħadd ieħor. Jekk trid iżżid regoli ma’ katina kondiviża, immarkahom b’kumment sabiex tfittxija aktar tard issib eżatt tiegħek. Il-pussess huwa dak li jagħmel iż-żarmatura sigura, u ż-żarmatura hija l-parti li tfalli bil-kwiet.
iptables -N VPN_HOOK 2>/dev/null || true
iptables -C INPUT -j VPN_HOOK 2>/dev/null || iptables -I INPUT -j VPN_HOOK
iptables -S VPN_HOOK
Kumment hawn mhuwiex tiżjin. Hija d-differenza bejn li tneħħi r-regola tiegħek u li tneħħi regola li tidher simili b’kumbinazzjoni, u tibqa’ fis-sett tar-regoli salvat. Ikteb il-kumment darba f’varjabbli u uża l-istess string f’kull kmand li jżid, jittestja jew iħassar.
Ittestja l-istat mixtieq minflok iżżid mill-ġdid
Ikteb x’għandu jkun hemm waqt li t-tunnel ikun ’il fuq: liema interfaces, liema sors u destinazzjoni, liema protokoll u liema port. Imbagħad esprimi kull regola bħala test li jiġi segwit minn dħul, sabiex it-tieni ħarġa ssib ir-regola u ma tagħmel xejn. Il-kmand ta’ verifika joħroġ b’żero meta r-regola tkun teżisti, u dak huwa eżatt is-sinjal li l-iskritt jeħtieġ. Ir-referenza tal-iptables tiddokumenta l-forom ta’ verifika, żieda u dħul użati hawn.
iptables -C VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT ||
iptables -A VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT
Oqgħod attent għall-pożizzjoni. Li tivverifika regola u ddaħħalha fil-quċċata jista’ jċaqlaq permess quddiem ċaħda delibrata li qabel kienet tiġi l-ewwel, u għalhekk it-tieni ħarġa tbiddel l-imġiba anki jekk ma żżidx xejn. Żid fit-tarf ġewwa l-katina tiegħek stess, u kkontrolla l-ordni permezz ta’ fejn jinsab il-qabża f’dik il-katina. Jekk l-ordni fil-katina hija importanti, ibni l-katina mill-ġdid minn lista magħrufa minflok tħejjiha regola b’regola.
Ieqaf jekk ir-regola li teħtieġ ma tistax tiġi espressa bħala test stabbli. Dan normalment ifisser li l-istat mixtieq għadu vag.
Serializza l-bidla minflok tittama li tibqa’
Tnejn minn sejħiet tal-hook jistgħu jikkoinċidu, u t-tnejn jistgħu jaraw regola nieqsa qabel ma wieħed iżidha. L-għażla ta’ stennija ta’ xtables tagħmel kmand jistenna l-lock, iżda ma tagħmilx sekwenza ta’ verifika-mbagħad-żieda atomika fuq żewġ kmandi. Serializza l-operazzjoni kollha bil-lock tiegħek stess, jew uża manager li japplika lott iddikjarat bħala tranżazzjoni waħda. nftables jista’ jagħmel tal-aħħar, u dan huwa raġuni waħda biex tippreferih fuq hosts fejn huwa disponibbli.
flock /run/vpn-hook.lock /usr/local/sbin/vpn-firewall-apply
nft -f /etc/nftables/vpn-hook.nft
Liema mekkaniżmu tagħżel, żomm is-sezzjoni kritika qasira u agħmilha reentranti: hook li jfalli f’nofs triq għandu jkun sigur biex jerġa’ jitħaddem. Irreġistra r-riżultat sabiex ħarġa ripetuta tkun tidher fil-journal minflok tiġi dedotta minn għadd ta’ regoli. Jekk żewġ superviżuri differenti jistgħu jsejħu l-hook, sewwi dan l-ewwel; ebda lock ma jsewwi żewġ sidien.
Żarma biss dak li hu tiegħek
Iż-żarmatura trid tiddistingwi konnessjoni ta’ sostituzzjoni minn dik li rtirat, u trid tiflaħ għal avveniment li qatt ma jikseb tindif ordnat. Ħassar bl-istess identifikaturi li użajt biex iżżid, u qatt ma tbattal katina kondiviża biex tissimplifika t-tindif. Wara waqfa iebsa, ħaddem pass ta’ rikonċiljazzjoni fil-bidu li jmiss minflok ma tassumi li l-hook t’isfel ħadem.
iptables -D VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT
iptables -F VPN_HOOK
ip -brief link show type tun
Il-ħajja tal-interface tappartjeni wkoll għad-disinn. Rikonnessjoni tista’ toħloq apparat b’isem differenti, u għalhekk regola li tikkodifika l-isem tat-tieni tunnel issir skaduta waqt li għadha tidher valida. Ippreferi l-identità li tesponi l-konnessjoni stess, u aqrah mill-ġdid f’kull ħarġa. Ittestja t-tliet avvenimenti separatament: konnessjoni ripetuta, konnessjoni ta’ sostituzzjoni u għeluq. It-traffiku permess għandu jiflaħ għat-tlieta kollha mingħajr duplikati, u servizzi mhux relatati għandhom jibqgħu ma jintmessux.
Il-mixja tintemm meta l-hook ikollu sid, test għal kull regola li jżid, mogħdija serializzata waħda u żarmatura li tneħħi biss l-istat tiegħu stess. Hook li huwa sigur li jitħaddem darbtejn jiswa aktar minn hook li huwa għaqli darba.