CentOS Squid操作系統(tǒng)重新規(guī)劃并部署
在向大家詳細(xì)介紹CentOS Squid之前,首先讓大家了解下CentOS Squid,然后全面介紹CentOS Squid,希望對(duì)大家有用。Linux下實(shí)現(xiàn)針對(duì)Windows域身份認(rèn)證的代理服務(wù)器 口水熊工作的公司使用的代理服務(wù)器是基于Linux系統(tǒng)的,經(jīng)常會(huì)出現(xiàn)一些或多或少的問(wèn)題。直接影響到用戶正常的Internet訪問(wèn)。
因?yàn)槭且郧暗耐伦龅?,再加上,本人一直忙于其它的?xiàng)目,沒(méi)時(shí)間去調(diào)整,優(yōu)化。前不久,Linux系統(tǒng)突然無(wú)法進(jìn)入GNU/GNOME桌面環(huán)境,促使我下定決心重新規(guī)劃并部署一臺(tái)符合當(dāng)前應(yīng)用環(huán)境需要的代理服務(wù)器系統(tǒng)來(lái)。
在部署之前,我們先來(lái)看看現(xiàn)有的代理服務(wù)器的系統(tǒng)環(huán)境:該代理服務(wù)器采用的是基于Redhat Linux 8.x操作系統(tǒng)的以NCSAR為認(rèn)證模式的CentOS Squid 2.3 代理服務(wù)器。因系統(tǒng)比較陳舊,穩(wěn)定性有所欠缺,同時(shí)還存在以下不足之處:
1. 因CentOS Squid配置的問(wèn)題,系統(tǒng)無(wú)法自動(dòng)釋放CentOS Squid的Cache及日志所占用磁盤(pán)空間,經(jīng)常會(huì)因?yàn)榇疟P(pán)空間不足而導(dǎo)致CentOS Squid停止服務(wù),需要人為的去刪除cache及日志以釋放磁盤(pán)空間。
2. 需要在代理服務(wù)器上,為不同的用戶設(shè)置不同的密碼,以前公司職員并不多,倒不是很麻煩,但,隨著公司的發(fā)展,職員的數(shù)量大幅增加,加重了IT管理人員的工作負(fù)擔(dān),同時(shí),也非常難以保證與Windows域賬戶的一致知性;
3. 客戶端不能使用AD集成的賬戶認(rèn)證模式,用戶每次訪問(wèn)Internet都需要重復(fù)的輸入用戶名及密碼,大大降低了用戶使用感受。
4. 沒(méi)有實(shí)現(xiàn)針對(duì)不同Internet訪問(wèn)群體,設(shè)置不同的用戶權(quán)限;
5. 無(wú)法監(jiān)督用戶訪問(wèn)Internet的行為,直接影響到公司網(wǎng)絡(luò)的正常商業(yè)行為。
據(jù)此,我們不難發(fā)現(xiàn),此代理服務(wù)器需要經(jīng)常對(duì)其進(jìn)行維護(hù),非常影響IT工作人員的工作效率。從公司現(xiàn)階段的實(shí)際情況出發(fā),對(duì)代理服務(wù)器的功能重新規(guī)劃如下:
1. 能夠在一點(diǎn)條件下,自動(dòng)回收被CentOS Squid占用的磁盤(pán)空間;
2. 利用AD服務(wù)器上的用戶賬號(hào)信息對(duì)用戶的身份進(jìn)行驗(yàn)證,避免重復(fù)的設(shè)置用戶信息;
3. 提供三種用戶權(quán)限:
1. 拒絕所有權(quán)限;
2. 允許訪問(wèn)Internet,但不允許下載視頻、音頻、可執(zhí)行文件等;
3. 不受限,可訪問(wèn)任意Internet資源;
4. IT管理人員可以查看用戶訪問(wèn)Internet的日志,監(jiān)督用戶訪問(wèn)Internet的行為;
既然我們的目標(biāo)已經(jīng)非常明確了,我們就不再?gòu)U話,開(kāi)始主題吧!
I.系統(tǒng)環(huán)境:
1. CentOS 5.0 Linux
2. CentOS Squid-2.6.STABLE6-4.el5
3. samba-3.0.23c-2.el5.2.0.2
4. sarg-2.2.1-1.el5.rf
5. winbind
6. krb5
II. 修改kerberos 5身份驗(yàn)證服務(wù)的配置文件(非特殊說(shuō)明,均工作在root用戶模式下):
執(zhí)行下列命令:[root@proxy ~]# vim /etc/krb5.conf修改后的krb5.conf為:
1[logging]
2 default = FILE:/var/log/krb5libs.log
3 kdc = FILE:/var/log/krb5kdc.log
4 admin_server = FILE:/var/log/kadmind.log
5
6[libdefaults]
7 default_realm = COMPANY.COM #默認(rèn)的域名(Realm)
8 dns_lookup_realm = false
9 dns_lookup_kdc = false
10 ticket_lifetime = 24h
11 forwardable = yes
12
13[realms]
14 COMPANY.COM = {
15 kdc = adsrv.company.com:88#此處指定KDC(密鑰分配中心)服務(wù)器的名稱或IP地址,一般都在AD服務(wù)器上
16 admin_server = adsrv.company.com:749#此處指定管理服務(wù)器的名稱或IP地址
17 default_domain = company.com #默認(rèn)的域名(domain)
18 }
19
20[domain_realm] #domain與realm的對(duì)應(yīng)關(guān)系
21 .company.com = COMPANY.COM
22 company.com = COMPANY.COM
23
24[kdc]
25profile = /var/kerberos/krb5kdc/kdc.conf
26
27[appdefaults]
28 pam = {
29 debug = false
30 ticket_lifetime = 36000
31 renew_lifetime = 36000
32 forwardable = true
33 krb4_convert = false
34 }
III. 利用Kinit工具測(cè)試krb5的設(shè)置是否正確
執(zhí)行下列命令:[root@proxy ~]# kinit administrator@COMPANY.COM提示輸入用戶administrator的密碼,正確輸入密碼之后返回以下信息:kinit: NOTICE: ticket renewable lifetime is 1 week
或直接返回到命令行狀態(tài),其它提示信息均可能是出錯(cuò)信息。請(qǐng)務(wù)必確認(rèn)您的Linux系統(tǒng)與Windows域服務(wù)器的時(shí)間及時(shí)區(qū)設(shè)置一致,否則將無(wú)法正常與活動(dòng)目錄服務(wù)器正常通信。
IV. Samba配置因?yàn)槲覀兇颂幉⒉簧婕暗秸嬲膕amba服務(wù)器的配置,所以并沒(méi)有將整個(gè)的配置內(nèi)容放在這里,而僅僅只放了架設(shè)CentOS Squid代理服務(wù)器所需要的部分,如下所示:
1[global]
2idmap gid = 10000-20000
3idmap uid = 10000-20000
4password server = 192.168.21.21
5workgroup = COMPANY #域的NetBios名
6os level = 20
7encrypt passwords = yes
8security = ads #設(shè)置為Windows活動(dòng)目錄安全-ADS驗(yàn)證
9realm = COMPANY.COM #驗(yàn)證域realm,必須大寫(xiě)
10winbind use default domain = yes
以上列出來(lái)的項(xiàng)目均需要根據(jù)實(shí)際情況改動(dòng)。
V.通過(guò)ntlm驗(yàn)證程序來(lái)測(cè)試之前所做的配置是否正確在做測(cè)試之前,如必要時(shí),請(qǐng)重新啟動(dòng)Linux服務(wù)器。不過(guò),你也可以嘗試僅重新啟動(dòng)samba及winbind服務(wù)來(lái)達(dá)到同樣的目的(呵呵……這得看運(yùn)氣!):
[root@proxy ~]# service winbind restart
[root@proxy ~]# service smb restart
重啟系統(tǒng)或以上服務(wù)之后,執(zhí)行以下命令:
[root@proxy ~]# ntlm_auth –username=administrator
提示輸入用戶administrator的密碼,正確輸入密碼之后返回以下信息:
NT_STATUS_OK: NT_STATUS_OK (0x0)
當(dāng)返回的結(jié)果如上面所描述的話,則說(shuō)明域賬號(hào)administrator已經(jīng)通過(guò)了AD的認(rèn)證。可以開(kāi)始接下來(lái)的工作了。
VI. 配置NSS(Name Service Switch)NSS是Name Service Switch的縮寫(xiě),具體功能請(qǐng)參考維基百科中的解釋http://en.wikipedia.org/wiki/Name_Service_Switch,具體配置如下:passwd: files winbind
group: files winbind
其它部份無(wú)需改變。
VII. CentOS Squid的配置既然是做代理服務(wù)器,CentOS Squid的設(shè)置當(dāng)然是重中之重,下面,根據(jù)具體實(shí)現(xiàn)功能的不同,分別講述CentOS Squid的設(shè)置:
1.為CentOS Squid配置第三方身份驗(yàn)證程序
1#啟用CentOS Squid-2.5-ntlmssp做為ntlm驗(yàn)證模式的輔助協(xié)議
2auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
3auth_param ntlm children 5
4auth_param ntlm keep_alive on
5
6#啟用CentOS Squid-2.5-basic做為基本驗(yàn)證模式的輔助協(xié)議
7auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
8auth_param basic children 5
9auth_param basic realm Squid proxy-caching web server
10auth_param basic credentialsttl 2 hours
11auth_param basic casesensitive off
12
13#下面的這句參數(shù)是重點(diǎn),保證了CentOS Squid可以針對(duì)不同的用戶組進(jìn)行不同的訪問(wèn)控制策略
14external_acl_type NT_global_group %LOGIN /usr/lib/squid/wbinfo_group.pl
2.用戶訪問(wèn)控制列表的設(shè)置
1#將AD中的internet全局組映射到ProxyUsers
2acl ProxyUsers external NT_global_group internet
3#將AD中的nolimitedinternet全局組映射到noLimited
4acl NoLimited external NT_global_group nolimitedinternet
5#此句保證了所有用戶必須經(jīng)過(guò)身份驗(yàn)證
6acl AuthenticatedUsers proxy_auth REQUIRED
7#定義不允許下載的文件類型
8acl InvalidFiles urlpath_regex -i \.mp3$ \.avi$ \.rmvb$ \.mpg$ \.rm$ \.wma$ \.wmv$ \.scr$ \.exe$ \.ocx$ \.dll$ \.com$
9#定義不允許訪問(wèn)的域名及IP地址,其存放于文件“denyDomain.list”與“denyIP.list”中
10acl denyDomain dstdomain "/etc/squid/denyDomain.list"
11acl denyIP dst "/etc/squid/denyIP.list"
12
13#允許NoLimited用戶訪問(wèn)任意Internet資源
14http_access allow AuthenticatedUsers NoLimited
15http_access deny denyDomain
16http_access deny denyIP
17http_access deny InvalidFiles
18
19#禁止用戶訪問(wèn)denyDomain.list以及denyIP.list中的域名及IP地址,并禁止下載InvalidFiles指定的文件類型
20http_access allow AuthenticatedUsers ProxyUsers
21acl all src 0.0.0.0/0.0.0.0
22acl manager proto cache_object
23acl localhost src 127.0.0.1/255.255.255.255
24acl to_localhost dst 127.0.0.0/8
25acl SSL_ports port 443
26acl Safe_ports port 80# http
27acl Safe_ports port 21# ftp
28acl Safe_ports port 443 # https
29acl Safe_ports port 70# gopher
30acl Safe_ports port 210 # wais
31acl Safe_ports port 1025-65535 # unregistered ports
32acl Safe_ports port 280 # http-mgmt
33acl Safe_ports port 488 # gss-http
34acl Safe_ports port 591 # filemaker
35acl Safe_ports port 777 # multiling http
36acl CONNECT method CONNECT
請(qǐng)注意此配置中的兩條語(yǔ)句的位置。第一條“http_access allow AuthenticatedUsers NoLimited”,第二條“http_access allow AuthenticatedUsers ProxyUsers”,此兩條語(yǔ)句都是將權(quán)限應(yīng)用到用戶組,但不同的是位置,在CentOS Squid的ACL配置語(yǔ)句中,先后順序決定了其權(quán)限的不同。大家一定要多注意,細(xì)細(xì)去揣摩。
VIII. 更改winbind管道的權(quán)限
一定不能忘記這一點(diǎn),沒(méi)有winbind管道的足夠的權(quán)限,系統(tǒng)是沒(méi)辦法對(duì)用戶的身份進(jìn)行驗(yàn)證的。其命令如下:
[root@proxy ~]# chown –R root:squid /var/cache/samba/winbindd_privileged
[root@proxy ~]# chmod –R 750 /var/cache/samba/winbindd_privileged
IX. 重啟所有相關(guān)服務(wù)
命令如下:
[root@proxy ~]# service smb restart
[root@proxy ~]# service winbind restart
[root@proxy ~]# service squid restart
到此為止,我們已經(jīng)成功地完成了CentOS Squid代理服務(wù)器的配置。接下來(lái),我們還需要給予IT管理員查看并監(jiān)督用戶訪問(wèn)Internet行為的能力。
X. Sarg的安裝與配置
為了簡(jiǎn)單起見(jiàn),我們直接下載二進(jìn)制的安裝包,執(zhí)行下列命令獲得二進(jìn)制安裝包:
[root@proxy ~]# wget http://dag.wieers.com/rpm/packages/sarg/sarg-2.2.1-1.el5.rf.i386.rpm
安裝當(dāng)然更簡(jiǎn)單了啦,沒(méi)什么好說(shuō)的,執(zhí)行下列命令即可:
[root@proxy ~]# rpm –Uvh sarg-2.2.1-1.el5.rf.i386.rpm
安裝完后,重新啟動(dòng)一下Apache服務(wù)器當(dāng)然是再好不過(guò)了。
【編輯推薦】