Ingyenes proxy szerver vállalatok számára, domain alapú hitelesítéssel

Ingyenes proxy szerver vállalatok számára, domain alapú hitelesítéssel

pfSense+Squid HTTPS szűréssel + Egységes bejelentkezési technológia (SSO) Active Directory csoportok szerinti szűréssel

Rövid háttér

A vállalatnál felmerült a szükséglet, hogy proxy szervert vezessenek be, amely képes a weboldalakhoz (beleértve a HTTPS-t is) való hozzáférést Active Directory csoportok szerint szűrni, hogy a felhasználóknak ne kelljen további jelszavakat beírniuk, és az adminisztráció webes felületről végezhető legyen. Nem rossz igény, igaz?

A helyes válasz az lenne, hogy olyan megoldásokat vásárolunk, mint a Kerio Control vagy a UserGate, de mint mindig, pénz nincs, a szükséglet viszont adott.

Itt jön a segítségünkre a régi jó Squid, de ismét csak — hol találunk webes felületet? SAMS2? Morálisan elavult. Itt jön a segítségünkre a pfSense.

Leírás

A cikkben a Squid proxy szerver beállításának módját írjuk le.
A felhasználók azonosításához Kerberos-t fogunk használni.
A domain csoportok szerinti szűréshez a SquidGuard-t fogjuk használni.

A monitorozáshoz a Lightsquid, sqstat és a pfSense belső monitorozási rendszerei fognak szolgálni.
A gyakori problémát is megoldjuk, amely az egységes bejelentkezési technológia (SSO) bevezetésével kapcsolatos, nevezetesen azt, hogy az alkalmazások a saját rendszerfelhasználónkkal próbálnak internetre csatlakozni.

Előkészületek a Squid telepítéséhez

Alapként a pfSense-t fogjuk használni, Telepítési útmutató.

Amelyben megszervezzük az azonosítást a tűzfalhoz domain fiókokkal. Útmutató.

Nagyon fontos!

A Squid telepítése előtt be kell állítani a DNS-t a szerver a pfSense-ben, A és PTR rekordokat létrehozni a DNS szerverünkön, és az NTP-t úgy beállítani, hogy az idő ne térjen el a domain vezérlőn lévő időtől.

A hálózatban pedig lehetővé kell tenni, hogy a pfSense WAN interfész csatlakozzon az internethez, míg a helyi hálózat felhasználói csatlakozhassanak a LAN interfészhez, beleértve a 7445-ös és 3128-as portot (az én esetemben 8080).

Minden készen áll? A domain LDAP kapcsolata a pfSense-zel létrejött, és az idő szinkronizált? Kiváló. Itt az ideje, hogy nekiálljunk a fő folyamatnak.

Telepítés és előzetes beállítás

A Squid, SquidGuard és LightSquid telepítése a pfSense csomagkezelőjéből, a 'Rendszer/Csomagkezelő' szakaszban fog megtörténni.

A sikeres telepítést követően lépjünk a «Szolgáltatások/Squid Proxy szerver/» részre, és először a Helyi gyorsítótár fülön állítsuk be a gyorsítást, én minden értéket 0-ra állítottam, mivel nem látom értelmét a weboldalak gyorsításának, ezt a böngészők is remekül végzik. A beállítások után nyomjuk meg a «Mentés» gombot a képernyő alján, ez lehetővé teszi, hogy elvégezzük a proxy alapbeállításait.

A fő beállításokat a következőképpen hozzuk létre:

Ingyenes proxy szerver vállalatok számára, domain alapú hitelesítéssel

Az alapértelmezett port 3128, de én inkább a 8080-at használom.

A Proxy Interface fülön kiválasztott paraméterek határozzák meg, hogy mely interfészeket figyel a proxy. szerverMivel ez a tűzfal úgy van felépítve, hogy az internetet a WAN interfészen keresztül figyeli, még akkor is, ha a LAN és WAN azonos helyi alhálózatban lehet, javaslom, hogy a proxy-hoz mindenképpen a LAN-t használjuk.

A loopback a sqstat működéséhez szükséges.

