Libreng proxy server para sa enterprise na may pahintulot ng domain

Libreng proxy server para sa enterprise na may pahintulot ng domain

pfSense+Squid na may https filtering + Single sign-on technology (SSO) na may pag-filter ayon sa mga pangkat ng Active Directory

Maikling background

Kinailangan ng enterprise na magpatupad ng proxy server na may kakayahang mag-filter ng access sa mga site (kabilang ang https) ng mga pangkat mula sa AD, upang ang mga user ay hindi magpasok ng anumang karagdagang mga password, at ang pangangasiwa ay maaaring gawin mula sa web interface. Hindi isang masamang aplikasyon, hindi ba?

Ang tamang sagot ay ang bumili ng mga solusyon tulad ng Kerio Control o UserGate, ngunit gaya ng dati ay walang pera, ngunit may pangangailangan.

Ito ay kung saan ang mabuting matandang pusit ay sumagip sa amin, ngunit muli, saan ko makukuha ang web interface? SAMS2? Luma na sa moral. Dito sumagip ang pfSense.

ОписаниС

Ilalarawan ng artikulong ito kung paano i-configure ang isang Squid proxy server.
Gagamitin ang Kerberos para pahintulutan ang mga user.
Gagamitin ang SquidGuard upang mag-filter ayon sa mga pangkat ng domain.

Gagamitin para sa pagsubaybay ang Lightsquid, sqstat at internal pfSense monitoring system.
Ang isang karaniwang problema na nauugnay sa pagpapatupad ng teknolohiyang single sign-on (SSO) ay malulutas din, katulad ng mga application na sumusubok na i-access ang Internet sa ilalim ng compass account ng kanilang system account.

Naghahanda sa pag-install ng Squid

Gagamitin ang pfSense bilang batayan, Mga tagubilin sa pag-install.

Sa loob nito ay inaayos namin ang pagpapatunay sa mismong firewall gamit ang mga domain account. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ.

Napakahalaga!

Bago mo simulan ang pag-install ng Squid, kailangan mong i-configure ang DNS server sa pfsense, gumawa ng A record at PTR record para dito sa aming DNS server at i-configure ang NTP para hindi mag-iba ang oras sa oras sa domain controller.

At sa iyong network, magbigay ng kakayahan para sa pfSense WAN interface na ma-access ang Internet, at para sa mga user sa lokal na network na kumonekta sa LAN interface, kabilang ang sa pamamagitan ng port 7445 at 3128 (sa aking kaso, 8080).

Handa na ba ang lahat? Nakakonekta ba ang domain sa pamamagitan ng LDAP para sa awtorisasyon sa pfSense at naka-synchronize ba ang oras? Malaki. Panahon na upang simulan ang pangunahing proseso.

Pag-install at pre-configuration

I-install namin ang Squid, SquidGuard at LightSquid mula sa pfSense package manager sa seksyong "System/Package Manager".

Pagkatapos ng matagumpay na pag-install, pumunta sa "Services/Squid Proxy server/" at una sa lahat, sa tab na Local Cache, i-configure ang caching, itinakda ko ang lahat sa 0, dahil Wala akong nakikitang punto sa pag-cache ng mga site; maayos itong pinangangasiwaan ng mga browser. Pagkatapos magtakda, pindutin ang "I-save" na buton sa ibaba ng screen at ito ay magbibigay sa amin ng pagkakataong gumawa ng mga pangunahing setting ng proxy.

Ang mga pangunahing setting ay ang mga sumusunod:

Libreng proxy server para sa enterprise na may pahintulot ng domain

Ang default na port ay 3128, ngunit mas gusto kong gumamit ng 8080.

Tinutukoy ng mga napiling parameter sa tab na Proxy Interface kung aling mga interface ang pakikinggan ng aming proxy server. Dahil ang firewall na ito ay binuo sa paraang tumitingin ito sa Internet sa pamamagitan ng interface ng WAN, kahit na ang LAN at WAN ay maaaring nasa parehong lokal na subnet, inirerekomenda ko ang paggamit ng LAN para sa proxy.

Kailangan ang loopback para gumana ang sqstat.

