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.
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!
Ezt kijavítod? Mert így nem értelmes :)
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?
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é. :)
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.
:(
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.
Gábriel Ákos
ez rendben.
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.)