Un VPN care se conectează dar nu ajunge nicăieri este de obicei descris ca o problemă de firewall, iar soluția la care apelează oamenii este plasarea interfeței tunelului într-o zonă de încredere. Aceasta funcționează în sensul că traficul începe să curgă, dar admite și mult mai mult decât serviciul dorit. Cele două politici implicate sunt diferite: una admite transportul exterior către un socket care ascultă, iar cealaltă autorizează traficul decriptat să ajungă la o anumită resursă. Tratarea lor ca o singură setare este ceea ce transformă o permisiune îngustă într-una largă. Ambele se decid în locuri diferite, de aceea greșeala este atât de ușoară.

Două politici, un tunel

Politica exterioară răspunde la o întrebare simplă: poate un pachet din această sursă să ajungă la UDP 1194 pe acest host? Politica interioară răspunde la alta: poate clientul autentificat din spatele acelui tunel să ajungă la această destinație, cu acest protocol, pe acest port? Prima este despre un socket, a doua despre o cale, iar firewalld le modelează cu obiecte diferite pentru că se decid în puncte diferite. Una este o proprietate a unui socket pe acest host, cealaltă a unei căi prin el.

Consecința practică este că un tunel funcțional nu spune nimic despre a doua politică, iar o a doua politică corectă nu o face pe prima inutilă.

Admiteți ascultătorul exterior real

Începeți prin a inspecta ce este deja atribuit în loc să presupuneți. Citiți zonele active, listați zona care transportă efectiv traficul de intrare și verificați definiția serviciului instalat, pentru că numele unui serviciu descrie un set de porturi și nu spune nimic despre dacă ascultătorul acestui server îi corespunde.

firewall-cmd --get-active-zones
firewall-cmd --zone=public --list-all
firewall-cmd --info-service=openvpn

Dacă ascultătorul este într-adevăr UDP 1194 în acea zonă, deschideți exact acel port și transport, apoi faceți permanentă aceeași regulă specifică după ce ați testat-o. Verificați și atribuirile bazate pe sursă, pentru că o zonă legată de un interval de surse poate captura traficul înainte ca zona interfeței să-l vadă.

Autorizați separat destinația decriptată

O conexiune către un serviciu care rulează pe serverul VPN însuși este politică de intrare locală. O conexiune redirecționată către un alt host din LAN are nevoie de politică de redirecționare, redirecționarea activată în kernel și o rută de răspuns — trei cerințe separate pe care oamenii le contopesc adesea într-una. Obiectele de politică moderne din firewalld descriu traficul direcționat între o zonă de intrare și una de ieșire, iar acesta este locul potrivit pentru a exprima ce surse VPN pot ajunge la ce servicii private.

Definiți explicit sursele permise și lăsați tot restul să cadă într-un refuz. O permisiune pentru serviciul exterior nu este acea politică, oricum ar arăta dispunerea zonelor.

De ce încrederea în interfață este scurtătura greșită

Plasarea interfeței tunelului într-o zonă al cărei scop acceptă tot admite tot traficul decriptat către fiecare serviciu expus de host, inclusiv cele pe care nu le-ați revizuit. Retargetarea zonei de încredere pentru a fi restrictivă pe o mașină în funcțiune este mai rău, pentru că alte interfețe și intervale de surse pot depinde deja de semnificația ei și își vor schimba comportamentul când o editați. Dacă aveți nevoie de o politică îngustă, creați una; nu reutilizați o zonă partajată.

Mențineți stabilă și atribuirea de zonă a tunelului prin orice componentă care deține acea configurație. Pierderea atribuirii la repornire produce o defecțiune care pare o problemă de regulă de firewall și în realitate este o problemă de persistență.

Verificați trei lucruri, inclusiv un refuz

Testați conexiunea exterioară din exterior, testați un serviciu interior autorizat de la un client conectat și testați un serviciu care ar trebui să rămână inaccesibil. Al treilea test este cel care distinge o politică de un efect secundar, și este cel pe care oamenii îl omit pentru că totul pare să funcționeze. Dacă serviciul refuzat răspunde, ați admis o zonă și nu un serviciu.

Notați zona, portul, transportul și obiectul de politică în notele serverului. Altfel următoarea modificare pe acest host va porni de la aceeași presupunere.

Articole similare