Makikita mo sa ibaba ang mga setting ng Transparent na proxy, pati na rin ang SSL Filter, ngunit hindi namin kailangan ang mga ito, hindi magiging transparent ang aming proxy, at para sa pag-filter ng https hindi namin haharapin ang pagpapalit ng certificate (pagkatapos ng lahat, mayroon kaming pamamahala ng dokumento , mga kliyente sa bangko, atbp.), Tingnan na lang natin ang pakikipagkamay.

Sa yugtong ito, kailangan naming pumunta sa aming domain controller, lumikha ng isang account dito para sa pagpapatunay (maaari mo ring gamitin ang isa na iyong na-configure para sa pagpapatunay sa pfSense mismo). Ang isang napakahalagang salik dito ay kung balak mong gumamit ng AES128 o AES256 encryption, lagyan ng check ang naaangkop na mga kahon sa iyong mga setting ng account.

Kung ang iyong domain ay isang napakakomplikadong kagubatan na may malaking bilang ng mga direktoryo o ang iyong domain ay .local, kung gayon POSIBLENG, ngunit hindi sigurado, kakailanganin mong gumamit ng isang simpleng password para sa account na ito, ang bug ay kilala, ngunit may isang kumplikadong password maaaring hindi ito gumana, kailangan mong suriin ang isang partikular na indibidwal na kaso.

Libreng proxy server para sa enterprise na may pahintulot ng domain

Pagkatapos ng lahat ng ito, lumikha kami ng isang pangunahing file para sa Kerberos, sa controller ng domain, magbukas ng command prompt na may mga karapatan ng administrator at ipasok ang:

# 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

Kung saan ipinapahiwatig namin ang aming FQDN pfSense, siguraduhing igalang ang kaso, sa mapuser parameter ay ipinasok namin ang aming domain account at ang password nito, at sa crypto pipiliin namin ang paraan ng pag-encrypt, ginamit ko ang rc4 para sa trabaho at sa field na -out pipiliin namin kung saan ipapadala namin ang aming yari na key file.
Pagkatapos ng matagumpay na paglikha ng key file, ipapadala namin ito sa aming pfSense, ginamit ko ang Far para dito, ngunit magagawa mo rin ito gamit ang mga command, putty o sa pamamagitan ng pfSense web interface sa seksyong "DiagnosticsCommand Line".

Ngayon ay maaari na nating i-edit ang create /etc/krb5.conf

Libreng proxy server para sa enterprise na may pahintulot ng domain

kung saan ang /etc/krb5.keytab ay ang key file na ginawa namin.

Siguraduhing suriin ang operasyon ng Kerberos gamit ang kinit; kung hindi ito gumana, walang saysay na basahin pa.

Pag-configure ng Squid Authentication at Walang Authentication Access List

Ang pagkakaroon ng matagumpay na pag-configure ng Kerberos, ikakabit namin ito sa aming Pusit.

Upang gawin ito, pumunta sa ServicesSquid Proxy Server at sa pangunahing mga setting, pumunta sa pinakailalim, doon makikita namin ang pindutan ng "Mga advanced na setting".

Sa field na Mga Custom na Opsyon (Before Auth), ilagay ang:

#Π₯Π΅Π»ΠΏΠ΅Ρ€Ρ‹
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

saan auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth β€” pinipili ang Kerberos authentication helper na kailangan namin.

Key -s may kahulugan GSS_C_NO_NAME β€” tinutukoy ang paggamit ng anumang account mula sa key file.

Key -k may kahulugan /usr/local/etc/squid/squid.keytab β€” nagpasiya na gamitin ang partikular na keytab file na ito. Sa aking kaso, ito ang parehong keytab file na ginawa namin, na kinopya ko sa /usr/local/etc/squid/ direktoryo at pinalitan ito ng pangalan, dahil ang pusit ay ayaw makipagkaibigan sa direktoryong iyon, tila hindi ko may sapat na karapatan.

