終於有時間測試一下squid的域身份認證了,以前一直使用iptables來經過IP地址作的代理訪問權限控制,而使用哪一種方法是根據各個公司內部的具體需求來決定的。web
首先明確一下需求,配置squid使它能支持域用戶認證,若是可能的話,使用集成windows身份認證,這樣域用戶登陸計算機後,不須要輸入密碼就可使用,作到用戶端透明,除非用戶未使用域用戶登陸纔會彈出須要輸入賬戶密碼。windows
先放狗搜了一圈,大體肯定了方向,使用samba和krb5作賬戶認證,用squid來調用便可。app
一、本文使用CentOS5.6系統,先安裝須要的軟件dom
yum install squid samba ntp
測試
安裝ntp是爲了同步時間用的,若是squid的時間和域控制器時間相差太多,在如下配置中會出錯。ui
同步時間的命令debug
ntpdate clock.redhat.com
代理
二、修改hosts文件,把計算機名以及計算機全名設置好,本例域爲test.localcode
vi /etc/hosts 127.0.0.1 squid squid.test.local localhost
三、修改dns,使用域控制器的DNSserver
vi /etc/resolv.conf nameserver 192.168.1.100
四、修改/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 administrator@TEST.LOCAL
注意,這裏的TEST.LOCAL也必需要所有大寫,不然也會報錯。
五、修改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
六、加入域
net ads join -U administrator@TEST.LOCAL
而後輸入密碼就能夠了,檢測是否成功加入域的方法wbinfo -t #測試域鏈接 wbinfo -u #列出全部用戶 wbinfo -g #列出全部組 tlm_auth --username=administrator #測試ntlm_auth驗證密碼
七、配置NSS,在/etc/nsswitch.conf找到如下兩行,在後面添加winbind便可
passwd: files winbind group: files winbind
八、修改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 admin@penglei.name visible_hostname squid.test.local
而後把squid服務重啓一下就完成了,最後別忘了把squid、smb、winbind這幾個服務設置成自動運行。