Keegi küsib, miks VPN-i kasutaja ilmub rakenduse logis aadressiga, mis kuulub lüüsile, või aadressiga, mis muutus pärast lõunat. Vastus algab sellest, mis see väärtus on: kirje, mille veebiserver pani päringu keskkonda. See ei ole päring tunnelisse, ei ole sertifikaadi identiteet ega ole lubadus, et number kuulub ühele inimesele. Selle lugemine ükskõik millisena neist kolmest annab enesekindlaid vastuseid, mis on erineval moel valed.

Väärtus tuleb serverilt, mitte tunnelist

PHP saab päringu keskkonna sellelt, mis skripti käivitas. PHP serverimuutujate viide kirjeldab neid kirjeid veebiserveri loodutena, mille kättesaadavus sõltub sellest, kuidas päring saabus.

VPN-i käsureakonkina käivitatud skript on täiesti teine täitmiskeskkond. Sellel pole veebipäringut, kliendisoklit ega REMOTE_ADDR-i, seepärast annab konksu kopeeritud veebikood tühje väärtusi valede asemel. Konksul on oma keskkond, mille daemon täidab, ja see on eraldi dokumenteeritud. Seal REMOTE_ADDR-i järele haaramine on sellise muutuja järele haaramine, mida kunagi ei seatud.

Pea seda erinevust meeles enne kahe logi võrdlemist. Võib-olla võrdled lehepäringut konksuga, ja see pole üldse võrdlus. Kontrolli esmalt täitmiskeskkonda ja seejärel aadressi.

Jälgi päringu teekonda enne, kui usaldad numbrit

Teatatud aadress on selle ühenduse peer, mille veebiserver nägi. Pane midagi kliendi ja selle serveri vahele ning peer muutub. Tõlge, lõpetamine ja koormuse tasakaalustamine viivad igaüks vaatluse ühe hüppe võrra kasutajast kaugemale.

Neli tavalist teekonda annavad neli erinevat vaatlust.

Path to the listenerWhat can be reported
Client routed straight to the private listener, no translationThe client's tunnel address
Gateway translates the source before forwardingThe gateway's translated address
Reverse proxy terminates the client and opens its own backend connectionThe proxy's backend address
Load balancer in front of two proxiesWhichever hop the server treats as its peer

Kirjuta teekond üles sihtkoha nime, aadressiperekonna ja iga tõlkepunktiga. Ilma selle kaardita näevad õige ja vale väärtus logireas ühesugused välja. Kaks rida diagrammi säästavad pärastlõuna vaidlust.

Asendamine toimub ainult seal, kus see on seadistatud

Server või raamistik võib kliendi aadressi teadlikult asendada. Apache'i remote-IP moodul ja NGINX-i real-IP moodul teevad mõlemad seda, ja väärtus, mille PHP saab, sõltub sellest seadistusest ning skriptikäsitlejale antud parameetritest.

Seega ei ole REMOTE_ADDR alati puutumatu TCP peer. See on peer nii, nagu server otsustas selle teatada pärast oma poliitika rakendamist. See erinevus otsustab, kas väärtus on tõend või kaunistus.

Küsi serveri omanikult, milline väli on selles juurutus autoriteetne ja kuidas säilitatakse algne peer asendamise korral. Kui keegi ei oska vastata, ei tõenda logi veel midagi.

Ära loe edasisaatmise päise usaldusega

Kutsuja võib ise edasisaatmise päise saata. Esimese komaga eraldatud kirje käsitlemine kinnitatud kasutaja aadressina tähendab otsust usaldada igaüht, kes ühendub, mis on päise eesmärgi täpne vastand. Päis kirjeldab ahelat, ja ainult usaldusväärne kiht saab selle ahela eest garanteerida.

Kasuta serveri või raamistiku usaldusväärsete puhverserverite tuge tegeliku puhverserveri ahelaga seadistatuna ja lase tal ära visata väärtused väljaspool seda ahelat olevatest allikatest. Käsitsi kirjutatud analüüs on koht, kus elavad enamik huvitavaid tõrkeid.

Puhverserveri teatatud aadress ei muuda ka paketi allikat, mida näeb ülalpool olev tulemüür. Hoia HTTP metaandmed ja võrgufilter eraldi vaatlustena, sest need vastavad erinevatele küsimustele.

Kasuta otsuste tegemiseks rakenduse identiteeti

Kasutaja kirjetele juurdepääsuks toetu autenditud põhiisikule ja rakenduse autoriseerimisreeglitele. Sisemist aadressi saab ümber määrata ja üks tõlgitud aadress võib esindada sadu samaaegseid kasutajaid. Ühtegi neist omadustest ei suuda aadressikontroll parandada.

Kui operatsioonid peavad siduma päringu VPN-i seansiga, seo vaadeldud aadress ja ajatempel autoriteetsete seansikirjetega vastavalt dokumenteeritud tõlkemudelile. See loob seose, mida saad kaitsta; üksi aadress ei tee seda.

Diagnostikaks logi need vähesed väljad, mida vajad, mitte kogu serverimassiivi, mis võib kanda päiseid ja autentimismaterjali. Kasulik järeldus ütleb, mida see väärtus selles juurutuses tähendab, mitte milline väärtus sarnaneb kõige rohkem kliendile.

Seotud artiklid