pfSense+Squid ืขื ืกืื ืื https + ืื ืืกื ืืืืื (SSO) ืขื ืกืื ืื ืงืืืฆืช Active Directory
ืจืงืข ืงืฆืจ
ืืืืจื ื ืืจืฉื ืืืืืืข ืฉืจืช ืคืจืืงืกื ืขื ืืืืืช ืืกื ื ืืืฉื ืืืชืจืื (ืืืื https) ืืคื ืงืืืฆืืช ื-AD, ืื ืฉืืืฉืชืืฉืื ืื ืืื ืืกื ืกืืกืืืืช ื ืืกืคืืช, ืื ืืชื ืืืื ืื ืื ืืืชื ืืืืฉืง ืืืื ืืจื ื. ืืคืืืงืฆืื ืืืื, ืื?
ืืชืฉืืื ืื ืืื ื ืชืืื ืืงื ืืช ืคืชืจืื ืืช ืืื Kerio Control ืื UserGate, ืืื ืืื ืชืืื ืืื ืืกืฃ, ืืื ืืฉ ืฆืืจื.
ืื ืืืงืื ืฉืื ืืืืื ืื ืืืฉื ืืืืื ืื ืืืฆืื, ืืื ืฉืื - ืืืคื ืื ื ืืืื ืืืฉืื ืืืฉืง ืืื ืืจื ื? SAMS2? ืืืืฉื ืืืืื ื ืืืกืจืืช. ืื ืืืงืื ืฉืื pfSense ืืื ืืืฆืื.
ืชืืืืจ
ืืืืจ ืื ืืชืืจ ืืืฆื ืืืืืืจ ืืช ืฉืจืช ื-proxy Squid.
Kerberos ืืฉืืฉ ืืืจืฉืืช ืืฉืชืืฉืื.
SquidGuard ืืฉืืฉ ืืกืื ืื ืืคื ืงืืืฆืืช ืืืืืื ืื.
ืืขืจืืืช ื ืืืืจ Lightsquid, sqstat ื-pfSense ืคื ืืืืืช ืืฉืืฉื ืื ืืืืจ.
ืื ืื ืืคืชืืจ ืืขืื ื ืคืืฆื ืืงืฉืืจื ืืืื ืกืช ืืื ืืืืืืืช ืื ืืกื ืืืืื (SSO), ืืืืืจ ืืืฉืืืื ืฉืื ืกืื ืืืืืฉ ืืืื ืืจื ื ืืชืืช ืืืฉืืื ืืืฆืคื ืขื ืืฉืืื ืืืขืจืืช ืฉืืื.
ืืชืืื ื ืื ืืืชืงื ืช ืกืงืืืื
pfSense ืืืืงื ืืืกืืก,
ืืชืืื ืื ื ืืืจืื ืื ืืืืืช ืขื ืืืืช ืืืฉ ืขืฆืื ืืืืฆืขืืช ืืฉืืื ืืช ืืืืืื.
ืืฉืื ืืืื!
ืืคื ื ืฉืชืชืืื ืืืชืงืื ืืช Squid, ืขืืื ืืืืืืจ ืืช ืฉืจืช ื-DNS ื-pfsense, ืืขืฉืืช ืขืืืจื ืจืฉืืืช A ืืจืฉืืืช PTR ืืฉืจืช ื-DNS ืฉืื ื, ืืืืืืืจ ืืช NTP ืื ืฉืืฉืขื ืื ืชืืื ืฉืื ื ืืืฉืขื ืืืงืจ ืืชืืื.
ืืืจืฉืช ืฉืื, ืกืคืง ืืช ืืืืืืช ืืืืฉืง ื-WAN ืฉื pfSense ืืขืืืจ ืืืื ืืจื ื, ืืืืฉืชืืฉืื ืืจืฉืช ืืืงืืืืช ืืืชืืืจ ืืืืฉืง ื-LAN, ืืืื ืืืฆืืืืช 7445 ื-3128 (ืืืงืจื ืฉืื 8080).
ืืื ืืืื? ืืื ืืืืืจ LDAP ื ืืฆืจ ืขื ืืืืืืื ืืืจืฉืื ื-pfSense ืืืฉืขื ืืกืื ืืจื ืช? ืืืื. ืื ืืืื ืืืชืืื ืืช ืืชืืืื ืืขืืงืจื.
ืืชืงื ื ืืืืืจื ืืจืืฉ
Squid, SquidGuard ื-LightSquid ืืืชืงื ื ืืื ืื ืืืืืืืช ืฉื pfSense ืืงืืข "ืื ืื ืืขืจืืช / ืืืืืืช".
ืืืืจ ืืชืงื ื ืืืฆืืืช, ืขืืืจ ืื "ืฉืืจืืชืื / ืฉืจืช ืคืจืืงืกื Squid /" ืืงืืื ืื, ืืืฉืื ืืช ืืืืื ืืงืืื, ืชืืืืจ ืฉืืืจื ืืืืืื, ืืืืจืชื ืืื ื-0, ืื ืื ื ืื ืจืืื ืืขื ืืืืกืื ืืชืจืื ืืืืืื, ืืคืืคื ืื ืขืืฉืื ืขืืืื ืืฆืืื ืช ืขื ืื. ืืืืจ ืืืืืจื, ืืืฅ ืขื ืืคืชืืจ "ืฉืืืจ" ืืชืืชืืช ืืืกื ืืื ืืืชื ืื ื ืืช ืืืืืื ืืช ืืืฆืข ืืืืจืืช ืคืจืืงืกื ืืกืืกืืืช.
ืืืืืจืืช ืืขืืงืจืืืช ืื ืืืืงืื:
ืืฆืืืช ืืจืืจืช ืืืืื ืืื 3128, ืืื ืื ื ืืขืืืฃ ืืืฉืชืืฉ ื-8080.
ืืคืจืืืจืื ืฉื ืืืจื ืืืฉืื ืืช ืืืฉืง ืคืจืืงืกื ืงืืืขืื ืืืืื ืืืฉืงืื ืฉืจืช ื-proxy ืฉืื ื ืืงืฉืื. ืืืืืื ืฉืืืืช ืืฉ ืื ืื ืืื ืืฆืืจื ืืื ืฉืืื ื ืจืืืช ืืืื ืืจื ื ืืืืฉืง WAN, ืืืจืืช ืฉ-LAN ื-WAN ืืืืืื ืืืืืช ืืืืชื ืจืฉืช ืืฉื ื ืืงืืืืช, ืื ื ืืืืืฅ ืืืฉืชืืฉ ื-LAN ืขืืืจ ื-proxy.
ืืฉ ืฆืืจื ื-Loopback ืืื ืฉ-sqstat ืืคืขื.
ืืืื ืชืืฆืื ืืช ืืืืจืืช ื-proxy ืืฉืงืืฃ (ืฉืงืืฃ) ืืื ืืกื ื SSL, ืืื ืื ืื ื ืื ืฆืจืืืื ืืืชื, ื-proxy ืฉืื ื ืื ืืืื ืฉืงืืฃ, ืืืกืื ืื https ืื ื ืืืืฃ ืืช ืืืืฉืืจ (ืืฉ ืื ื ืชืืจืื ืืกืืืื, ืื ืง ืืงืืืืช ืืื'), ืืืื ื ืกืชืื ืจืง ืขื ืืืืฆืช ืืื.
ืืฉืื ืื, ืขืืื ื ืืขืืืจ ืืืงืจ ืืชืืื ืฉืื ื, ืืืฆืืจ ืื ืืฉืืื ืืืืืช (ื ืืชื ืืืฉืชืืฉ ืื ืืื ืฉืืืืืจ ืืืืืืช ื-pfSense ืขืฆืื). ืื ื ืืืจื ืืฉืื ืืืื - ืื ืืชื ืืชืืืื ืืืฉืชืืฉ ืืืฆืคื ื AES128 ืื AES256 - ืกืื ืืช ืืชืืืืช ืืืชืืืืืช ืืืืืจืืช ืืืฉืืื ืฉืื.
ืื ืืืืืืื ืฉืื ืืื ืืขืจ ืืืจืื ืืืื ืขื ืืกืคืจ ืจื ืฉื ืกืคืจืืืช ืื ืฉืืืืืืื ืฉืื ืืื .local, ืื ืื ืืคืฉืจื, ืืื ืื ืืืื, ืฉืชืฆืืจื ืืืฉืชืืฉ ืืกืืกืื ืคืฉืืื ืืืฉืืื ืื, ืืืื ืืืืข, ืืื ืื ืืืื ืคืฉืื ืื ืืขืืื ืขื ืกืืกืื ืืืจืืืช, ืืชื ืฆืจืื ืืืืืง ืืงืจื ืืกืืื.
ืืืืจ ืืื, ืื ื ืืืฆืจืื ืงืืืฅ ืืคืชื ืขืืืจ kerberos, ืคืืชืืื ืฉืืจืช ืคืงืืื ืขื ืืืืืืช ืื ืื ืืืงืจ ืืชืืื ืืืืื:
# 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
ืืืื ืฉืื ื ืืฆืืื ืื ืืช ื-FQDN pfSense ืฉืื ื, ืืงืคืืื ืืืื ืืช ืืืงืจื, ืืืื ื ืืช ืืฉืืื ืืืืืืื ืฉืื ื ืืืกืืกืื ืฉืื ืืคืจืืืจ mapuser, ืืืงืจืืคืื ืื ื ืืืืจืื ืืฉืืืช ืืืฆืคื ื, ืืฉืชืืฉืชื ื-rc4 ืืขืืืื ืืืฉืื -out ื ืืืจ ืืืื ืื ื ืืฉืื ืืช ืงืืืฅ ืืืคืชื ืืืืืืจ ืฉืื ื.
ืืืืจ ืืฆืืจืช ืงืืืฅ ืืืคืชื ืืืฆืืื, ื ืฉืื ืืืชื ื-pfSense ืฉืื ื, ืืฉืชืืฉืชื ื-Far ืืฉืืื ืื, ืืื ืืชื ืืืื ืื ืืขืฉืืช ืืืช ืื ืขื ืคืงืืืืช ืืื ืขื ืืจืง ืื ืืจื ืืืฉืง ืืืื ืืจื ื ืฉื pfSense ืืกืขืืฃ "ืฉืืจืช ืคืงืืืืช ืืืืื".
ืืขืช ื ืืื ืืขืจืื/ืืืฆืืจ /etc/krb5.conf
ืืืฉืจ /etc/krb5.keytab ืืื ืงืืืฅ ืืืคืชื ืฉืืฆืจื ื.
ืืงืคืืื ืืืืืง ืืช ืคืขืืืช ื-kerberos ืืืืฆืขืืช kinit, ืื ืื ืื ืขืืื, ืืื ืืขื ืืืืฉืื ืืงืจืื.
ืืืืจืช ืืืืืช ืืืื ืื ืืจืฉืืืช ืืืฉื ืืื ืืืืืช
ืืืืจ ืฉืืืืจื ื ืืช ื-kerberos ืืืฆืืื, ื ืฆืืื ืืืชื ืืืืื ืื ืฉืื ื.
ืืฉื ืื, ืขืืืจ ืื ServicesSquid Proxy Server ืืืืืืจืืช ืืจืืฉืืืช ืจืื ืขื ืืืื ืืืื, ืฉื ื ืืฆื ืืช ืืืคืชืืจ "ืืืืจืืช ืืชืงืืืืช".
ืืฉืื ืืคืฉืจืืืืช ืืืชืืืืช ืืืฉืืช (ืืคื ื ืืืืืช), ืืื:
#ะฅะตะปะฟะตัั
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
ืืืคื auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth - ืืืืจ ืืช ืขืืืจ ืืืืืืช kerberos ืฉืื ื ืฆืจืืืื.
ืืคืชื -s ืขื ืืฉืืขืืช GSS_C_NO_NAME - ืืืืืจ ืืช ืืฉืืืืฉ ืืื ืืฉืืื ืืงืืืฅ ืืืคืชื.
ืืคืชื -k ืขื ืืฉืืขืืช /usr/local/etc/squid/squid.keytab - ืงืืืข ืืืฉืชืืฉ ืืงืืืฅ keytab ืืกืคืฆืืคื ืืื. ืืืงืจื ืฉืื, ืื ืืืชื ืงืืืฅ keytab ืฉืืฆืจื ื, ืืืชื ืืขืชืงืชื ืืกืคืจืืืช /usr/local/etc/squid/ ืืฉืื ืืชื ืื, ืื ืืืืื ืื ืื ืจืฆื ืืืืืช ืืืจ ืขื ืืกืคืจืืื ืืื, ืื ืจืื ืฉืื ืืื ืืกืคืืง ืืืืืืช.
ืืคืชื -t ืขื ืืฉืืขืืช - ืื ืืฃ ืืื - ืืฉืืืช ืืงืฉืืช ืืืืืจืืืช ืืืงืจ ืืชืืื, ืื ืฉืืคืืืช ืืืื ืืช ืืขืืืก ืขืืื ืื ืืฉ ืื ืืืชืจ ื-50 ืืฉืชืืฉืื.
ืืืฉื ืืืืืงื, ื ืืชื ืื ืืืืกืืฃ ืืช ืืงืฉ -d - ืืืืืจ ืืืืื, ืืืื ืื ื ืืกืคืื ืืืฆืื.
auth_param negotiate children 1000 - ืงืืืข ืืื ืชืืืืื ืืจืฉืื ืื ืืื ืืช ื ืืชื ืืืคืขืื
auth_param negotiate keep_alive on - ืืื ื ืืืคืฉืจ ืื ืชืง ืืช ืืงืฉืจ ืืืืื ืืกืงืจืื ืฉื ืฉืจืฉืจืช ืืืจืฉืืืช
acl auth proxy_auth ื ืืจืฉ - ืืืฆืจ ืืืืจืฉ ืจืฉืืืช ืืงืจืช ืืืฉื ืืืืืืช ืืฉืชืืฉืื ืฉืขืืจื ืืจืฉืื
acl nonauth dstdomain "/etc/squid/nonauth.txt" - ืื ื ืืืืืขืื ืืืืื ืื ืขื ืจืฉืืืช ืืืืฉื nonauth, ืืืืืื ืชืืืื ืืขื, ืฉืืืืื ืชืืื ืชืชืืคืฉืจ ืืืฉื ืืืืื. ืื ืื ื ืืืฆืจืื ืืช ืืงืืืฅ ืขืฆืื, ืืืชืืื ืื ืื ื ืืื ืืกืื ืืืืืื ืื ืืคืืจืื
.whatsapp.com
.whatsapp.net
ืืืืืกืืค ืื ืืฉืืื ืืฉืืฉ ืืืืืื - ืื ืืืื ืืจืจื ืืืื ื-proxy ืขื ืืืืืช ืืื ืืขืืื ืื ืื ืื ืืืชืจ ืืคื ื ืืืืืืช.
http_access ืืคืฉืจ nonauth - ืืคืฉืจ ืืืฉื ืืจืฉืืื ืื ืืืืื
http_access ืืืืืช !auth - ืื ื ืืืกืจืื ืืืฉื ืืืฉืชืืฉืื ืื ืืืจืฉืื ืืืชืจืื ืืืจืื
http_access ืืคืฉืจ ืืืฉืืจ - ืืคืฉืจ ืืืฉื ืืืฉืชืืฉืื ืืืจืฉืื.
ืืื, ืืืืื ืื ืขืฆืื ืืืืืจ, ืขืืฉืื ืืืืข ืืืื ืืืชืืื ืืกื ื ืืคื ืงืืืฆืืช.
ืืืืจืช SquidGuard
ืขืืืจ ืื ServicesSquidGuard Proxy Filter.
ื-LDAP Options ืื ื ืืื ืืกืื ืืช ืื ืชืื ืื ืฉื ืืืฉืืื ืฉืื ื ืืืฉืืฉืื ืืืืืืช kerberos, ืื ืืคืืจืื ืืื:
CN=pfsense,OU=service-accounts,DC=domain,DC=local
ืื ืืฉ ืจืืืืื ืื ืชืืืื ืฉืืื ื ืืืื ืืื, ืื ืืขืจื ืืื ืฆืจืื ืืืืืช ืืืงืฃ ืืืืจืืืืช ืืืืืืช ืื ืืคืืืืช:
'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"
ืืืืจ ืืื, ืืงืคื ืืกืื ืืช ืืชืืืืช ืืืืืช:
ืืื ืื ืชืง DOMAINpfsense ืืืืชืจ
ืขืืฉืื ืื ืื ื ืืืืืื ื-Group Acl ืืืืืืืื ืืช ืงืืืฆืืช ืืืืฉื ืืืืืืื ืฉืื ื, ืื ื ืืฉืชืืฉ ืืฉืืืช ืคืฉืืืื ืืื group_0, group_1 ืืื' ืขื 3, ืืืฉืจ 3 ืืื ืืืฉื ืจืง ืืจืฉืืื ืืืื ื, ื-0 - ืืื ืืคืฉืจื.
ืืงืืืฆืืช ืืงืืฉืจืืช ืืืืคื ืืื:
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))
ืฉืืืจ ืืช ืืงืืืฆื ืฉืื ื, ืขืืืจ ืืืืืืก, ืฉื ืืฆืจืชื ืคืขืจ ืืื ืืืืืจ ืชืืื ืืขืืื, ืืขืช ืขืืืจ ืืงืืืืจืืืช ืืขื ืืืืฆืืจ ืจืฉืืืืช ืืคื ืฉืืงืื ืืขืชื ื, ืืืืจ ืืฆืืจืช ืืจืฉืืืืช ืื ื ืืืืจืื ืืงืืืฆืืช ืฉืื ื ืืืชืื ืืงืืืฆื ืขื ืืคืชืืจืื ืื ื ืืืืจืื ืื ืืืื ืืืืช ืืืคื, ืืื ืื ืืืื ืืืคื.
LightSquid ื-sqstat
ืื ืืืืื ืชืืืื ืืืืืจื ืืืจื ื ืืืืื ืืืืืจืืช squid ืืคืชืื ื ืืช ืืืืืืช ืืืฉืช ื-7445 ืืืืืช ืืืฉ ืื ืืจืฉืช ืฉืื ื ืืื ื-pfSense ืขืฆืื, ืื ืืฉื ืื ืกืื ื-Squid Proxy Reports Diagnostics, ื ืืื ืืคืชืื ืืงืืืช ืื sqstat ืืื Lighsquid, ืขืืืจ ืืืืจืื ื ืฆืืจื ืืืืชื ืืงืื, ืืืื ืขื ืฉื ืืฉืชืืฉ ืืกืืกืื, ืืืฉ ืื ืืืืื ืืช ืืืืืจ ืขืืฆืื.
ืืฉืืื
pfSense ืืื ืืื ืืืง ืืืื ืฉืืืื ืืขืฉืืช ืืจืื ืืืจืื - ืื ืคืจืืงืกื ืชืขืืืจื ืืื ืฉืืืื ืขื ืืืฉืช ืืฉืชืืฉืื ืืืื ืืจื ื ืื ืจืง ืืืง ืงืื ืืื ืืคืื ืงืฆืืื ืืืืช, ืขื ืืืช, ืืืจืืื ืขื 500 ืืืื ืืช, ืื ืคืชืจ ืืช ืืืขืื ืืืกื ื ืงื ืืืช ืคืจืืงืกื.
ืื ื ืืงืืื ืฉืืืืจ ืื ืืขืืืจ ืืืืฉืื ืืคืชืืจ ืืขืื ืฉืืื ืื ืจืืืื ืืืช ืขืืืจ ืืจืืื ืื ืืื ืื ืืื ืืืืืืื.
ืืงืืจ: www.habr.com