
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 serverid 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_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=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
