Unu VPN-finpunkto tra Squid: mallarĝa CONNECT-escepto
Lasu unu aprobitan fonton atingi unu VPN-enirejon ĉe pordo 1194 tra Squid, konservu la tutmondajn pordogardistojn kaj pruvu, ke nenio alia malfermiĝis.
Squid respondas al CONNECT-peto per la unua http_access-linio, kiu kongruas, kaj tiu linio povas esti rifuzo. Ĉi tiu sola fakto klarigas, kial escepto por VPN-finpunkto kutime malsukcesas je la unua provo, ĉar la peto neniam atingas la permeson, kiun iu aldonis ĉe la fino. Mallarĝa korekto konservas la ekzistantajn pordogardistojn kaj instruas al ili unu reviziitan fonton, celon kaj pordon. Ĉio alia sur la prokuro kondutas sin precize kiel antaŭe.
Kiel Squid decidas pri CONNECT-peto
CONNECT-peto nomas gastiganton kaj pordon, kaj Squid trairas la http_access-liniojn laŭ ordo ĝis unu el ili kongruas. Kongrua rifuzo tuj finas la pritakson kaj la kliento ricevas 403 de la prokuro. Tial la pozicio de regulo pli gravas ol ĝia vortigo. Movi la saman linion unu ŝtupon supren povas tute ŝanĝi la rezulton.
La konvenciaj gardistoj rifuzas ĉion ekster Safe_ports kaj rifuzas CONNECT ekster SSL_ports. Tiuj nomoj estas ACL difinitaj en via propra agordo, do ilia enhavo apartenas al vi, ne al la protokolo. Distribuaĵo povas permesi vastan gamon da pordoj kiel Safe_ports dum ĝi aparte limigas CONNECT. Legu la vivajn valorojn antaŭ ol supozi, ke pordo estas blokita laŭ la dezajno.
Konfirmu, ke la prokuro estas la komponanto, kiu rifuzas la peton. 403 generita de Squid tute ne similas al TLS-averto de la VPN-servilo, kaj kunfandi la du en unu problemon kostas la unuan horon. Kontrolu la alirprotokolan linion por la peto, ĉar ĝi registras kaj la agon kaj la regulon, kiu ĝin produktis.
Konstruu unu kombinitan kongruon anstataŭ tri malstreĉaj ACL
Konstruu la escepton el tri faktoj: aprobita fonta intervalo, unu aprobita cela adreso kaj la sola pordo, sur kiu aŭskultas la finpunkto. Du malstreĉaj ACL kaj unu kombinita kongruo produktas tre malsaman politikon, ĉar tio, kio estas pritaksata, estas la kombino. Nomu la kombinitan ACL laŭ tio, kion ĝi permesas, ne laŭ la metodo, kiun ĝi portas.
La suba formo uzas dokumentajn intervalojn, kiujn oni devas anstataŭigi per reviziitaj valoroj. Squid ne rezervas iun ajn el ĉi tiuj nomoj, do ili estas viaj por elekti kaj viaj por teni konsekvencaj. Ĉi tiu recepto estas limigita al Squid 6 kaj 7, kies dokumentita agordo subtenas la grupon all-of. La nuna referenco markas tiujn instrukciojn kiel nehaveblaj en Squid 8, do traktu ĉi tion kiel versio-limigitan recepton kaj ne kiel migran vojon, kaj kontrolu la instrukciojn en la referenco de via propra eldono antaŭ ol apliki ĝin.
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_srcLa grupo all-of kongruas nur kiam kongruas ĉiu membro, tio signifas, ke fonto, celo kaj pordo estas kontrolataj en unu linio. La grupo donas nenion per si mem, kaj peto, kiu kongruas nur kun du el la tri faktoj, ne povas kontentigi ĝin. Tiu eco tenas la escepton mallarĝa, kiam iu poste aldonas duan enirejon. Aŭ la nova celo estas aldonita intence, aŭ la peto refalas al la originaj gardistoj.
Fleksu la pordogardistojn sen forigi ilin
Sur siaj ekzistantaj pozicioj, la du konvenciaj gardistaj linioj aspektas tiel. Ili kutime staras post aŭtentikigo kaj antaŭ la politikaj linioj, kiuj permesas ĉion.
http_access deny !Safe_ports
http_access deny CONNECT !SSL_portsAldonu la neigitan kombinitan kongruon al ĉiu el ili, por ke kongrua escepto postvivu gardiston, kiu alie rifuzus ĝin. Nur la gardistaj linioj ŝanĝiĝas, kaj nur per unu plia termino ĉiu.
http_access deny CONNECT !SSL_ports !pvpn_ok
http_access deny !Safe_ports !pvpn_okTerminoj sur unu alirlinio estas kombinitaj, do la linio nun rifuzas nur petojn, kiuj malsukcesas kaj en la origina kontrolo kaj en la escepto. Peto por la aprobita finpunkto trapasas, kaj ĉiu alia peto konservas la malnovan pordan konduton. Ĉi tio estas pli mallarĝa ol aldoni la pordon al tutmonda SSL_ports-listo, kio permesintus tiun pordon al ĉiu celo. Se la pordo jam estas sur tiu listo, ĉi tiu ACL mallarĝigas nenion kaj la pli malnova, pli vasta permeso ankoraŭ validas por aliaj celoj, do legu la vivan liston antaŭ ol aserti, ke la escepto malfermis la pordon. Ĝi ankaŭ estas reigebla, ĉar du linioj revenas al sia antaŭa formo. La referenco pri alirkontrolo dokumentas la ordigon kaj la konvenciajn gardistojn, de kiuj ĉi tiu ŝanĝo dependas.
Kie la escepto ne rajtas esti metita
La tento estas meti permeson super la gardistojn kaj fini. Tiu lokigo ankaŭ preterlasas la protektojn de aŭtentikigo kaj loka celo, kiuj kutime staras proksime al la supro de funkcianta agordo. La rezulto ne estas mallarĝa escepto, ĝi estas truo kun komento super ĝi. Tenu ajnan novan permeson en la sama reviziita etapo kiel la resto de la klienta politiko.
Kontrolu, kion la peto ankoraŭ bezonas post la pordogardistoj. Aŭtentikigita konto, permesita klienta adreso kaj cela politiko ĉiuj ankoraŭ validas, kaj la escepto ŝanĝas neniun el ili. Se via prokuro jam lasas la aprobitan konton atingi arbitrajn celojn, la pordogardisto neniam estis la vera kontrolo.
Pripensu, ĉu la finpunkto entute estas TCP. CONNECT-escepto portas TCP-fluojn, kaj OpenVPN-profilo, kiu uzas UDP, ne fariĝos atingebla tra ĝi. Ŝanĝu la profilon al TCP nur se la servilo tiel aŭskultas kaj la operatoro akceptas la diferencon en konduto.
Kontrolu la limon per la analizilo kaj reala peto
Analizu la agordon antaŭ ol reŝargi, kaj tenu duan seancon malfermita dum vi faras tion. Sintaksa eraro dum reŝargado povas lasi la prokuron sur la malnova agordo aŭ rifuzi la novan tute. La analizilo raportas la rifuzitan linion, kio estas pli ol la klienta eraro diros al vi.
Poste reŝargu kaj sendu unu realan CONNECT tra la prokuro de aprobita fonto. La analizila rulo venas unue, ĉar reŝargado kun tajperaro instruas al vi nenion pri la politiko.
squid -k parse
squid -k reconfigure
curl -v -p -x http://proxy.lab.internal:3128 https://vpn.lab.internal:1194/ --max-time 5Testu tri kazojn: aprobita fonto kaj konto, neaprobita fonto, kaj malsama celo sur la sama pordo. La tria kazo estas tiu, kiu pruvas, ke la escepto estas mallarĝa, ĉar ĝi ekzercas la pordon sen la cela kongruo. Legu la alirprotokolon por ĉiuj tri anstataŭ fidi la klientan mesaĝon. Sukcesa CONNECT starigas TCP-fluon kaj nenion pli, do la VPN-manpremo restas aparta testo.