Kufizoni një portë OpenVPN në një LAN të vetme me rregullat e UFW
Lërini klientët e tunelit të arrijnë një nënrrjet dhe asgjë tjetër. Zinxhirë roje para pranimeve të hershme të UFW, një leje rruge dhe teste që vërtetojnë kufirin.
Vendosni lejen përpara se të hapni një skedar të murit të zjarrit: klientët e vërtetuar mund të hapin lidhje drejt një nënrrjeti të caktuar, dhe porta duhet të refuzojë çdo rrugë tjetër tranziti edhe kur një klient instalon rrugë shtesë. Ai fjali është projektimi, dhe çdo rregull më poshtë ekziston për ta zbatuar atë. Diçka më e gjerë, si i gjithë hapësira e adresave private, dalja në internet përmes tunelit ose trafiku mes barabartësh, është një projektim tjetër që kërkon vendimin e vet. Rregullat janë gjithashtu qëllimisht të mërzitshme, sepse një mur zjarri i zgjuar është ai që askush nuk mund ta auditojë më vonë.
Shkruani së pari topologjinë dhe lejen
Shembulli përdor një server Community OpenVPN me një pajisje TUN në hapësirën e përdoruesit të quajtur tun0, një pishinë klientësh 10.77.0.0/24, dhe një nënrrjet të lidhur 192.168.60.0/24 në lan0. Përcjellja IPv4 tashmë funksionon dhe LAN-i tashmë ka një rrugë kthimi drejt pishinës, kështu që asgjë këtu nuk varet nga përkthimi mes tyre.
Muri i zjarrit në këtë strehues është në pronësi të UFW, dhe asnjë grup rregullash kontejneri ose tabelë e veçantë nftables nuk mund të vendosë një rrugë pranimi më të hershme. Një shkurtore e shkarkimit të rrjedhës që kalon filtrin do t'i bënte zinxhirët e rojës thjesht dekor, prandaj konfirmoni që asnjëri nuk është aktiv. Lërini përcjelljen client-to-client të vetë OpenVPN të çaktivizuar, sepse trafiku mes barabartësh që nuk kalon kurrë filtrin e sistemit operativ nuk mund të kufizohet me të. Dëgjuesi i jashtëm dhe rregullat administrative mbeten si janë, pasi ky ndryshim rregullon trafikun e dekriptuar të tunelit në vend që të zëvendësojë murin e zjarrit.
Vendosni rojet përpara pranimeve të hershme të UFW
Një leje rruge e ndjekur nga një refuzim nuk mjafton për një kufi të rreptë. Rregullat standarde before pranojnë trafikun e vendosur dhe disa ICMP përpara se të konsultohet çdo rregull përdoruesi, kështu që një rrjedhë e lejuar javën e kaluar mund të mbetet jashtë kufizimit të ri të destinacionit vetëm sepse ka ende gjendje. Bëni një kopje sigurie të skedarëve të UFW dhe mbani hapur një konsolë jashtë brezit përpara redaktimit.
Në seksionin *filter të skedarit /etc/ufw/before.rules, deklaroni dy zinxhirë pranë deklaratave ekzistuese dhe përpara çdo rreshti rregulli.
:vpn-src-guard - [0:0]
:vpn-reply-guard - [0:0]Menjëherë pas deklaratave, dhe përpara lejeve të hyrjes dhe përcjelljes, hidhuni brenda tyre dhe përcaktoni çfarë pranojnë.
-A ufw-before-input -i tun0 -j DROP
-A ufw-before-forward -i tun0 -j vpn-src-guard
-A ufw-before-forward -o tun0 -j vpn-reply-guard
-A vpn-src-guard -o lan0 -d 192.168.60.0/24 -s 10.77.0.0/24 -m conntrack --ctdir ORIGINAL -j RETURN
-A vpn-src-guard -j DROP
-A vpn-reply-guard -i lan0 -d 10.77.0.0/24 -s 192.168.60.0/24 -m conntrack --ctstate RELATED,ESTABLISHED --ctdir REPLY -j RETURN
-A vpn-reply-guard -j DROPMbani pjesën tjetër të seksionit dhe rreshtin e tij COMMIT. Ngjitja e një tabele të dytë filtri ose fshirja e rregullave të palidhura është mënyra se si një ndryshim i murit të zjarrit bëhet ndërprerje, dhe skedari është një rinisje larg nga të qenit kopja e vetme që ka rëndësi.
Lexoni çfarë pranon dhe çfarë refuzon çdo roje
Zinxhiri i parë vazhdon përpunimin vetëm kur burimi është në pishinë, destinacioni është ai nënrrjeti i vetëm, ndërfaqja e daljes është LAN-i dhe paketa udhëton në drejtimin origjinal të rrjedhës së saj. Çdo gjë tjetër që vjen nga tuneli hidhet, duke përfshirë një burim jashtë pishinës dhe çdo destinacion përtej nënrrjetit të lejuar.
Një paketë mes barabartësh hyn dhe del nga tun0, kështu që dështon në provën e ndërfaqes së LAN-it edhe përpara se të arrihet një kontroll destinacioni. Lidhjet e reja nga LAN-i drejt klientëve dështojnë gjithashtu në provën e drejtimit të përgjigjes, gjë që mbyll si parazgjedhje rrugën e kundërt të kthimit të thirrjes.
Objektivi RETURN mban në lojë politikën e zakonshme të UFW. Këta zinxhirë filtrojnë, dhe leja e rrugës që shtoni më pas ende vendos nëse një paketë e mbijetuar pranohet. Pikërisht ai ndarje ju lejon të ndryshoni më vonë nënrrjetin e lejuar në një vend të vetëm. Sikur rojet të pranonin paketat drejtpërdrejt, çdo rregull i ardhshëm do të duhej shtuar dy herë.
Autorizoni nënrrjetin dhe mbyllni dyert anësore
Shikoni më parë lejen e rrugës, pastaj hiqni flamurin e pamjes paraprake për ta zbatuar: sudo ufw --dry-run route allow in on tun0 out on lan0 from 10.77.0.0/24 to 192.168.60.0/24. Më pas shqyrtoni rendin e rregullave të përdoruesit, sepse një refuzim i mëparshëm ende fiton ndaj një lejeje të mëvonshme. Një leje për të gjithë nënrrjetin është gjithashtu forma e gabuar kur duhet të jetë e arritshme vetëm porta HTTPS e një strehuesi.
Vini re çfarë bën hedhja e hyrjes: klientët e tunelit nuk mund të arrijnë asnjë shërbim në vetë portën, duke përfshirë një dëgjues DNS të lidhur me adresën e tij LAN. Strehimi i DNS atje kërkon një përjashtim të qëllimshëm përpara hedhjes dhe një kontratë lejeje të rishikuar. Nëse UFW menaxhon IPv6, shtoni hedhje përputhëse për tun0 në skedarin before6.rules gjithashtu, sepse një listë destinacionesh IPv4 nuk thotë asgjë për paketat IPv6.
Verifikoni politikën e ngarkuar, jo pamjen paraprake
Shikoni më parë ringarkimin, zbatoni atë në një dritare mirëmbajtjeje dhe lexoni grupin e rregullave të gjallë.
sudo ufw --dry-run reload
sudo ufw show rawKonfirmoni që rojet e tunelit shfaqen përpara lejeve të parazgjedhura të gjendjes dhe ICMP. Një ufw status i thjeshtë nuk shfaq rregullat before të redaktuara me dorë, prandaj operatorët arrijnë në përfundimin se mungon një rregull kur ai në fakt është i ngarkuar. Lexoni listën e papërpunuar nga lart poshtë në vend që të kërkoni një fragment. Nëse rojet shfaqen pas një lejeje gjendjeje, kufiri nuk po bën atë që sugjeron skedari.
Pastaj provoni sjelljen, jo tekstin. Hapni një lidhje të re drejt një strehuesi të lejuar dhe vëzhgoni përgjigjen, drejtoni një kërkesë të pafajshme drejt një destinacioni jashtë nënrrjetit dhe konfirmoni që vdes, provoni një lidhje mes barabartësh, provoni një shërbim lokal në portë dhe provoni një lidhje të pakërkuar nga LAN-i drejt klientit. Përfshini një rrjedhë jashtë fushës që ekzistonte përpara ndryshimit, dhe pastroni vetëm atë rrjedhë në vend që të zbrazni të gjithë tabelën e gjurmimit të makinës.
Regjistroni kufijtë pranë rregullave: kjo kufizon tranzitin dhe asgjë tjetër. Nuk e pengon një klient të përdorë lidhjen e tij të internetit, nuk e pengon një strehues të lejuar të LAN-it të përcjellë trafikun më tej, dhe nuk zëvendëson vërtetimin brenda shërbimeve të lejuara.