CentOS Squid操作系统重新规划并部署

系统 Linux
因CentOS Squid配置的问题,系统无法自动释放CentOS Squid的Cache及日志所占用磁盘空间,经常会因为磁盘空间不足而导致CentOS Squid停止服务,需要人为的去删除cache及日志以释放磁盘空间。

在向大家详细介绍CentOS Squid之前,首先让大家了解下CentOS Squid,然后全面介绍CentOS Squid,希望对大家有用。Linux下实现针对Windows域身份认证的代理服务器 口水熊工作的公司使用的代理服务器是基于Linux系统的,经常会出现一些或多或少的问题。直接影响到用户正常的Internet访问。

因为是以前的同事做的,再加上,本人一直忙于其它的项目,没时间去调整,优化。前不久,Linux系统突然无法进入GNU/GNOME桌面环境,促使我下定决心重新规划并部署一台符合当前应用环境需要的代理服务器系统来。

在部署之前,我们先来看看现有的代理服务器的系统环境:该代理服务器采用的是基于Redhat Linux 8.x操作系统的以NCSAR为认证模式的CentOS Squid 2.3 代理服务器。因系统比较陈旧,稳定性有所欠缺,同时还存在以下不足之处:

1. 因CentOS Squid配置的问题,系统无法自动释放CentOS Squid的Cache及日志所占用磁盘空间,经常会因为磁盘空间不足而导致CentOS Squid停止服务,需要人为的去删除cache及日志以释放磁盘空间。

2. 需要在代理服务器上,为不同的用户设置不同的密码,以前公司职员并不多,倒不是很麻烦,但,随着公司的发展,职员的数量大幅增加,加重了IT管理人员的工作负担,同时,也非常难以保证与Windows域账户的一致知性;

3. 客户端不能使用AD集成的账户认证模式,用户每次访问Internet都需要重复的输入用户名及密码,大大降低了用户使用感受。

4. 没有实现针对不同Internet访问群体,设置不同的用户权限;

5. 无法监督用户访问Internet的行为,直接影响到公司网络的正常商业行为。

据此,我们不难发现,此代理服务器需要经常对其进行维护,非常影响IT工作人员的工作效率。从公司现阶段的实际情况出发,对代理服务器的功能重新规划如下:

1. 能够在一点条件下,自动回收被CentOS Squid占用的磁盘空间;

2. 利用AD服务器上的用户账号信息对用户的身份进行验证,避免重复的设置用户信息;

3. 提供三种用户权限:

1. 拒绝所有权限;

2. 允许访问Internet,但不允许下载视频、音频、可执行文件等;

3. 不受限,可访问任意Internet资源;

4. IT管理人员可以查看用户访问Internet的日志,监督用户访问Internet的行为;

既然我们的目标已经非常明确了,我们就不再废话,开始主题吧!

I.系统环境:

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身份验证服务的配置文件(非特殊说明,均工作在root用户模式下):

执行下列命令:[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    #默认的域名(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(密钥分配中心)服务器的名称或IP地址,一般都在AD服务器上
16 admin_server = adsrv.company.com:749#此处指定管理服务器的名称或IP地址
17 default_domain = company.com   #默认的域名(domain)
18 }
19
20[domain_realm]    #domain与realm的对应关系
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工具测试krb5的设置是否正确

执行下列命令:[root@proxy ~]# kinit administrator@COMPANY.COM提示输入用户administrator的密码,正确输入密码之后返回以下信息:kinit: NOTICE: ticket renewable lifetime is 1 week

或直接返回到命令行状态,其它提示信息均可能是出错信息。请务必确认您的Linux系统与Windows域服务器的时间及时区设置一致,否则将无法正常与活动目录服务器正常通信。

IV. Samba配置因为我们此处并不涉及到真正的samba服务器的配置,所以并没有将整个的配置内容放在这里,而仅仅只放了架设CentOS Squid代理服务器所需要的部分,如下所示:
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   #设置为Windows活动目录安全-ADS验证
 9realm = COMPANY.COM   #验证域realm,必须大写
10winbind use default domain = yes
以上列出来的项目均需要根据实际情况改动。

V.通过ntlm验证程序来测试之前所做的配置是否正确在做测试之前,如必要时,请重新启动Linux服务器。不过,你也可以尝试仅重新启动samba及winbind服务来达到同样的目的(呵呵……这得看运气!):
[root@proxy ~]# service winbind restart
[root@proxy ~]# service smb restart
重启系统或以上服务之后,执行以下命令:

[root@proxy ~]# ntlm_auth –username=administrator
提示输入用户administrator的密码,正确输入密码之后返回以下信息:

NT_STATUS_OK: NT_STATUS_OK (0x0)
当返回的结果如上面所描述的话,则说明域账号administrator已经通过了AD的认证。可以开始接下来的工作了。

VI. 配置NSS(Name Service Switch)NSS是Name Service Switch的缩写,具体功能请参考维基百科中的解释http://en.wikipedia.org/wiki/Name_Service_Switch,具体配置如下:passwd: files winbind
group: files winbind
其它部份无需改变。

