Firewall tal-VPS: iftaħ biss il-port tal-VPN, imbagħad ippruvah
Port wieħed irid jibqa’ pubbliku, inkella l-ebda klijent ma jgħaqqad. Irrifjuta l-bqija, żomm il-kunsinja separata mill-input, u ħalli triq ta’ rkupru li ttestjajt qabel.
Firewall li jħalli biss il-port tal-VPN mhuwiex regola waħda. Huma tliet deċiżjonijiet separati li jaqblu b’kumbinazzjoni fuq l-istess numru tal-port: il-katina tal-input tiddeċiedi x’jista’ jasal għal proċess lokali, il-katina tal-kunsinja tiddeċiedi x’jista’ jgħaddi mill-host f’isem il-klijenti tat-tunnel, u t-tabella NAT terġa’ tikteb l-indirizz tas-sors fi ħruġ. Żbalja waħda minnhom u r-riżultat rarament ikun qtugħ nadif. Ikollok host li jaċċetta l-klijenti imma ma jgħabbi xejn, jew host li jidher magħluq sakemm xi ħadd jaqra l-ordni tal-ktajjen.
L-uniku port li ma jistax jingħalaq
Is-semmiegħa tal-VPN trid taċċetta konnessjonijiet minn indirizzi li ma tistax tbassar, għalhekk hija servizz pubbliku b’definizzjoni. Din hija l-unika eċċezzjoni li fuqha huwa mibni d-disinn: port UDP wieħed għal OpenVPN, port UDP wieħed għal WireGuard, port TCP wieħed għal VPN SSL. Kollox ieħor jappartjeni wara t-tunnel, jiġifieri s-servizzi tal-applikazzjoni għandhom jintrabtu mal-indirizz tat-tunnel jew mal-loopback, mhux ma kull interfacca.
It-trabiżż, madankollu, mhuwiex infurzar. Proċess marbut ma’ 0.0.0.0 huwa aċċessibbli biss jekk regola tħallih, u l-politika awtomatika hija l-pjan B għall-traffiku li ma qabel ma’ ebda regola, mhux ir-regola li tirregola l-port. Aċċettazzjoni mqiegħda fuq ir-rifjut tiegħek tibqa’ aċċettazzjoni, u li tbiegħed servizz mill-indirizz pubbliku hija titjib indipendenti, mhux sostitut għall-katina.
Input, kunsinja u NAT iwieġbu mistoqsijiet differenti
It-traffiku tal-input huwa destinat għall-host innifsu, għalhekk hemm jgħixu s-semmiegħa tal-VPN u t-triq amministrattiva. It-traffiku tal-kunsinja jgħaddi mill-host, u l-klijenti tat-tunnel jeħtieġuh flimkien ma’ net.ipv4.ip_forward=1. Il-konfigurazzjoni klassika nofsha mħassra tippermetti l-fluss ħiereġ u tinsa d-direzzjoni tar-ritorn, għalhekk il-klijent jispiċċa l-handshake u mbagħad ma jgħabbi xejn; regola conntrack għat-traffiku stabbilit u relatat tkopri dik id-direzzjoni.
NAT hija t-tielet mistoqsija. Mingħajr kitba mill-ġdid fil-postrouting, il-pakketti kkunsinjati joħorġu bis-sors privat tat-tunnel u jiġu mwarrba ’l fuq, għax l-ebda netwerk lil hinn mill-host ma jaf kif idawwar il-pool lura. Il-prefiss tas-sors f’dik ir-regola jrid jaqbel mal-pool tal-VPN, mhux mal-indirizz tal-host stess, u l-istess jgħodd għar-regola tal-kunsinja li ssemmi s-subnet tal-klijenti.
IPv6 hija t-tieni politika, mhux ħsieb ta’ wara. Host b’katina IPv4 stretta u politika miftuħa fuq ip6tables ma għalaq xejn; is-servizzi għadhom aċċessibbli mill-familja l-oħra. Jew irrifletti s-sett ta’ regoli bl-ip6tables jew itfi IPv6 apposta fuq l-interfacca pubblika, u ikteb liema għażilt.
Bażi li tinqara f’pass wieħed
Ibda bir-rifjut, imbagħad żid biss dak li jeħtieġ il-host. L-ewwel loopback u tweġibiet, imbagħad it-triq amministrattiva, imbagħad is-semmiegħa tat-tunnel, imbagħad il-politika tal-kunsinja għall-klijenti:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -m conntrack --ctstate NEW -j ACCEPT
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADEL-ismijiet tal-interfacċi, il-port u l-pool huma postijiet vojta; aqrahom mis-server minflok tikkupjahom. Li tħaddan ir-riżultat huwa importanti daqs li tikteb, għax sett ta’ regoli li jgħix biss fil-memorja jisparixxi fir-reboot li jmiss u jerġa’ jiftaħ il-host bil-kwiet. Agħmlu permanenti bil-mekkaniżmu tad-distribuzzjoni, u żomm kopja barra mill-magna għall-jum li l-magna ma tagħmilx boot.
Tagħlaq l-aħħar port mingħajr ma titlef il-host
Hemm nassa fid-disinn. Jekk SSH jeżisti biss mit-tunnel, servizz tal-VPN li jfalli jieħu SSH miegħu, u t-triq waħda lura tista’ tkun konsole li qatt ma ftaħt. Qabel ma tagħlaq l-aħħar port pubbliku, ikkonferma li dik il-konsole teżisti u li tassew tista’ tużaha, jew żomm triq amministrattiva dejqa waħda li ma tiddependix mit-tunnel: SSH minn indirizz fiss, ċavetta biss, autentikazzjoni bil-password mitfija.
Applika l-bidla minn sessjoni li hija diġà stabbilita, mhux mill-konnessjoni li se tiffiltra. Ippjana rollback sabiex żball jiskadi minflok ma jsir permanenti, pereżempju xogħol systemd-run --on-active=10min li jġib lura s-sett ta’ regoli preċedenti, u żomm it-tieni sessjoni SSH miftuħa waqt li ttestja l-ewwel waħda. Imbagħad ivverifika li x-xogħol tar-rollback tassew jispara, għax rkupru mhux ittestjat huwa l-istess bħal ebda rkupru.
Ivverifika t-triq, mhux l-iskritt
Aqra r-regoli mgħobbija, mhux il-fajl li suppost għabbihom. Minn host estern awtorizzat, ikkonferma li jwieġbu biss il-portijiet maħsuba; minn ġewwa t-tunnel, ikkonferma li s-servizzi li ridt tippubblika huma aċċessibbli. Politika ta’ rifjut awtomatiku li timblokka wkoll it-traffiku tat-tunnel tidher identika għal lockdown li jaħdem sakemm xi ħadd jipprova jużaha.
iptables -S
iptables -t nat -S
ss -lntup
ip -4 addr showInnota l-port permess, il-pool tal-klijenti, l-interfacca tat-tunnel, is-sors amministrattiv u l-proċedura tal-konsole ħdejn il-konfigurazzjoni. Il-bidla li jmiss fil-pool jew fl-isem tal-interfacca trid taqbel kemm fil-filter kif ukoll fir-regola NAT, inkella l-host jerġa’ lura għal stat nofsu miftuħ mingħajr ma ħadd jinduna.
Drawwa waħda tiswa iktar mis-sett ta’ regoli: wara kull bidla, ipprova t-triq tal-kunsinja b’talba mill-klijent u t-triq tal-irkupru b’tieni sessjoni. Lockdown li ma użajtx huwa biss ipoteżi.