Kull linja fil-log tal-aċċess turi l-istess indirizz loopback, filwaqt li l-paġna nnifisha tgħabbi u ċ-ċertifikat jiġi vverifikat sew. Xejn mhu mibni ħażin fis-sens li ma tintlaħaqx, u għalhekk dan jibqa' għal xhur. Dak li nkiser huwa l-attribuzzjoni: il-backend tal-web jirreġistra l-indirizz tal-qabża li bagħtet il-konnessjoni, u kull deċiżjoni sussegwenti li fdiet fil-log wiret l-istess tweġiba ħażina.

Il-kontrolli hawn taħt imorru mill-kejbil 'il ġewwa. Ieqaf fl-ewwel wieħed li jispjega l-valur li qed tara, għax kull pass sussegwenti jassumi li dawk ta' qabel huma diġà veri. Ħadd minnhom ma jeħtieġ li taqta' bil-kbir il-konfigurazzjoni tal-front-end.

Segwi ż-żewġ konnessjonijiet, mhux il-linja tal-log

Port-Share jimmultiplika żewġ protokolli fuq semmiegħ TCP wieħed. OpenVPN jeżamina l-ewwel bytes ta' konnessjoni dieħla, iżommha meta tidher bħall-protokoll tiegħu stess, u jgħaddi kull ħaġa oħra lil destinazzjoni oħra. Dik id-destinazzjoni normalment hija webserver fuq l-istess host, għalhekk is-socket aċċettat tal-webserver għandu l-proċess OpenVPN bħala sieħbu.

ss -ltnp 'sport = :443'
ss -tnp 'dport = :8080'

L-ewwel kmand juri min għandu s-semmiegħ pubbliku. It-tieni juri l-konnessjonijiet li jaslu fil-port tal-backend, u l-indirizz tas-sieħeb tagħhom huwa dak li se jistampa l-log tal-aċċess. Jekk dak is-sieħeb huwa loopback, il-log huwa preċiż u l-informazzjoni ntilfet saff qabel. Li tbiddel l-isem tal-qasam fil-log jew li tattiva modulu IP tal-klijent mhux se jġib lura indirizz li l-konnessjoni qatt ma ġarret.

Dan huwa l-kontroll li jiddeċiedi kull ħaġa oħra. Jekk is-sieħeb tal-backend huwa l-indirizz tal-brawżer, il-kondiviżjoni tal-port mhix il-problema tiegħek u l-format tal-log huwa.

L-ebgħir tat-trasport mhuwiex injezzjoni ta' intestatura

Il-mibgħat iċaqlaq il-bytes. Ma jipparsjax HTTP, għalhekk ma jistax iddaħħal intestatura f'talba li qatt ma jaqraha bħala talba, u ma jistax iżid xejn ma' fluss TLS li jgħaddih bla ma jmissu. Modulu li jistenna intestatura tal-proxy se jibqa' jistenna waħda li l-ebda komponent ma jipproduċi.

Żewġ mekkaniżmi jistgħu jġorru l-indirizz oriġinali, u t-tnejn jeħtieġu qbil fuq iż-żewġt itruf. Il-protokoll PROXY iżid intestatura żgħira mal-bidu tal-konnessjoni, u l-backend irid ikun ikkonfigurat biex jistennieha; backend li ma jistenniex se jqis dawk il-bytes bħala l-bidu tat-talba u jonqos b'mod konfuż. Intestaturi tal-proxy affidabbli bħal X-Forwarded-For jaħdmu meta proxy li jifhem HTTP jistabbilixxihom u l-backend jiġi mgħarraf liema sieħba jistgħu jaffermawhom.

L-ebda waħda mhija awtomatika, u l-ebda waħda mhija sigura b'mod awtomatiku. Backend li jemmen kull intestatura mibgħuta li tidħol iħalli lill-klijent jagħżel l-indirizz tiegħu stess, li jibdel impreċiżjoni fil-log f'eluf ta' kontroll tal-aċċess. Mexxi d-dimostrazzjoni darba fuq host tat-test qabel ma tafda f'xi intestatura fi triq tal-produzzjoni.

curl -sS -H 'X-Forwarded-For: 127.0.0.1' https://site.example.com/health
grep -F '127.0.0.1' /var/log/nginx/access.log | tail -n 3

Id-direttorju opzjonali tal-mappa tas-sorsi

