Kāds jautā, kāpēc VPN lietotājs lietotnes žurnālā parādās ar adresi, kas pieder vārtiem, vai ar adresi, kas mainījās pēc pusdienām. Atbilde sākas ar to, kas ir šī vērtība: ieraksts, ko tīmekļa serveris ievietoja pieprasījuma vidē. Tas nav vaicājums tunelī, nav sertifikāta identitāte un nav solījums, ka numurs pieder vienai personai. Lasīšana kā jebkura no šiem trim dod pārliecinātas atbildes, kas dažādos veidos ir nepareizas.

Vērtība nāk no servera, nevis no tuneļa

PHP saņem pieprasījuma vidi no tā, kas izpildīja skriptu. PHP servera mainīgo atsauce apraksta šos ierakstus kā tīmekļa servera radītus, un to pieejamība ir atkarīga no tā, kā ieradās pieprasījums.

Skripts, kas palaists kā VPN komandrindas āķis, ir pavisam cits izpildes konteksts. Tam nav tīmekļa pieprasījuma, klienta ligzdas un REMOTE_ADDR, tāpēc āķī iekopēts tīmekļa kods dod tukšas vērtības, nevis nepareizas. Āķim ir sava vide, ko piepilda dēmons, un tā ir dokumentēta atsevišķi. Tur tiekties pēc REMOTE_ADDR nozīmē tiekties pēc mainīgā, kas nekad netika iestatīts.

Paturiet šo atšķirību prātā pirms divu žurnālu salīdzināšanas. Varbūt jūs salīdzināt lapas pieprasījumu ar āķi, un tas nemaz nav salīdzinājums. Vispirms pārbaudiet izpildes kontekstu un pēc tam adresi.

Izejiet pieprasījuma ceļu, pirms uzticaties numuram

Ziņotā adrese ir tā savienojuma puse, ko redzēja tīmekļa serveris. Ievietojiet ko jebko starp klientu un šo serveri, un puse mainās. Tulkošana, pārtraukšana un slodzes līdzsvarošana katra pabīda novērojumu vienu soli tālāk no lietotāja.

Četri ierasti ceļi dod četrus dažādus novērojumus.

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

Pierakstiet ceļu ar galamērķa nosaukumu, adrešu saimi un katru tulkošanas punktu. Bez šīs kartes pareiza un nepareiza vērtība žurnāla rindā izskatās vienādi. Divas diagrammas rindas ietaupa pēcpusdienu strīdu.

Aizstāšana notiek tikai tur, kur tā ir konfigurēta

Serveris vai ietvars var apzināti aizstāt klienta adresi. Apache remote-IP modulis un NGINX real-IP modulis abi to dara, un vērtība, ko saņem PHP, ir atkarīga no šīs konfigurācijas un parametriem, kas nodoti skripta apstrādātājam.

Tātad REMOTE_ADDR ne vienmēr ir neskarts TCP partneris. Tas ir partneris tāds, kā serveris nolēma to ziņot pēc savas politikas piemērošanas. Šī atšķirība nosaka, vai vērtība ir pierādījums vai rotājums.

Jautājiet servera īpašniekam, kurš lauks šajā izvietojumā ir autoritatīvs un kā tiek saglabāts sākotnējais partneris, kad notiek aizstāšana. Ja neviens nevar atbildēt, žurnāls vēl neko nepierāda.

Nelasiet pārsūtīšanas galvenes uz uzticību

Zvanītājs pats var nosūtīt pārsūtīšanas galvenes. Uzskatīt pirmo ar komatu atdalīto ierakstu par pārbaudītu lietotāja adresi nozīmē izlemt uzticēties ikvienam, kas pieslēdzas, kas ir pretējs galvenes mērķim. Galvene apraksta ķēdi, un tikai uzticams slānis var galvot par šo ķēdi.

Izmantojiet servera vai ietvara uzticamu starpnieku atbalstu ar konfigurētu reālo starpnieku ķēdi un ļaujiet tam izmest vērtības no avotiem ārpus šīs ķēdes. Ar roku rakstīta analīze ir vieta, kur dzīvo lielākā daļa interesanto kļūmju.

Starpnieka ziņotā adrese arī nemaina pakešu avotu, ko redz augstāk esošais ugunsmūris. Turiet HTTP metadatus un tīkla filtrēšanu kā atsevišķus novērojumus, jo tie atbild uz dažādiem jautājumiem.

Lēmumiem izmantojiet lietotnes identitāti

Lai piekļūtu lietotāja ierakstiem, paļaujieties uz autentificēto subjektu un lietotnes autorizācijas noteikumiem. Iekšējo adresi var piešķirt no jauna, un viena tulkota adrese var pārstāvēt simtiem vienlaicīgu lietotāju. Nevienu no šīm īpašībām adreses pārbaude nevar salabot.

Ja operācijām pieprasījums jāsaista ar VPN sesiju, saistiet novēroto adresi un laika zīmogu ar autoritatīviem sesiju ierakstiem saskaņā ar dokumentēto tulkošanas modeli. Tas rada saikni, ko varat aizstāvēt; viena adrese to nepanāk.

Diagnostikai reģistrējiet tos dažus nepieciešamos laukus, nevis visu servera masīvu, kas var saturēt galvenes un autentifikācijas materiālu. Noderīgais secinājums pasaka, ko šī vērtība nozīmē šajā izvietojumā, nevis kura vērtība visvairāk līdzinās klientam.

Saistītie raksti