All Linn am Zougrëffslog weist déiselwecht loopback-Adress, während d'Säit selwer lued a sech den Zertifikat korrekt verifizéiert. Näischt ass futti am Sënn vun onerreechbar, an dofir hält sech dëst Méint. Futti ass d'Zouschreiwung: de Web-Backend registréiert d'Adress vum Hop, deen d'Verbindung weidergeleet huet, an all spéider Entscheedung, déi dem Log vertraut huet, huet déiselwecht falsch Äntwert geierft.

D'Kontrollen hei drënner ginn vum Kabel no bannen. Halt bei déi éischt, déi de Wäert erklärt, deen dir gesitt, well all spéidere Schrëtt unhëlt datt déi fréier schonn richteg sinn. Keng vun hinnen erfuerdert d'Frontend-Konfiguratioun ze roden.

Folleg den zwou Verbindungen, net der Loglinn

Port-Share multiplexéiert zwee Protokoller op engem TCP-Lauschterer. OpenVPN iwwerpréift déi éischt Byte vun enger erakomender Verbindung, behält se wann se wéi säin eegene Protokoll ausgesäit, an iwwergëtt alles anescht un en zweeten Zil. Dat Zil ass normalerweis e Webserver op demselwe Host, also huet de vum Webserver ugehollene Socket den OpenVPN-Prozess als Partner.

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

Déi éischt Kommando weist wiem den ëffentleche Lauschterer gehéiert. Déi zweet weist d'Verbindungen, déi um Backend-Port ukommen, an hir Partneradress ass déi, déi den Zougrëffslog dréckt. Wann dee Partner loopback ass, ass de Log korrekt an d'Informatioun ass eng Schicht virdru verluer. D'Logfeld ëmbenennen oder e Client-IP-Modul aktivéieren hëlt keng Adress zréck, déi d'Verbindung ni gedroen huet.

Dëst ass d'Kontroll, déi alles anescht entscheet. Wann de Partner vum Backend d'Adress vum Browser ass, ass d'Portdeelung net däi Problem an d'Logformat ass et.

Transport-Iwwerleeung ass keng Header-Injektioun

Den Iwwerleeer beweegt Byte. Hie parst keen HTTP, also kann hien keen Header an eng Ufro setzen, déi hien ni als Ufro liest, an hie kann näischt an engem TLS-Strom derbäisetzen, deen hien onberüert duerchléisst. En Modul, deen e Proxy-Header erwaart, waart weider op een, deen keng Komponent produzéiert.

Zwee Mechanisme kënnen déi originär Adress droen, an alleb zwee verlaangen Eenegkeet op béide Säiten. De PROXY-Protokoll setzt en klengen Header virun d'Verbindung, an de Backend muss konfiguréiert sinn, en ze erwaarden; e Backend, deen en net erwaart, behandelt déi Byte als Ufank vun der Ufro an deet sech op eng verwirrend Manéier. Vertrauenswürdeg Proxy-Headere wéi X-Forwarded-For funktionéieren, wann en HTTP-bewusste Proxy se setzt an dem Backend gesot gëtt, wéi eng Partner se behaapte kënnen.

Keen vun deenen zwee ass automatesch, a kee vun deenen zwee ass standardméisseg sécher. En Backend, deen all erakomenden iwwerleeënen Header glaawt, erlaabt engem Client seng eege Adress ze wielen, wat eng Onkorrektheet am Log an eng Ëmgoe vun der Zougrëffskontroll verwandelt. Maacht d'Demonstratioun eng Kéier op engem Testhost, ier dir iergendeen Header op engem Produktiounswee vertraut.

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

Den optionalen Quellverdeelungsverzeechnes

D'Portdeelung huet en optionalen Verzeechnesargument, deen eng Verdeelung tëscht der originärer Quelladress an der Iwwerleeungsverbindung registréiert, op Plattformen wou d'Funktioun implementéiert ass. Et gëtt erwaart, datt d'Websäit déi Verdeelung consultéiert; et ass keen Header, an et gëtt net an d'Ufro injektéiert.

