1. 程式人生 > >配置squid整合域身份認證

配置squid整合域身份認證

終於有時間測試一下squid的域身份認證了,之前一直使用iptables來通過IP地址做的代理訪問許可權控制,而使用哪種方法是根據各個公司內部的具體需求來決定的。

首先明確一下需求,配置squid使它能支援域使用者認證,如果可能的話,使用整合windows身份認證,這樣域使用者登入計算機後,不需要輸入密碼就可以使用,做到使用者端透明,除非使用者未使用域使用者登入才會彈出需要輸入帳戶密碼。

先放狗搜了一圈,大致確定了方向,使用samba和krb5做帳戶認證,用squid來呼叫即可。

1、本文使用CentOS5.6系統,先安裝需要的軟體

yum install squid samba ntp

安裝ntp是為了同步時間用的,如果squid的時間和域控制器時間相差太多,在以下配置中會出錯。

同步時間的命令

ntpdate clock.redhat.com

2、修改hosts檔案,把計算機名以及計算機全名設定好,本例域為test.local

vi /etc/hosts 127.0.0.1 squid squid.test.local localhost

3、修改dns,使用域控制器的DNS

vi /etc/resolv.conf nameserver 192.168.1.100

4、修改/etc/krb5.conf,更改其中的域資訊,注意域名一定要全部大寫

[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = TEST.LOCAL #改成你自己的域名 dns_lookup_realm = false dns_lookup_kdc = true #這裡需要把原來的false改成true ticket_lifetime = 24h forwardable = yes [realms] TEST.LOCAL = { #改成你自己的域名 kdc = 192.168.1.100:88 #改成域控制器的IP admin_server = 192.168.1.100:749 #改成域控制器的IP default_domain = TEST.LOCAL #改成你自己的域名 } [domain_realm] .test.local = TEST.LOCAL #改成你自己的域名 test.local = TEST.LOCAL #改成你自己的域名 [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }

修改完畢可以使用以下名來驗證,輸入正確的密碼就不報錯(就是啥顯示也沒有),輸入錯誤的就會報錯

net ads join -U [email protected]

注意,這裡的TEST.LOCAL也必須要全部大寫,否則也會報錯。

5、修改samba配置檔案,以下只貼出來有變化或沒有的

workgroup = TEST server string = squid security = ads realm = TEST.LOCAL password server = 192.168.1.100 winbind use default domain = yes encrypt passwords = yes idmap gid = 10000 - 20000 idmap uid = 10000 - 20000 os level = 20 dns proxy = no

6、加入域

net ads join -U [email protected]

然後輸入密碼就可以了,檢測是否成功加入域的方法
wbinfo -t #測試域連線 wbinfo -u #列出所有使用者 wbinfo -g #列出所有組 tlm_auth --username=administrator #測試ntlm_auth驗證密碼

7、配置NSS,在/etc/nsswitch.conf找到以下兩行,在後面新增winbind即可

passwd: files winbind group: files winbind

8、修改squid配置檔案,因為要做組驗證,還需要在域控制器上新增一個名為internet的組,並新增好相應人員

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of=TEST.LOCAL\\internet auth_param ntlm children 5 auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of=TEST.LOCAL\\internet auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 5 hours acl NTLMUsers proxy_auth REQUIRED http_access allow all NTLMUsers

裡面有兩個TEST.LOCAL替換成你自己的就行了,如果要替換組,把後面的internet替換成你自己的組就行了

記得在規則裡看好配置,如果你之前就有了一條deny,那這些配置是不會生效的,需要把http_access deny all放到最後
另外,要讓乾淨的squid配置檔案無錯,還需要增加以下幾行
cache_mgr [email protected] visible_hostname squid.test.local

然後把squid服務重啟一下就完成了,最後別忘了把squid、smb、winbind這幾個服務設定成自動執行。