
pfSense + Squid koos HTTPS-filterimise ja ĂŒhtse sisselogimise (SSO) tehnoloogiaga Active Directory gruppide jĂ€rgi filtreerimisega
LĂŒhike taustalugu
EttevÔttes tekkis vajadus rakendada puhverserverit, mis vÔimaldaks ligipÀÀsu veebisaitidele (sh https) filtreerida AD-gruppide jÀrgi, et kasutajad ei peaks sisestama mingeid tÀiendavaid paroole ja haldamine oleks vÔimalik veebiliidese kaudu. Ei ole ju halb idee, eks?
Ăige vastus oleks olnud soetada sellised lahendused nagu Kerio Control vĂ”i UserGate, kuid nagu ikka, raha pole, samas vajadus on.
Siin tuleb appi vana hea Squid, aga jĂ€lle â kust vĂ”tta veebiliides? SAMS2? Moraalselt aegunud. Siin tulevad appi pfSense.
Kirjeldus
Selles artiklis kirjeldatakse Squidi puhverserveri seadistamise viisi.
Kasutajate autentimiseks kasutatakse Kerberost.
Domeenigruppide jÀrgi filtreerimiseks kasutatakse SquidGuardi.
JĂ€lgimiseks kasutatakse Lightsquid, sqstat ning pfSense'i sisemisi jĂ€lgimisse sĂŒsteeme.
Samuti lahendame selle tavalise probleemi, mis on seotud ĂŒhtse sisselogimise tehnoloogia (SSO) rakendustega, mis ĂŒritavad internetti pÀÀseda oma sĂŒsteemi kasutaja kontoga.
Valmistamine Squidi installimiseks
Aluseks vÔetakse pfSense, Paigaldusjuhend.
Mille sees organiseerime autentimise tulemĂŒĂŒri enda kasutajakontode abil. Juhend.
VĂ€ga oluline!
Enne Squidi installimise alustamist tuleb seadistada DNS serverile pfSense'is, luua sellele A ja PTR kirjed meie DNS-serveris ning seadistada NTP, et kellaaeg ei erineks domeenikontsentratori ajast.
Ja teie vĂ”rgus tuleb anda WAN-liidesele pfSense vĂ”imalus internetti pÀÀseda ning kasutajatele kohalikus vĂ”rgus ĂŒhenduda LAN-liidese kaudu, sealhulgas portide 7445 ja 3128 (minu puhul 8080) kaudu.
Kas kĂ”ik on valmis? Kas domeeni LDAP-ĂŒhendus pfSense'i volitamiseks on seadistatud ja kellaaeg on sĂŒnkroonitud? SuurepĂ€rane. Aeg alustada pĂ”hiprotsessi.
Squidi, SquidGuardi ja LightSquidi installimine ja esialgne seadistamine
Installime pfSense'i pakihalduri kaudu jaotises âSĂŒsteem / Pakihaldurâ.
PĂ€rast edukat installimist liikume jaotisse âTeenused/Squid Proxy serverâ ja seetĂ”ttu seadistame esmalt vahekaardil Local Cache vahemĂ€lu, mina seadistasin kĂ”ik vÀÀrtused 0, kuna ma ei nĂ€e erilist mĂ”tet veebilehtede vahemĂ€llu salvestamisel â sellega saavad brauserid suurepĂ€raselt hakkama. Seadistamise lĂ”petamiseks vajutame ekraani allosas nuppu âSalvestaâ, mis annab meile vĂ”imaluse teha pĂ”hiseadeid proxy jaoks.
PÔhiseaded seadistame jÀrgmiselt:

Vaikimisi port on 3128, aga mina eelistan kasutada 8080.
Valitud parameetrid vahekaardil Proxy Interface mÀÀravad, milliseid liideseid meie proxy kuulab. serverKuna see tulemĂŒĂŒr on ĂŒles ehitatud nii, et internetiĂŒhendus lĂ€heb WAN-liidese kaudu, isegi kui LAN ja WAN vĂ”ivad olla ĂŒhes ja samas lokaalses alamsĂŒsteemis, soovitan kasutada proxy jaoks just LAN-i.
Loopback on vajalik sqstat'i jaoks.
Allpool leiate seadistused lÀbipaistva (transparent) proxy jaoks ja ka SSL Filter, kuid need pole meile vajalikud, meie proxy ei ole lÀbipaistev ja me ei tegele HTTPS-i sertifikaadi asendamisega (kuna meil on dokumentide kÀive, pangakliendid jne), vaid vaatame lihtsalt kÀepidet.
Sel hetkel peame liikuma oma domeenikontrollerisse ja looma seal autentimise konto (vĂ”ite kasutada ka seda, mille olete seadistanud autentimiseks pfSense'is). Siin on vĂ€ga oluline tegur â kui plaanite kasutada AES128 vĂ”i AES256 ĆĄifrimist, mĂ€rkige vastavad linnukesed konto seadetes.
Kui teie domeen on vĂ€ga keeruline mets, kus on palju katalooge, vĂ”i teie domeen on .local, siis on VĂIMALIK, kuid mitte tĂ€pselt, et peate selle konto jaoks kasutama lihtsat parooli; see on tuntud viga, kuid keeruline parool vĂ”ib lihtsalt mitte töötada, tuleb kontrollida konkreetse juhtumi puhul.

PÀrast seda loome Kerberi vÔtme faili, avame domeenikontrolleris administraatori Ôigustega kÀsurea ja sisestame:
# 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.keytabKus mÀÀrame oma pfSense FQDN, jĂ€rgides rangelt suurte ja vĂ€ike tĂ€htede jĂ€rgimist, parameetri mapuser alla sisestame oma domeeni kasutajakonto ja selle parooli ning krĂŒpto all valime ĆĄifreerimise meetodi; mina kasutasin tööks rc4 ja vĂ€lja -out valime, kuhu saadame meie valmis vĂ”tme faili.
Ănnestunud vĂ”tme faili loomise jĂ€rel saadame selle meie pfSense'ile, kasutasin selleks Far'i, kuid seda saab teha ka kĂ€skude, putty vĂ”i pfSense'i veebiliidese kaudu jaotises 'Diagnostika -> KĂ€skude rida'.
NĂŒĂŒd saame redigeerida vĂ”i luua /etc/krb5.conf

kus /etc/krb5.keytab on meie loodud vÔtmefail.
Kohustuslik on kontrollida Kerberose tööd kinitiga, kui see ei tööta, ei ole mÔtet edasi lugeda.
Squidi autentimise ja autentimiseta juurdepÀÀsu seadistamine
PĂ€rast Kerberose edukat seadistamist ĂŒhendame selle meie Squid'iga.
Selleks minge teenustesse Squid Proxy Server ja pÔhiseadetest rullige alla, seal leiate nuppu 'TÀiendavad seadistused'.
VĂ€lja Custom Options (Before Auth) sisestame:
#ЄДлпДŃŃ
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 authkus auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth â valib vajaliku Kerberose autentimise abilduse.
Ala -s vÀÀrtusega GSS_C_NO_NAME â mÀÀrab, et kasutatakse mis tahes kontot vĂ”tmefailist.
Ala -k vÀÀrtusega /usr/local/etc/squid/squid.keytab â mÀÀrab, et kasutada just seda keytab faili. Minu puhul on see sama genereeritud keytab fail, mille kopeerisin kausta /usr/local/etc/squid/ ja nimetasime ĂŒmber, sest squid ei tahtnud selle kaustaga sĂ”brustada, ilmselt jÀÀvad Ă”igused vĂ€ikeseks.
Ala -t vÀÀrtusega -t none â deaktiveerib tsĂŒklilised pĂ€ringud domeenikontrollerile, mis vĂ€hendab oluliselt selle koormust, kui teil on rohkem kui 50 kasutajat.
Testimise ajaks saab lisada ka vĂ”tme -d â st diagnostika, kuna siis prinditakse rohkem logisid.
auth_param negotiate children 1000 â mÀÀrab, kui palju samaaegseid autentimisprotsesse vĂ”ib kĂ€ivitada
auth_param negotiate keep_alive on â ei lase katkestada ĂŒhendust autoriseerimisahelat kĂŒsides
acl auth proxy_auth REQUIRED â loob ja nĂ”uab juurdepÀÀsu kontrollimise nimekirja, mis sisaldab autentimise lĂ€binud kasutajaid
acl nonauth dstdomain «/etc/squid/nonauth.txt» â teatame squidile nonauth juurdepÀÀsu nimekirjast, kus on sihtdomeenid, millele on alati lubatud juurdepÀÀs kĂ”igile. Koostame faili ja kirjutame selle sisse domeenid formaadis
.whatsapp.com
.whatsapp.netWhatsapp ei ole pĂ”hjuseta nĂ€ide â see on vĂ€ga nĂ”udlik autentimist vajavate proxyde osas ja ei tööta, kui seda ei lubata enne autentimist.
http_access allow nonauth â lubame juurdepÀÀsu sellele nimekirjale kĂ”igile
http_access deny !auth â keelame juurdepÀÀsu mittetuvastatud kasutajatele teistele saitidele
http_access allow auth â lubame juurdepÀÀsu autentitud kasutajatele.
KĂ”ik, squid on teie jaoks hÀÀlestatud, nĂŒĂŒd on Ă”ige aeg alustada rĂŒhmade filtreerimist.
SquidGuardi seadistamine
Liigume teenuste menĂŒĂŒsse SquidGuard Proxy Filter.
LDAP Choices all sisestame andmed oma konto kohta, mida kasutatakse Kerberose autentimiseks, kuid jÀrgmises formaadis:
CN=pfsense,OU=teenuse-ĂŒhikud,DC=domain,DC=localKui on tĂŒhikuid vĂ”i mitte-latinĂŒksusi, tuleks see kirje sulgeda ĂŒhekordsete vĂ”i topelt jutumĂ€rkidega:
'CN=sg,OU=teenuse-ĂŒhikud,DC=domain,DC=local'
"CN=sg,OU=teenuse-ĂŒhikud,DC=domain,DC=local"SeejĂ€rel peaksite need linnukesed kindlasti panema:
![]()
Kustutame ebavajalikud DOMAINpfsense DOMAIN.LOCAL, millest kogu sĂŒsteem on vĂ€ga tundlik.
Liigume nĂŒĂŒd edasi Group Acl-i ja seome oma domeenigruppide juurdepÀÀsu, ma kasutan lihtsaid nimesid nagu group_0, group_1 jne kuni 3, kus 3 tĂ€histab ainult valge nimekirja juurdepÀÀsu ja 0 â lubatud on kĂ”ik.
Gruppide sidumine toimub jÀrgmiselt:
ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0OU=squidOU=service-groupsDC=DOMAINDC=LOCAL))Salvestame oma grupi, liigume Times-i, seal olen loonud ĂŒhe ajavahemiku, mis tĂ€hendab, et töötame alati, nĂŒĂŒd liigume Target Categories ja loome nimekirjad vastavalt soovidele, pĂ€rast nimekirjade loomist naaseme oma gruppidesse ja gruppide sees nuppudega valime, kes kuhu pÀÀseb ja kes mitte.
LightSquid ja sqstat
Kui seadistamise kĂ€igus valisime loopbacki squid'i seadetes ja avasime juurdepÀÀsul 7445 tulemĂŒĂŒris nii meie vĂ”rgus kui ka pfSense'is, siis liigeldes DiagnostikaSquid Proxy Reports-i saame probleemideta avada nii sqstat'i kui ka LightSquid'i; viimase jaoks tuleb seal ka mĂ”elda kasutajanimi ja parool, samuti on vĂ”imalus valida kujundus.
LÔpetamine
pfSense on vĂ€ga vĂ”imas tööriist, mis suudab teha palju asju â alates liikluse pööramisest kuni kasutajate interneti juurdepÀÀsu kontrollimiseni, kuid see on vaid vĂ€ike osa kogu funktsionaalsusest. Siiski lahendas see ettevĂ”ttes, kus on 500 masinat, probleemi ning aitas kokku hoida proxy ostmisel.
Loodan, et see artikkel aitab kedagi lahendada keskmiste ja suurte ettevĂ”tete jaoks piisavalt аĐșŃŃалŃĐœŃŃ ĂŒlesande.
Allikas: habr.com