VII. CentOS Squid的配置既然是做代理服务器,CentOS Squid的设置当然是重中之重,下面,根据具体实现功能的不同,分别讲述CentOS Squid的设置:

1.为CentOS Squid配置第三方身份验证程序
1#启用CentOS Squid-2.5-ntlmssp做为ntlm验证模式的辅助协议
 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做为基本验证模式的辅助协议
 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#下面的这句参数是重点,保证了CentOS Squid可以针对不同的用户组进行不同的访问控制策略
14external_acl_type NT_global_group %LOGIN /usr/lib/squid/wbinfo_group.pl
2.用户访问控制列表的设置


 1#将AD中的internet全局组映射到ProxyUsers
 2acl ProxyUsers external NT_global_group internet
 3#将AD中的nolimitedinternet全局组映射到noLimited
 4acl NoLimited external NT_global_group nolimitedinternet
 5#此句保证了所有用户必须经过身份验证
 6acl AuthenticatedUsers proxy_auth REQUIRED
 7#定义不允许下载的文件类型
 8acl InvalidFiles urlpath_regex -i \.mp3$ \.avi$ \.rmvb$ \.mpg$ \.rm$ \.wma$ \.wmv$ \.scr$ \.exe$ \.ocx$ \.dll$ \.com$
 9#定义不允许访问的域名及IP地址,其存放于文件“denyDomain.list”与“denyIP.list”中
10acl denyDomain dstdomain "/etc/squid/denyDomain.list"
11acl denyIP dst "/etc/squid/denyIP.list"
12
13#允许NoLimited用户访问任意Internet资源
14http_access allow AuthenticatedUsers NoLimited
15http_access deny denyDomain
16http_access deny denyIP
17http_access deny InvalidFiles
18
19#禁止用户访问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
请注意此配置中的两条语句的位置。第一条“http_access allow AuthenticatedUsers NoLimited”,第二条“http_access allow AuthenticatedUsers ProxyUsers”,此两条语句都是将权限应用到用户组,但不同的是位置,在CentOS Squid的ACL配置语句中,先后顺序决定了其权限的不同。大家一定要多注意,细细去揣摩。

VIII. 更改winbind管道的权限

一定不能忘记这一点,没有winbind管道的足够的权限,系统是没办法对用户的身份进行验证的。其命令如下:

[root@proxy ~]# chown –R root:squid /var/cache/samba/winbindd_privileged
[root@proxy ~]# chmod –R 750 /var/cache/samba/winbindd_privileged
IX.   重启所有相关服务

命令如下:

[root@proxy ~]# service smb restart
[root@proxy ~]# service winbind restart
[root@proxy ~]# service squid restart
到此为止,我们已经成功地完成了CentOS Squid代理服务器的配置。接下来,我们还需要给予IT管理员查看并监督用户访问Internet行为的能力。

X.  Sarg的安装与配置

为了简单起见,我们直接下载二进制的安装包,执行下列命令获得二进制安装包:

[root@proxy ~]# wget http://dag.wieers.com/rpm/packages/sarg/sarg-2.2.1-1.el5.rf.i386.rpm
安装当然更简单了啦,没什么好说的,执行下列命令即可:

[root@proxy ~]# rpm –Uvh sarg-2.2.1-1.el5.rf.i386.rpm
安装完后,重新启动一下Apache服务器当然是再好不过了。

【编辑推荐】

  1. CentOS LEMP系统安装编译安装基本环境
  2. CentOS vsftpd安装FTP服务器安装jdk1.5
  3. CentOS DDNS是Linux中动态使用方法直接回车
  4. CentOS Oracle虚拟机使用真正应用集群
  5. CentOS Data Guard数据库更改字符集备库需要单独操作
责任编辑:佚名 来源: csdn
相关推荐

2009-09-02 15:04:49

2010-01-14 17:44:17

CentOS vsft

2010-04-01 15:58:55

CentOS操作系统

2010-03-30 17:28:10

CentOS操作系统

2021-03-24 20:08:23

Unix诺基亚操作系统

2009-12-09 17:25:19

Linux操作系统

2010-03-30 14:17:30

CentOS操作系统

2011-08-23 16:18:18

CentOS

2019-08-27 09:05:12

操作系统JavaWindows

2010-04-07 10:42:41

Unix操作系统

2014-01-09 14:01:20

开源CentOS红帽

2021-12-07 11:10:29

CentOSCentOS StreLinux

2010-04-15 14:40:26

Unix操作系统

2021-11-15 06:56:46

操作系统U盘

2010-01-14 16:35:42

CentOS 操作系统

2022-07-01 08:03:19

OracleLinux系统

2011-04-13 17:31:33

2010-04-29 14:08:38

Unix操作系统

2021-04-19 11:23:29

操作系统计算机DOS

2014-08-06 00:38:12

CentOS服务器操作系统
点赞
收藏

51CTO技术栈公众号