Alább találja az Áttetsző (Transparent) proxy beállításait, valamint az SSL szűrőt, de ezekre nincs szükségünk, a proxy-nk áttetsző nem lesz, az https szűréséhez nem fogunk tanúsítványt cserélni (hiszen itt dokumentumforgalom, bankkliensek stb. is vannak), csak az ügyletet nézzük.

Ezen a lépésnél szükség van arra, hogy átlépjünk a tartományvezérlőnkre, ahol létrehozunk egy hitelesítési fiókot (azt a fiókot is használhatjuk, amelyet a pfSense hitelesítésére állítottunk be). Itt nagyon fontos tényező az, hogy ha AES128 vagy AES256 titkosítást szeretne használni, akkor jelölje be a megfelelő opciókat a fiók beállításaiban.

Ha a tartománya egy bonyolult erdőt képvisel sok mappával, vagy ha a tartománya .local, akkor LEHETSÉGES, de nem biztos, hogy egyszerű jelszót kell használnia ehhez a fiókhoz, ez egy ismert hiba, de egy bonyolult jelszó egyszerűen nem működhet, ezt a konkrét eset alapján érdemes ellenőrizni.

Ingyenes proxy szerver vállalatok számára, domain alapú hitelesítéssel

Ezután generáljuk le a kulcsfájlt a Kerberoshoz, a tartományvezérlőn nyissunk meg egy parancssort adminisztrátori jogokkal, és írjuk be:

# ktpass -princ HTTP/pfsense.domain.local@DOMAIN.LOCAL -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:keytabsPROXY.keytab

Itt adjuk meg a saját FQDN pfSense-ünket, figyeljünk a kis- és nagybetűk használatára, a mapuser paraméterhez írjuk be a domain fiókunkat és annak jelszavát, a crypto mezőhöz válasszuk ki a titkosítási módot, én az rc4-et használtam, és a -out mezőnél válasszuk ki, hová küldjük a kész kulcsfájlt.
A sikeres kulcsfájl létrehozása után elküldjük azt a pfSense-ünknek, én a Far-t használtam ehhez, de ezt meg lehet csinálni parancsokkal, putty-val vagy a pfSense webes felületén a „Diagnosztika > Parancssor” szakaszban is.

Most szerkeszthetjük vagy létrehozhatjuk a /etc/krb5.conf fájlt.

Ingyenes proxy szerver vállalatok számára, domain alapú hitelesítéssel

ahol a /etc/krb5.keytab az általunk létrehozott kulcsfájl.

Kötelező ellenőrizni a Kerberos működését a kinit segítségével, ha nem működik — akkor nincs értelme tovább olvasni.

Squid hitelesítési és hitelesítés nélküli hozzáférési lista beállítása

A Kerberos sikeres beállítása után csatlakoztatjuk azt a Squid-hez.

Ehhez menj a Szolgáltatások > Squid Proxy Server részhez, és az alapbeállításokban lépj a legaljára, ott találod a „Speciális beállítások” gombot.

A Custom Options (Before Auth) mezőbe írjuk be:

#Хелперы
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
#Списки доступа
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt" 
#Разрешения 
http_access allow nonauth 
http_access deny !auth
http_access allow auth

üde auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth — kiválasztja a szükséges Kerberos hitelesítési segédprogramot.

Kulcs -s a következő értékkel GSS_C_NO_NAME — meghatározza, hogy bármelyik fiókot használni kell a kulcsfájlban.

Kulcs -k a következő értékkel /usr/local/etc/squid/squid.keytab — meghatározza, hogy pontosan ezt a keytab fájlt használjuk. Az én esetemben ez az a keytab fájl, amelyet átkonvertáltam a /usr/local/etc/squid/ könyvtárba, és átneveztem, mert a Squid nem akart együttműködni a régi könyvtárral, valószínűleg, mert nem volt elég jogom.