Il-kondiviżjoni tal-port għandha argument ta' direttorju opzjonali li jirreġistra mappa bejn l-indirizz tas-sors oriġinali u l-konnessjoni tal-ebgħir, fuq pjattaformi fejn din il-karatteristika hija implimentata. Huwa mistenni li n-naħa tal-web tikkonsulta dik il-mappa; mhix intestatura, u mhix injettata fit-talba.

Dak id-disinn jistħoqqlu jkun magħruf għax jispjega għaliex xi implimentazzjonijiet jirrappurtaw indirizzi reali u oħrajn le, b'konfigurazzjoni tal-front-end li tidher identika. Id-differenza hija fuq in-naħa li tirċievi, u normalment tgħix f'modulu jew garża li l-biċċa l-kbira tas-servers web ippakkjati ma jattivawx b'mod awtomatiku. Aqra d-dokumentazzjoni tas-server web tiegħek għall-hook eżatt li joffri, u kkonferma li l-modulu huwa mgħobbi minflok ma tassumih.

Jekk tieħu din it-triq, ittrattaha bħala integrazzjoni ta' żewġ nofsijiet: il-mappa li tikteb il-mibgħat u t-tiftixa li tagħmel il-backend. Ivverifika t-tnejn, u kkonferma li d-direttorju jibqa' wara bidu mill-ġdid u ma jikbirx bla limitu fuq semmiegħ impjegat.

Iddeċiedi liema komponent jiggarantixxi l-indirizz

Qabel ma tbiddel il-konfigurazzjoni, semmi l-komponent li huwa permess jafferma indirizz tal-klijent u l-komponenti li huma permessi jemmnu fih. Tweġiba waħda miktuba tipprevjeni l-iżvilupp tas-soltu, fejn tliet saffi differenti kull wieħed jafda sors differenti.

Tliet disinji jkopru l-biċċa l-kbira tal-ħtiġijiet. Żomm is-semmiegħ pubbliku u s-semmiegħ tal-web separati, sabiex is-server web jara sieħba reali u ma jkunx hemm problema ta' attribuzzjoni. Qiegħed proxy invers li jifhem HTTP quddiem, temm jew ipparsja t-talba hemmhekk, u ħallih jistabbilixxi intestatura mibgħuta għal backend li jafda biss dak il-proxy. Jew żomm il-kondiviżjoni tal-port u aċċetta li l-logs juru l-qabża, b'regoli tal-aċċess miktuba kontra l-identità tal-applikazzjoni minflok kontra indirizz.

Dak li ma jaħdimx huwa li tqis indirizz loopback mibgħut bħala prova li t-talba oriġinat fuq din il-magna. Dak il-konklużjoni hija eżattament maqluba: l-indirizz huwa preżenti proprju għax komponent lokali għamel il-konnessjoni. Regola miktuba hekk tilqa' lil kull min jista' jasal għas-semmiegħ.

Ittestja r-regola, mhux il-paġna

Paġna li tgħabbi turi li t-triq tal-ebgħir taħdem u ma tgħid xejn dwar l-attribuzzjoni. Ittestja lill-konsumatur tal-indirizz: ir-regola tal-aċċess, il-limitu tar-rata, id-dħul tal-awditjar, it-tiftixa ġeografika.

curl -sS -o /dev/null -w '%{http_code}\n' https://site.example.com/
tail -n 5 /var/log/nginx/access.log
grep -c '' /var/log/nginx/access.log

Qabbel talba esterna awtorizzata mar-rekords kemm tal-front-end kif ukoll tal-backend, u kkonferma li regola li għandha tirrifjuta xorta tirrifjuta u waħda li għandha tammetti xorta tammetti. Jekk il-linja tal-log hija korretta imma r-regola xortaġġixxi bħallikieku kulħadd lokali, ir-regola taqra qasam differenti minn dak li tajt.

Iffinalizza billi tikteb il-katina tal-attribuzzjoni fin-noti tal-implimentazzjoni: liema semmiegħ, liema mibgħat, liema intestatura jew mappa, u liema backend huwa kkonfigurat biex jafda fiha. Il-persuna li jmiss li taqra linja tal-log se jkollha bżonn l-erbgħa kollha, u n-nuqqas ta' dik in-nota huwa kif l-istess ticket jerġa' jinfetaħ sena wara. Żommha ħdejn il-konfigurazzjoni u mhux f'ħajt taċ-chat.

Artikli relatati