pfSense+Squid s https filtriranjem + Single sign-on (SSO) s Active Directory grupnim filtriranjem
Kratka pozadina
Tvrtka je trebala implementirati proxy poslužitelj s mogućnošću filtriranja pristupa stranicama (uključujući https) prema grupama iz AD-a tako da korisnici ne unose nikakve dodatne lozinke, a njime se može upravljati s web sučelja. Dobra aplikacija, zar ne?
Točan odgovor bi bio kupiti rješenja kao što su Kerio Control ili UserGate, ali kao i uvijek nema novca, ali ima potrebe.
Tu u pomoć uskače dobri stari Squid, ali opet – gdje mogu nabaviti web sučelje? SAMS2? Moralno zastario. Ovdje pfSense dolazi u pomoć.
Opis
Ovaj članak će opisati kako konfigurirati Squid proxy poslužitelj.
Kerberos će se koristiti za autorizaciju korisnika.
SquidGuard će se koristiti za filtriranje po grupama domena.
Za nadzor će se koristiti Lightsquid, sqstat i interni pfSense nadzorni sustavi.
Također će riješiti čest problem povezan s uvođenjem tehnologije jedinstvene prijave (SSO), odnosno aplikacije koje pokušavaju surfati internetom pod kompas računom sa svojim sistemskim računom.
Priprema za instalaciju Squida
pfSense će se uzeti kao osnova,
Unutar kojeg organiziramo autentifikaciju na samom vatrozidu pomoću domenskih računa.
Vrlo je važno!
Prije nego počnete instalirati Squid, potrebno je konfigurirati DNS poslužitelj u pfsensu, napraviti A zapis i PTR zapis za njega na našem DNS poslužitelju te konfigurirati NTP tako da se vrijeme ne razlikuje od vremena na kontroleru domene.
I na vašoj mreži omogućite WAN sučelju pfSense-a da ide na Internet, a korisnicima na lokalnoj mreži da se povežu na LAN sučelje, uključujući portove 7445 i 3128 (u mom slučaju 8080).
Sve je spremno? Je li uspostavljena LDAP veza s domenom za autorizaciju na pfSense i je li vrijeme sinkronizirano? Sjajno. Vrijeme je za početak glavnog procesa.
Instalacija i predkonfiguracija
Squid, SquidGuard i LightSquid bit će instalirani iz upravitelja paketa pfSense u odjeljku "System / Package Manager".
Nakon uspješne instalacije idite na "Services / Squid Proxy server /" i prije svega u kartici Local Cache konfigurirajte caching, sve sam postavio na 0 jer Ne vidim puno smisla u predmemoriranju web stranica, preglednici to odlično rade. Nakon postavljanja, pritisnite gumb "Spremi" na dnu ekrana i to će nam dati priliku da napravimo osnovne postavke proxyja.
Glavne postavke su sljedeće:
Zadani port je 3128, ali radije koristim 8080.
Odabrani parametri u kartici Proxy sučelja određuju koja će sučelja naš proxy poslužitelj slušati. Budući da je ovaj vatrozid izgrađen na takav način da na internetu izgleda kao WAN sučelje, iako LAN i WAN mogu biti na istoj lokalnoj podmreži, preporučujem korištenje LAN-a za proxy.
Povratna petlja je potrebna da bi sqstat radio.
Ispod ćete pronaći Transparentne (transparentne) proxy postavke, kao i SSL Filter, ali oni nam ne trebaju, naš proxy neće biti transparentan, a za https filtriranje nećemo zamijeniti certifikat (imamo protok dokumenata, banku klijenti itd.), pogledajmo samo stisak ruke.
U ovoj fazi moramo otići do našeg kontrolera domene, stvoriti račun za provjeru autentičnosti u njemu (možete koristiti i onaj koji je konfiguriran za provjeru autentičnosti na samom pfSense-u). Ovdje je vrlo važan faktor - ako namjeravate koristiti AES128 ili AES256 enkripciju - označite odgovarajuće okvire u postavkama vašeg računa.
Ako je vaša domena vrlo složena šuma s velikim brojem direktorija ili je vaša domena .local, onda je MOGUĆE, ali nije sigurno, da ćete morati koristiti jednostavnu lozinku za ovaj račun, greška je poznata, ali možda jednostavno neće raditi sa složenom lozinkom, trebate provjeriti na određenom slučaju.
Nakon toga kreiramo ključnu datoteku za kerberos, otvorimo naredbeni redak s administratorskim pravima na kontroleru domene i unesemo:
# ktpass -princ HTTP/[email protected] -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
Tamo gdje naznačimo naš FQDN pfSense, obavezno poštujmo velika i mala slova, u parametar mapuser upisujemo naš račun domene i njegovu lozinku, au kripto biramo metodu enkripcije, ja sam koristio rc4 za rad i u polju -out biramo gdje ćemo poslat će našu gotovu ključnu datoteku.
Nakon uspješne izrade ključne datoteke, poslat ćemo je našem pfSense-u, za to sam koristio Far, ali to možete učiniti i pomoću naredbi i putty-a ili putem pfSense web sučelja u odjeljku "Diagnostics Command Line".
Sada možemo uređivati/kreirati /etc/krb5.conf
gdje je /etc/krb5.keytab ključna datoteka koju smo stvorili.
Obavezno provjerite rad kerberosa pomoću kinita, ako ne radi, nema smisla čitati dalje.
Konfiguriranje Squid autentifikacije i pristupne liste bez autentifikacije
Nakon što smo uspješno konfigurirali kerberos, pričvrstit ćemo ga na naš Squid.
Da biste to učinili, idite na ServicesSquid Proxy Server i u glavnim postavkama idite do samog dna, tamo ćemo pronaći gumb "Napredne postavke".
U polje Prilagođene opcije (prije autentifikacije) unesite:
#Хелперы
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
gdje auth_param pregovarački program /usr/local/libexec/squid/negotiate_kerberos_auth - odabire autentifikacijski kerberos pomoćnik koji nam je potreban.
ključ -s sa značenjem GSS_C_NO_NAME — definira korištenje bilo kojeg računa iz datoteke ključa.
ključ -k sa značenjem /usr/local/etc/squid/squid.keytab - odlučuje koristiti ovu određenu datoteku s tablicom ključeva. U mom slučaju, ovo je ista datoteka keytab koju smo stvorili, koju sam kopirao u direktorij /usr/local/etc/squid/ i preimenovao ga, jer lignja nije htjela biti prijatelj s tim direktorijem, očito nije bilo dovoljno prava.
ključ -t sa značenjem -t nijedan - onemogućuje cikličke zahtjeve kontroleru domene, što uvelike smanjuje opterećenje ako imate više od 50 korisnika.
Za vrijeme trajanja testa možete dodati i ključ -d - tj. dijagnostika, prikazat će se više zapisa.
auth_param dogovori djecu 1000 - određuje koliko se istovremenih procesa autorizacije može pokrenuti
auth_param pregovarati keep_alive on - ne dopušta prekid veze tijekom prozivanja autorizacijskog lanca
acl auth proxy_auth POTREBNO - kreira i zahtijeva listu kontrole pristupa koja uključuje korisnike koji su prošli autorizaciju
acl nonauth dstdomain "/etc/squid/nonauth.txt" - informiramo lignju o nonauth access listi, koja sadrži odredišne domene, kojima će uvijek biti dopušten pristup svima. Kreiramo samu datoteku, a unutar nje unosimo domene u formatu
.whatsapp.com
.whatsapp.net
Whatsapp nije uzalud korišten kao primjer - vrlo je izbirljiv u pogledu proxyja s autentifikacijom i neće raditi ako nije dopušten prije autentifikacije.
http_access dopustiti nonauth - dopustite pristup ovom popisu svima
http_access deny !auth - zabranjujemo pristup neovlaštenim korisnicima drugim stranicama
http_access dopustiti aut - dopustiti pristup ovlaštenim korisnicima.
To je to, sama lignja je konfigurirana, sada je vrijeme za početak filtriranja po grupama.
Konfiguriranje SquidGuarda
Idite na ServicesSquidGuard Proxy Filter.
U LDAP Options unosimo podatke našeg računa koji se koristi za kerberos autentifikaciju, ali u sljedećem formatu:
CN=pfsense,OU=service-accounts,DC=domain,DC=local
Ako postoje razmaci ili nelatinični znakovi, ovaj cijeli unos treba staviti u jednostruke ili dvostruke navodnike:
'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"
Zatim svakako potvrdite ove okvire:
Za odsijecanje nepotrebnog DOMAINpfsense
Sada idemo na Group Acl i vežemo naše grupe za pristup domeni, koristim jednostavna imena kao što su group_0, group_1 itd. do 3, gdje je 3 pristup samo bijelom popisu, a 0 - sve je moguće.
Grupe su povezane na sljedeći način:
ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))
spremite našu grupu, idite na Times, tamo sam napravio jednu prazninu što znači da uvijek radi, sada idite na Target Categories i kreirajte popise po vlastitom nahođenju, nakon kreiranja popisa vraćamo se u naše grupe i unutar grupe s gumbima biramo tko može ići gdje, a tko ne može gdje .
LightSquid i sqstat
Ako smo tijekom procesa konfiguracije odabrali povratnu petlju u postavkama squida i otvorili mogućnost pristupa 7445 u vatrozidu i na našoj mreži i na samom pfSenseu, tada kada odemo na Squid Proxy Reports Diagnostics, možemo lako otvoriti i sqstat i Lighsquid, za potonje će nam trebati Na istom mjestu osmislite korisničko ime i lozinku, a postoji i mogućnost odabira dizajna.
Završetak
pfSense je vrlo moćan alat koji može puno toga - i prometni proxy i kontrola nad korisničkim pristupom internetu samo su djelić cjelokupne funkcionalnosti, međutim, u poduzeću s 500 strojeva, ovo je riješilo problem i uštedjelo na kupnja proxyja.
Nadam se da će ovaj članak pomoći nekome da riješi problem koji je vrlo relevantan za srednja i velika poduzeća.
Izvor: www.habr.com