x_forwarded_for Squid HTTPS

Fórumok

Sziasztok!

Kérem segítsetek az alábbi problémában, miként lehetne megoldani.

Adott egy vállalati belső hálózat, ahol userek eszközzel csatlakoznak egy alkalmazás szerver web felületéhez(https). Köztük van beiktatva egy Squid proxy server.

Az a gond, hogy az alkalmazásszerver alkalmazásának ismernie kellene a kliens IP címét. A proxy nem küldi tovább, hiába van beállítva az x_forwarded_for paraméter. Egy tapasztaltabb kollégám szerint a Squid csak http-n tudja a headerben továbbítani a kliens ip címét. Miként lehetne megoldani ezt, esetleg más proxy alkalmazást tudnátok javasolni?

Köszönöm előre is!

Hozzászólások

Ennek a derék proxynak MitM támadást kellene végrehajtania, azaz terminálni az SSL-t, olvasni+módosítani a forgalmat, és egy kimenő https-kapcsolaton küldeni a végpontnak.

Szerkesztve: 2024. 01. 23., k – 17:41

Hát, https-en ez csak akkor fog menni, ha bontod a tlst. Nem tudom, a squid tudja-e, bár szerintem igen. 

Attól függ, mi az oka annak, hogy ott a squid? Ez alapvetően egy sima reverse proxy usecase így, nginx, haproxy, vagy a kismillió újvonalas ilyesmi valamelyike, Treafik, caddy, ilyesmi. 

Bamilyen load balancer / reverse proxy megcsinalja, pl haprpxy, nginx

Azért van a proxy ott, mert van 1-2 weboldal ami irányba is vannak engedve.

Szóval akkor reverse proxy-t kellene csinálni a squid helyett?

Köszi!

Azért van a proxy ott, mert van 1-2 weboldal ami irányba is vannak engedve.

Ezt kijavítod? Mert így nem értelmes :)

Szóval akkor reverse proxy-t kellene csinálni a squid helyett?

Squiddal is lehet reverse proxyt csinálni (jó eséllyel most is azt csinálod, csak nem tudod, hogy így hívják). El tudod mondani, hogy kb hogy néz ki a releváns hálózat, és hogy mi az a funkció, ami miatt a squidra szükség volt az appszerver előtt?

Aha, szóval, ha jól értem, akkor valójában a feladat az, hogy a kifele menő httpt szeretnétek szűrni domain alapon, az appserverek csak beleestek a szórásba.

Itt az egyik megoldás az az, hogy rá se teszed a squidra az appserverek felé menő forgalmat. Ha transzparens proxy van, tehát a tűzfalon mókolod rá a 80/443-at a squidra, akkor mivel azok belső háló, ezért ismered a címeiket, simán csak engedd oda direktben a saját forgalmukat, ne DNATold rá a proxyra. 

Ha nem transzparens proxyként van, akkor valahogy gondolom terítetek egy PAC filet a kliensekre, abba kell beleírni, hogy az appszerverek menjenek direktben.

A másik az, hog mégiscsak akarod proxyzni. Ez esetben azt a proxyt kell megfelelően bekonfigurálni, hogy általában simán csak proxyzzon a net felé (amit lehet), az appszerverek fele viszont szolgálja ki ő a certet, terminálja a TLSt, tegye bele az X-forwarded-for-t, és menjen el az appszerverhez (aki már vagy plain http, vagy kap egy másik certet). Ezt gondolom össze lehet rakni squiddal is, csak olyat ~15 éve nem láttam, mert az alapvetően egy caching proxy, ezért nem szokott felmerülni, hogy kéne :)

Lehet, hogy egyszerűbb lenne a klienst úgy konfigurálni hogy:

- az applikáció szervert érje el direktbe (ha jól értem ez bent található a belső hálón, és a kliens oldali proxy beállításokkal ez lekezelhető)

- és csak azt a forgalmat zavarni a squid felé, ami szükséges a néhány weboldal elérésére

Sajnos direktben az appszerver felé azért nem tudom terelni, mert a klinesen egy másik app is fut, aminek kell néhány weboldal elérés, azt a tűzfal miatt nem tudom megoldani így tehát kell a proxy.

:(

 mert a klinesen egy másik app is fut, aminek kell néhány weboldal elérés

ez rendben.

 azt a tűzfal miatt nem tudom megoldani így tehát kell a proxy.

Ezt viszont kifejthetnéd? Hogy kerül a forgalom a squidra? Mert alapvetően az szokott lenni, hogy van egy szabály, ami azt mondja hogy

from: belső_háló, to: internet, port: 80,443, DNAT: squid_ip:3128. 

Alapvetően annyi a dolog, hogy ebbe nem kell beleengedni a 

from: belső_háló, to: appserver_ip, port: 80,443 -at.

Ezt azért általában egy akármilyen gagyi tűzfallal is meg lehet csinálni, vagy már előtte elaccepteled, vagy a szabályba a fromot úgy fogalmazod meg, hogy ne kerüljön bele, vagy akármi.

Ha adsz infót arról, hogy valójában mik a limitációk, könnyebb ám segíteni.

(És persze, ha az appszerver és a kliens is a te kezedben van, akkor valójában akár a kliens is tehetne bele plusz headert, vagy másképp is kommunikálhatnák azt a source ipt (vagy egyéb infót, amire szükségük van valójában).

A forgalom szabályozható a kliens oldali proxy konfigurációban, pl. kivételek hozzáadásával. (PAC fájl esetében kicsit több a lehetőség.)

Tehát a kliensen be kell állítani azt, hogy Internet elérése a proxy-n keresztül van, és itt hozzá lehet adni azokat a gépeket/IP szegmenseket, amiket direktbe keressen a kliens. Ebben az esetben a weboldalak elérése a proxy-n megy keresztül, a belső szerverek elérése meg direktbe, és ebben az esetben a kliens IP meg fog jeleni az applikáció oldalán

(transzparens proxy esetében kicsit máshogy működik a proxy elérés, de ebben az esetben a belső gépek elérése direkt.)