Einn VPN-endapunktur í gegnum Squid: þröng CONNECT-undanþága
Leyfðu einni samþykktri uppsprettu að ná einni VPN-gátt á porti 1194 í gegnum Squid, haltu alþjóðlegu porthlerunum og sannaðu að ekkert annað hafi opnast.
Squid svarar CONNECT-beiðni með fyrstu http_access-línunni sem passar, og sú lína getur verið synjun. Þessi eina staðreynd útskýrir hvers vegna undanþága fyrir VPN-endapunkt mistekst yfirleitt í fyrstu tilraun, því beiðnin nær aldrei að leyfinu sem einhver bætti við neðst. Þröng lagfæring heldur núverandi porthlerunum og kennir þeim eina yfirfarna uppsprettu, áfangastað og port. Allt annað á milliþjóninum hagar sér nákvæmlega eins og áður.
Hvernig Squid ákveður CONNECT-beiðni
CONNECT-beiðni nefnir hýsil og port, og Squid fer í gegnum http_access-línurnar í röð þar til ein þeirra passar. Passandi synjun endar matið samstundis og biðlarinn fær 403 frá milliþjóninum. Þess vegna skiptir staða reglu meira máli en orðalag hennar. Að færa sömu línu eitt þrep upp getur breytt niðurstöðunni algjörlega.
Hefðbundnu hlerarnir synja öllu utan Safe_ports og synja CONNECT utan SSL_ports. Þessi nöfn eru ACL sem skilgreind eru í þinni eigin stillingu, þannig að innihald þeirra er þitt en ekki samskiptareglunnar. Dreifing getur leyft breitt svið porta sem Safe_ports á meðan hún takmarkar CONNECT sérstaklega. Lestu lifandi gildin áður en þú gerir ráð fyrir að port sé lokað vegna hönnunar.
Staðfestu að milliþjónninn sé sá þáttur sem synjar beiðninni. 403 sem Squid býr til líkist alls ekki TLS-viðvörun frá VPN-þjóninum, og að bræða þau tvö í eitt vandamál kostar fyrsta klukkutímann. Athugaðu aðgangsannálslínuna fyrir beiðnina, því hún skráir bæði aðgerðina og regluna sem framleiddi hana.
Byggðu eitt sameinað samræmi í stað þriggja lausra ACL
Byggðu undanþáguna á þremur staðreyndum: samþykktri uppsprettusviði, einu samþykktu áfangastaðarheiti og því eina porti sem endapunkturinn hlustar á. Tvö laus ACL og eitt sameinað samræmi gefa mjög mismunandi stefnu, því það er samsetningin sem er metin. Nefndu sameinaða ACL eftir því sem hún leyfir, ekki eftir aðferðinni sem hún ber.
Formið hér að neðan notar skjalsvið sem þarf að skipta út fyrir yfirfarin gildi. Squid áskilur sér ekkert þessara nafna, svo þú velur þau og þú heldur þeim samkvæmum. Þessi uppskrift er takmörkuð við Squid 6 og 7, en skjalfest stilling þeirra styður all-of-hópinn. Núverandi tilvísun merkir þessar tilskipanir óaðgengilegar í Squid 8, svo líttu á þetta sem útgáfubundna uppskrift en ekki flutningsleið, og athugaðu tilskipunina í tilvísun þinnar eigin útgáfu áður en þú beytir henni.
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_srcall-of-hópurinn passar aðeins þegar hver meðlimur passar, sem þýðir að uppspretta, áfangastaður og port eru athuguð á einni línu. Hópurinn veitir ekkert sjálfur, og beiðni sem passar aðeins við tvær af þremur staðreyndum getur ekki fullnægt honum. Þessi eiginleiki heldur undanþágunni þröngri þegar einhver bætir við annarri gátt síðar. Annaðhvort er nýi áfangastaðurinn bætt við viljandi, eða beiðnin fellur aftur á upprunalegu hlerana.
Beygðu porthlerana án þess að fjarlægja þá
Á núverandi stöðum sínum líta hefðbundnu hleralínurnar tvær svona út. Þær standa venjulega eftir auðkenningu og fyrir stefnulínurnar sem leyfa allt.
http_access deny !Safe_ports
http_access deny CONNECT !SSL_portsBættu neitaða sameinaða samræminu við hvora þeirra, svo passandi undanþága lifi af hlera sem myndi annars synja henni. Aðeins hleralínurnar breytast, og hver þeirra aðeins um eitt viðbótarlið.
http_access deny CONNECT !SSL_ports !pvpn_ok
http_access deny !Safe_ports !pvpn_okLiðir á einni aðgangslínu eru sameinaðir, svo línan synjar nú aðeins beiðnum sem mistakast bæði upprunalegu athugunina og undanþáguna. Beiðni fyrir samþykktan endapunkt fer í gegn, og hver önnur beiðni heldur gamla porthegðun. Þetta er þrengra en að bæta portinu við alþjóðlegan SSL_ports-lista, sem myndi leyfa það port fyrir hvern áfangastað. Ef portið er þegar á þeim lista þrengir þetta ACL ekkert og eldra, víðtækara leyfið gildir áfram fyrir aðra áfangastaði, svo lestu lifandi listann áður en þú heldur því fram að undanþágan hafi opnað portið. Hún er líka afturkræf, því tvær línur fara aftur í fyrra form. Tilvísun um aðgangsstýringu skjalfestir röðina og hefðbundnu hlerana sem þessi breyting byggir á.
Hvar undanþáguna má ekki setja
Freistingin er að setja leyfi fyrir ofan hlerana og ljúka. Sú staðsetning sleppir líka auðkenningar- og staðbundnum áfangastaðarvörnum sem venjulega eru nálægt toppi vinnandi stillingar. Niðurstaðan er ekki þröng undanþága, heldur gat með athugasemd yfir sér. Haltu hverju nýju leyfi á sama yfirfarna stigi og restin af biðlarastefnunni.
Athugaðu hvað beiðnin þarf enn eftir porthlerana. Auðkenndur reikningur, leyft biðlarafang og stefna um áfangastað gilda öll áfram, og undanþágan breytir engu þeirra. Ef milliþjónninn þinn leyfir samþykktum reikningi þegar að ná handahófskenndum áfangastöðum, þá var porthlerinn aldrei raunverulega stýringin.
Íhugaðu hvort endapunkturinn sé yfirleitt TCP. CONNECT-undanþága ber TCP-strauma, og OpenVPN-snið sem notar UDP verður ekki aðgengilegt í gegnum hana. Breyttu sniðinu í TCP aðeins ef þjónninn hlustar þannig og rekstraraðilinn samþykkir muninn á hegðun.
Athugaðu mörkin með þáttaranum og raunverulegri beiðni
Þáttaðu stillinguna áður en þú endurhleður, og hafðu aðra lotu opna meðan þú gerir það. Málfræðivilla við endurhleðslu getur skilið milliþjóninn eftir á gömlu stillingunni eða hafnað þeirri nýju algjörlega. Þáttarinn tilkynnir hafnu línuna, sem er meira en biðlaravillan mun segja þér.
Hladdu þá endur og sendu eina raunverulega CONNECT-beiðni í gegnum milliþjóninn frá samþykktri uppsprettu. Keyrsla þáttarans kemur fyrst, því endurhleðsla með innsláttarvillu kennir þér ekkert um stefnuna.
squid -k parse
squid -k reconfigure
curl -v -p -x http://proxy.lab.internal:3128 https://vpn.lab.internal:1194/ --max-time 5Prófaðu þrjú tilfelli: samþykkt uppspretta og reikningur, ósamþykkt uppspretta, og annar áfangastaður á sama porti. Þriðja tilfellið sannar að undanþágan er þröng, því það prófar portið án samræmis áfangastaðar. Lestu aðgangsannálinn fyrir öll þrjú í stað þess að treysta skilaboðum biðlarans. Árangursríkt CONNECT kemur á TCP-straumi og engu öðru, svo VPN-handabandið er áfram sérstakt próf.