Li tgħaddi bytes ikkriptati mingħajr ma qatt iżżomm iċ-ċertifikat huwa dak li jagħmel relay TLS passthrough, u dan l-arranġament huwa konvenjenti u ftit konfuż fl-istess ħin. Peress li xejn ma jiġi deċifrat, m’hemm xejn fil-forma ta’ HTTP biex tiffiltra bih, għalhekk il-blokka location tas-soltu u r-regoli tal-aċċess tagħha ma jagħmlu xejn hawn. Id-deċiżjoni li għandha NGINX tikkonċerna l-konnessjoni nnifisha: liema peer tan-netwerk ħabbat, u jekk dak il-peer għandux jiġi mgħoddi.

Id-deċiżjoni tappartjeni lil stream, mhux lil HTTP

Fil-kuntest stream NGINX jaħdem b’sessjonijiet TCP. Jara l-indirizz peer tal-konnessjoni u jista’ japplika regoli allow u deny ordnati fuqu qabel ma xi byte jasal għall-backend. Din hija deċiżjoni sħiħa ta’ ammissjoni u ma teħtieġ l-ebda ċavetta privata, ċertifikat jew analiżi HTTP.

MechanismWhat it decidesWhere it lives
stream allow/denyWhether this TCP peer is relayedstream server block
ssl_preread mapWhich backend a named connection goes tostream, with the preread module
HTTP location ruleWhether an HTTP request is servedhttp server block

Dawk it-tliet ringieli qatt ma jissostitwixxu lil xulxin. L-ikkupjar ta’ direttiva ta’ aċċess HTTP fil-fajl li jsemmi l-port 443 ma jbiddel xejn, għax is-server stream qatt ma jaqra l-kuntest http.

Ammetti l-konnessjoni qabel ma tgħaddiha

Assumi installazzjoni eżistenti bil-moduli stream u stream-access disponibbli, klijenti VPN li jżommu indirizzi tas-sors fi 10.90.0.0/24, u backend fi 192.168.50.20:443 li diġà jservi l-identità HTTPS maħsuba.

stream {
    server {
        listen 443;

        allow 10.90.0.0/24;
        deny all;

        proxy_pass 192.168.50.20:443;
    }
}

Aqra dan bħala framment ta’ listener ġdid, mhux bħala sostituzzjoni diretta ta’ konfigurazzjoni li taħdem. Erħi l-listeners u l-includes eżistenti l-ewwel, għax it-tieni listener fuq port diġà marbut jonqos fir-reload, mhux fil-ħin tat-talba.

Innota x’huwa nieqes: l-ebda listen ... ssl, l-ebda direttiva ta’ ċertifikat. NGINX jgħaddi l-fluss ikkriptat, u l-backend itemm it-TLS u jippreżenta ċ-ċertifikat li l-klijent jivvalida. Klijent li jonqos fl-allowlist jiġi rrifjutat is-sessjoni TCP tiegħu, mhux paġna HTTP 403, u kwalunkwe għodda li tistenna kodiċi ta’ status tirrapporta xi ħaġa inutli.

X’tkopri l-allowlist u x’ma tkoprix

Jekk ir-relay diġà jagħżel backends bl-isem tas-server, ssl_preread u map jistgħu jkomplu jagħmlu dak ix-xogħol, sakemm il-modulu jkun disponibbli. L-isem għadu jiġi pprovdut mill-klijent, u xejn fil-preżentazzjoni ta’ isem ma jipprova li l-klijent ingħaqad mal-VPN.

Ir-regola tal-eżempju tkopri l-listener stream kollu. Dan jagħmilha mhux adattata għal punt ta’ dħul wieħed li jservi taħlita ta’ siti pubbliċi u siti biss għall-VPN, fejn tkun meħtieġa eċċezzjoni għal kull isem; listeners separati ġeneralment huma iktar ċari minn politika dipendenti fuq l-isem li ħadd ma jista’ jaqra.

Jixraq li ssemmi żewġ lakuni oħra. Qbil ta’ prefiss ma jgħid xejn dwar liema interface waslet il-pakkett, u regola HTTP x’imkien ieħor ma tistax tikkonstrenġi dan il-listener. It-tnejn huma raġunijiet biex il-politika tal-ingress fil-livell tal-host tinżamm fid-dehra minflok ma titqies linja allow waħda bħala l-fruntiera kollha. Ikteb il-fruntiera bħala żewġ kontrolli li jridu jaqblu, sabiex tibdil f’waħda minnhom jiġi rivedut.

Liema indirizz NGINX fil-fatt jara?

Bilanċatur tat-tagħbija, proxy ieħor jew source NAT jistgħu jqiegħdu intermedjarju quddiem NGINX, għalhekk il-peer osservat mhuwiex l-indirizz intern tal-klijent VPN. Spezzjona t-triq reali qabel tagħżel prefiss, għax allowlist miktub għall-indirizz żbaljat jew jammetti lil kulħadd wara t-traduttur jew lil ħadd.

Il-protokoll PROXY u l-immaniġġjar tal-IP reali huma tweġibiet leġittimi, u għandhom jiġu kkonfigurati biss għal mittenti kompatibbli u fdati b’mod espliċitu. Iż-żewġ mekkaniżmi jemmnu dak li jgħid il-mittenti, u huwa preċiżament għalhekk li l-lista tal-mittenti trid tkun qasira. Li tafda header ta’ identità minn kwalunkwe klijent tal-internet ma tagħmilx l-informazzjoni tas-sors affidabbli mill-ġdid; tibdel rifjut korrett f’ammissjoni ffalsifikata.

Ipprova ż-żewġ riżultati qabel ir-reload

Ivvalida l-konfigurazzjoni, agħmel reload, imbagħad ipprova darbtejn: sessjoni ġdida permessa li trid taħdem, u waħda miċħuda li m’għandhiex taħdem. Żomm il-verifika normali taċ-ċertifikat tal-backend fit-test permess, għax relay li jgħaqqad imma ma jistax jivvalida l-backend issolva problema u ħoloq oħra.

nginx -t
ss -tnp | grep ':443'

Iċċekkja wkoll it-triq lejn il-backend u t-tweġiba separatament. Li tgħaddi l-allowlist tipprova biss li NGINX aċċetta s-sessjoni; ma tistax iġġiegħel backend li ma jintlaħaqx iwieġeb, u ma tistax issewwi triq ta’ ritorn li kienet nieqsa qabel ma bdejt.

Artikli relatati