Key -t may kahulugan -wala β€” hindi pinapagana ang mga cyclical na kahilingan sa domain controller, na lubos na nakakabawas sa load dito kung mayroon kang higit sa 50 user.
Sa panahon ng pagsubok, maaari mo ring idagdag ang -d switch - i.e. diagnostics, mas maraming log ang ipapakita.
auth_param makipag-ayos sa mga bata 1000 β€” tinutukoy kung gaano karaming mga sabay-sabay na proseso ng awtorisasyon ang maaaring ilunsad
auth_param makipag-ayos keep_alive on β€” pinipigilan ang koneksyon na madiskonekta habang binobotohan ang chain ng awtorisasyon
acl auth proxy_auth KINAKAILANGAN β€” lumilikha at nangangailangan ng listahan ng kontrol sa pag-access na kinabibilangan ng mga awtorisadong gumagamit
acl nonauth dstdomain "/etc/squid/nonauth.txt" β€” ipinapaalam namin sa pusit ang tungkol sa listahan ng pag-access ng nonauth, na naglalaman ng mga patutunguhang domain kung saan palaging papahintulutan ang lahat ng access. Ginagawa namin ang file mismo, at ipinasok ang mga domain sa loob nito sa format

.whatsapp.com
.whatsapp.net

Ang Whatsapp ay ginagamit bilang isang halimbawa para sa isang kadahilanan - ito ay napakapili tungkol sa mga proxy ng pagpapatunay at hindi gagana kung hindi ito pinapayagan bago ang pagpapatunay.
http_access allow nonauth β€” payagan ang access sa listahang ito para sa lahat
http_access deny !auth β€” ipinagbabawal namin ang pag-access sa iba pang mga site para sa mga hindi awtorisadong gumagamit
http_access allow auth β€” payagan ang pag-access sa mga awtorisadong gumagamit.
Iyon lang, ang Squid mismo ay na-configure, ngayon ay oras na upang simulan ang pag-filter ayon sa mga grupo.

Pagse-set up ng SquidGuard

Pumunta sa ServicesSquidGuard Proxy Filter.

Sa Mga Pagpipilian sa LDAP ipinapasok namin ang mga detalye ng aming account na ginamit para sa pagpapatunay ng Kerberos, ngunit sa sumusunod na format:

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

Kung may mga puwang o hindi Latin na mga character, ang buong entry na ito ay dapat na nakapaloob sa isa o dobleng mga panipi:

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

Susunod, tiyaking lagyan ng tsek ang mga kahon na ito:

Libreng proxy server para sa enterprise na may pahintulot ng domain

Upang putulin ang hindi kinakailangang DOMAINpfsense DOMAIN.LOKAL kung saan napakasensitibo ng buong sistema.

Ngayon, pumunta tayo sa Group Acl at i-bind ang aming mga domain access group, gumagamit ako ng mga simpleng pangalan tulad ng group_0, group_1, atbp. hanggang 3, kung saan ang 3 ay nangangahulugan ng access lamang sa puting listahan, at ang 0 ay nangangahulugang lahat ay posible.

Ang mga pangkat ay naka-link tulad ng sumusunod:

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))

i-save namin ang aming grupo, pumunta sa Times, doon gumawa ako ng isang puwang na nangangahulugang ito ay palaging gagana, ngayon pumunta kami sa Mga Target na Kategorya at lumikha ng mga listahan sa aming paghuhusga, pagkatapos gumawa ng mga listahan ay bumalik kami sa aming mga grupo at sa loob ng grupo ay gumagamit kami ng mga pindutan upang piliin kung sino ang maaaring pumunta kung saan at sino ang hindi maaaring pumunta kung saan .

LightSquid at sqstat

Kung sa panahon ng proseso ng pag-setup ay pinili namin ang loopback sa mga setting ng squid at binuksan ang kakayahang ma-access ang 7445 sa firewall pareho sa aming network at sa pfSense mismo, pagkatapos ay kapag pumunta kami sa DiagnosticsSquid Proxy Reports madali naming mabubuksan ang parehong sqstat at Lighsquid, para sa sa huli kakailanganin namin Doon maaari kang makabuo ng isang pag-login at password, at maaari ka ring pumili ng isang disenyo.

Pagtapos

Ang pfSense ay isang napakalakas na tool na maaaring gumawa ng maraming bagay - ang pag-proxy ng trapiko at pagkontrol sa access ng user sa Internet ay isang butil lamang ng buong functionality, gayunpaman, sa isang enterprise na may 500 machine, nalutas nito ang problema at pinahintulutan kaming makatipid. sa pagbili ng isang proxy.

Umaasa ako na ang artikulong ito ay makakatulong sa isang tao na malutas ang isang problema na medyo may kaugnayan para sa katamtaman at malalaking negosyo.

Pinagmulan: www.habr.com

Magdagdag ng komento