Kulcs - folyamatosan „pingelni” (a leállításhoz nyomjuk meg a Ctrl+C kombinációt) a következő értékkel -t none — letiltja a ciklikus kéréseket a tartományvezérlőhöz, ami jelentősen csökkenti a terhelést, ha több mint 50 felhasználód van.
A tesztidőszak alatt a -d kapcsolót is hozzáadhatjuk — ezáltal diagnosztikai információkat kapunk, több napló fog megjelenni.
auth_param negotiate children 1000 — meghatározza, hány egyidejű hitelesítési folyamatot lehet futtatni
auth_param negotiate keep_alive on — nem engedi megszakadni a kapcsolatot a hitelesítési lánc lekérdezése közben
acl auth proxy_auth REQUIRED — létrehozza és megköveteli a hozzáférési vezérlő listát, amely tartalmazza a hitelesítést megszerzett felhasználókat
acl nonauth dstdomain „/etc/squid/nonauth.txt” — tájékoztatjuk a Squid-et a nonauth hozzáférési lista létezéséről, amely tartalmazza azokat a cél domain neveket, amelyekhez mindig engedélyezett a hozzáférés mindenkinek. A fájlt létrehozzuk, belül pedig a domain neveket a következő formátumban írjuk be:

.whatsapp.com
.whatsapp.net

A WhatsApp nem véletlenül van példaként említve — nagyon érzékeny a hitelesítéssel rendelkező proxykra, és nem fog működni, ha nem engedélyezik a hitelesítés előtt.
http_access allow nonauth — engedjük meg a hozzáférést a listához mindenkinek
http_access deny !auth — megtagadjuk a hozzáférést a nem hitelesített felhasználóknak a többi webhelyhez
http_access allow auth — engedélyezzük a hozzáférést az azonosított felhasználók számára.
Most, hogy a Squid be van állítva, itt az idő, hogy elkezdjük a csoportok szerinti szűrést.

SquidGuard beállítása

Lépjünk a Szolgáltatások SquidGuard Proxy Szűrőhöz.

Az LDAP beállításokban adjuk meg azokat az adatokat, amelyeket a Kerberos hitelesítéshez használnak, de a következő formátumban:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

Ha szóközök vagy nem latin karakterek vannak, akkor ezt az egész bejegyzést egyetlen vagy dupla idézőjelbe kell zárni:

'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"

Ezután kötelező megjelölni ezeket a négyzeteket:

Ingyenes proxy szerver vállalatok számára, domain alapú hitelesítéssel

A nem kívánt DOMAINpfsense levágásához DOMAIN.LOCAL, amelyre a rendszer nagyon érzékeny.

Most lépjünk a Csoport ACL-be, és kapcsoljuk össze a domain hozzáférési csoportjainkat, én egyszerű neveket használok, mint group_0, group_1 és így tovább 3-ig, ahol a 3 csak a fehérlistás hozzáférést jelenti, míg a 0 minden engedélyezett.

A csoportokat a következőképpen kapcsoljuk össze:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0OU=squidOU=service-groupsDC=DOMAINDC=LOCAL))

Mentjük a csoportunkat, átlépünk az Időszakokba, ahol létrehoztam egy időintervallumot, ami mindig érvényes, majd lépjünk a Célkategóriákhoz, és hozzunk létre listákat saját tetszésünk szerint. A listák létrehozása után térjünk vissza a csoportjainkhoz, és a csoporton belül gombokkal válasszuk ki, ki hová mehet és ki hová nem.

LightSquid és sqstat

Ha a beállítások során loopback-et választottunk a Squid beállításaiban, és engedélyeztük a 7445-ös port elérését a tűzfalban mind a saját hálózatunkban, mind a pfSense-en, akkor a Diagnosztika Squid Proxy Jelentésekhez lépve problémamentesen nyithatjuk meg mind a sqstat-ot, mind a LightSquid-t. Az utóbbihoz ott is ki kell találni egy felhasználónevet és jelszót, és van lehetőség a megjelenés kiválasztására is.

Befejezés

A pfSense egy nagyon erős eszköz, amely rengeteg mindent tud — a forgalom proxizálásától kezdve a felhasználói hozzáférés ellenőrzéséig az interneten, ez csak egy kis részét jelenti a funkcionalitásának; ennek ellenére egy 500 gépből álló vállalatnál megoldotta a problémát és lehetővé tette, hogy spóroljunk a proxy vásárlásával.

Remélem, hogy ez a cikk segít valakinek megoldani egy elég aktuális feladatot a közepes és nagyvállalatok számára.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster