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!
- 441 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Bamilyen load balancer / reverse proxy megcsinalja, pl haprpxy, nginx
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
Szóval. :)
Azért van ott a proxy, mert a kliensek néhány weboldal felé ki vannak engedve. :)
Egy szimpla belső céges hálózat, a tűzfal csak IP címet tud szűrni, így szükség volt squid-re, hogy domain-ra lehessen szűrni kifelé. :)
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
:(
- A hozzászóláshoz be kell jelentkezni
Nem kell a proxy. A kérések egymástól függetlenek. Olvasd el még párszor a választ, rajzold fel, értsd meg, menni fog.
zászló, zászló, szív
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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.)
- A hozzászóláshoz be kell jelentkezni