Dat Design ass wäert, et ze kennen, well et erklärt firwat e puer Deploiementer richteg Adressen mellen an anerer net, mat anscheinend identescher Frontend-Konfiguratioun. Den Ënnerscheed läit op der Empfangssäit, an en wunnt meeschtens an engem Modul oder Patch, deen déi meescht gepackte Webserver net standardméisseg aktivéieren. Liest an der Dokumentatioun vun dengem Webserver no, wéi en exakten Hook hie bitt, a bestätegt, datt de Modul gelueden ass, amplaz et unzehuelen.

Wann dir dëse Wee gitt, behandelt et als Integratioun vun zwou Hälften: d'Verdeelung, déi den Iwwerleeer schreift, an d'Ufro, déi de Backend mécht. Verifizéiert béides, a bestätegt, datt d'Verzeechnes en Neistart iwwerlieft an op engem beschäftegte Lauschterer net onbegrenzt wiisst.

Entscheet, wéi eng Komponent fir d'Adress garantéiert

Ier dir d'Konfiguratioun ännert, nennt d'Komponent, där et erlaabt ass eng Clientadress ze behaapten, an d'Komponenten, deenen et erlaabt ass, hatt ze glaawen. Eng eenzeg opgeschriwwe Äntwert verhënnert de gewéinlechen Drift, wou dräi verschidden Niveauen all en anere Quelle vertrauen.

Dräi Designe decken déi meescht Bedierfnesser. Halt den ëffentleche Lauschterer an de Web-Lauschterer getrennt, sou datt de Webserver richteg Partner gesäit an et kee Zouschreiwungsproblem gëtt. Setzt en HTTP-bewusste Reverse-Proxy virun, beend oder parst d'Ufro do, a looss en en iwwerleeënen Header setze fir en Backend, deen nëmmen deem Proxy vertraut. Oder behält d'Portdeelung a akzeptéiert, datt d'Loge den Hop weisen, mat Zougrëffsregele géint d'Applikatiounsidentitéit amplaz géint eng Adress.

Wat net funktionéiert, ass eng iwwerleeën loopback-Adress als Beweis ze behandelen, datt d'Ufro op dëser Maschinn entstanen ass. Dee Schluss ass genee ëmgedréit: d'Adress ass just do, well eng lokal Komponent d'Verbindung gemaach huet. Eng esou geschriwwe Regel lässt jiddereen eran, deen de Lauschterer erreeche kann.

Test d'Regel, net d'Säit

Eng Säit, déi lued, beweist, datt den Iwwerleeungswee funktionéiert, a seet näischt iwwer d'Zouschreiwung. Test de Konsument vun der Adress: d'Zougrëffsregel, de Geschwindegkeetslimit, den Audit-Andrag, d'Geo-Sich.

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

Vergläicht eng autoriséiert extern Ufro mat de Registrature vu souwuel Frontend wéi Backend, a bestätegt, datt eng Regel, déi sollte refuséieren, nach ëmmer refuséiert, an eng, déi sollte zouloossen, nach ëmmer zouloosst. Wann d'Loglinn korrekt ass, awer d'Regel sech nach ëmmer behält wéi wann all lokal wier, da liest d'Regel en anert Feld wéi dat, wat dir verbessert hutt.

Schléisst of, andeems dir d'Zouschreiwungskette an den Deployementsnotizen opschreift: wéi en Lauschterer, wéi en Iwwerleeer, wéi en Header oder Verdeelung, a wéi en Backend konfiguréiert ass, deem ze vertrauen. Déi nächst Persoun, déi eng Loglinn liest, brauch all véier, an d'Fehle vun där Notiz ass de Grond, firwat deeselwechten Ticket e Joer méi spéit erëm opgeet. Halt se nieft der Konfiguratioun an net an engem Chat-Thread.

Ähnlech Artikelen