Ien VPN-einpunt fia Squid: in smelle CONNECT-útsûndering
Lit ien goedkarde boarne ien VPN-gateway op poarte 1194 fia Squid berikke, hâld de globale poartewachten oan en bewize dat der neat oars iepene is.
Squid beantwurdet in CONNECT-fersyk mei de earste http_access-regel dy’t past, en dy regel kin in wegering wêze. Dit iene feit ferklearret wêrom’t in útsûndering foar in VPN-einpunt meastentiids by de earste poging mislearret, om’t it fersyk nea by de tastimming komt dy’t immen ûnderoan tafoege hat. In smelle repedaasje hâldt de besteande poartewachten oan en leart se oer ien neigongen boarne, bestimming en poarte. Al it oare op de proxy gedraacht him krekt as earder.
Hoe’t Squid oer in CONNECT-fersyk beslút
In CONNECT-fersyk neamt in host en in poarte, en Squid rint de http_access-regels yn folchoarder troch oant ien fan har past. In passende wegering einiget de evaluaasje daliks en de klant krijt in 403 fan de proxy. Dêrom jildt de posysje fan in regel mear as de formulearring derfan. Deselde regel ien trep omheech ferpleatse kin de útkomst folslein feroarje.
De konvinsjonele wachten wegerje alles bûten Safe_ports en wegerje CONNECT bûten SSL_ports. Dy nammen binne ACL’s dy’t yn jo eigen konfiguraasje definiearre binne, dus har ynhâld heart by jo en net by it protokol. In distribúsje kin in breed berik oan poarten as Safe_ports tastean wylst CONNECT apart beheind wurdt. Lês de libbene wearden foardat jo oannimme dat in poarte neffens it ûntwerp blokkearre is.
Befêstigje dat de proxy it ûnderdiel is dat it fersyk wegeret. In 403 dy’t troch Squid makke wurdt liket hielendal net op in TLS-warskôging fan de VPN-tsjinner, en de beide yn ien probleem gearfoegje kostet it earste oere. Kontrolearje de tagongslog-regel foar it fersyk, om’t dy sawol de aksje as de regel fêstleit dy’t him makke hat.
Bou ien kombinearre passen ynstee fan trije losse ACL’s
Bou de útsûndering út trije feiten: in goedkard boarneberik, ien goedkard bestimmingsadres en de iene poarte dêr’t it einpunt op harket. Twa losse ACL’s en ien kombinearre passen jouwe in hiel oare belied, om’t it de kombinaasje is dy’t evaluearre wurdt. Neam de kombinearre ACL nei wat er tastiet, net nei de metoade dy’t er draacht.
De foarm hjirûnder brûkt dokumintaasjeberikken dy’t ferfongen wurde moatte troch neigongen wearden. Squid reservet gjin fan dizze nammen, dus se binne fan jo om te kiezen en fan jo om se konsistint te hâlden. Dit resept is beheind ta Squid 6 en 7, waans dokumintearre konfiguraasje de all-of-groep stipet. De aktuele referinsje markearret dy rjochtlinen as net beskikber yn Squid 8, behannelje dit dus as in ferzje-bûn resept en net as in migraasjepaad, en kontrolearje de rjochtline yn ’e referinsje fan jo eigen ferzje foardat jo him tapasse.
acl pvpn_src src 192.0.2.128/25
acl pvpn_dst dst 198.51.100.77/32
acl pvpn_port port 1194
acl pvpn_ok all-of CONNECT pvpn_port pvpn_dst pvpn_srcDe all-of-groep past allinnich as elk lid past, wat betsjut dat boarne, bestimming en poarte op ien regel kontrolearre wurde. De groep jout sels neat en in fersyk dat mar op twa fan de trije feiten past, kin him net befredigje. Dy eigenskip hâldt de útsûndering smel as immen letter in twadde gateway tafoeget. Of de nije bestimming wurdt bewust tafoege, of it fersyk falt werom op de oarspronklike wachten.
Bûch de poartewachten sûnder se te ferwiderjen
Op har besteande posysjes sjogge de twa konvinsjonele wachtregels der sa út. Se steane meastentiids nei de autentikaasje en foar de beliedsregels dy’t alles tastean.
http_access deny !Safe_ports
http_access deny CONNECT !SSL_portsFoegje de ûntkende kombinearre passen oan elk ta, sadat in passende útsûndering in wacht oerlibbet dy’t him oars wegerje soe. Allinnich de wachtregels feroarje, en allinnich mei ien ekstra term elk.
http_access deny CONNECT !SSL_ports !pvpn_ok
http_access deny !Safe_ports !pvpn_okTermen op ien tagongsregel wurde kombinearre, dus de regel wegeret no allinnich fersiken dy’t sawol de oarspronklike kontrôle as de útsûndering misse. In fersyk foar it goedkarde einpunt giet troch, en elk oar fersyk hâldt it âlde poartegedrach. Dit is smeller as it tafoegjen fan de poarte oan in globale SSL_ports-list, wat dy poarte foar elke bestimming tastean soe. As de poarte al yn dy list stiet, ferget dit ACL neat en it âldere, bredere tastimming jildt noch foar oare bestimmingen, lês dêrom de libbene list foardat jo beweare dat de útsûndering de poarte iepene hat. It is ek weromdraaibaar, om’t twa regels weromgeane nei har eardere foarm. De tagongskontrôle-referinsje dokumintearret de folchoarder en de konvinsjonele wachten dêr’t dizze feroaring fan ôfhinget.
Wêr’t de útsûndering net pleatst wurde mei
De ferlieding is om in tastimming boppe de wachten te pleatsen en klear te wêzen. Dy pleatsing slacht ek de autentikaasje- en lokaalbestimmingsbeskermingen oer dy’t meastentiids tichtby de boppekant fan in wurkjende konfiguraasje steane. It resultaat is gjin smelle útsûndering, it is in gat mei in kommentaar derboppe. Hâld elke nije tastimming op deselde neigongen stap as de rest fan it klantbelied.
Kontrolearje wat it fersyk nei de poartewachten noch nedich hat. In autentisearre akkount, in tastien klantadres en in bestimmingsbelied jilde noch, en de útsûndering feroaret gjin fan har. As jo proxy it goedkarde akkount al nei willekeurige bestimmingen gean lit, wie de poartewacht nea de echte kontrôle.
Tink nei oer de fraach oft it einpunt wol TCP is. In CONNECT-útsûndering draacht TCP-streams, en in OpenVPN-profil dat UDP brûkt sil der net troch berikber wurde. Feroarje it profyl allinnich nei TCP as de tsjinner sa harket en de operator it ferskil yn gedrach akseptearret.
Kontrolearje de grins mei de ûntlieder en in echt fersyk
Ûntlied de konfiguraasje foardat jo weromlade, en hâld in twadde sesje iepen wylst jo dat dogge. In syntaksflater by it weromladen kin de proxy op ’e âlde konfiguraasje litte of de nije folslein wegerje. De ûntlieder rapportearret de wegere regel, wat mear is as de klantflater jo fertelle sil.
Laad dan werom en stjoer ien echt CONNECT-fersyk troch de proxy fan in goedkarde boarne. De ûntlieder-run komt earst, om’t weromladen mei in typflater jo neat oer it belied leart.
squid -k parse
squid -k reconfigure
curl -v -p -x http://proxy.lab.internal:3128 https://vpn.lab.internal:1194/ --max-time 5Test trije gefallen: in goedkarde boarne en akkount, in net-goedkarde boarne, en in oare bestimming op deselde poarte. It tredde gefal is it gefal dat bewiist dat de útsûndering smel is, om’t it de poarte sûnder de bestimmingspassen útoefenet. Lês de tagongslog foar alle trije ynstee fan op de klantberjocht te fertrouwen. In slagge CONNECT festiget in TCP-stream en neat mear, dus de VPN-hânskodding bliuwt in aparte test.