当前位置: > Linux服务器 > 服务器设置 >

配置squid集成域身份认证

时间:2014-10-30 18:00来源:linux.it.net.cn 作者:it

终于有时间测试一下squid的域身份认证了,之前一直使用iptables来通过IP地址做的代理访问权限控制,而使用哪种方法是根据各个公司内部的具体需求来决定的。

首先明确一下需求,配置squid使它能支持域用户认证,如果可能的话,使用集成windows身份认证,这样域用户登录计算机后,不需要输入密码就可以使用,做到用户端透明,除非用户未使用域用户登录才会弹出需要输入帐户密码。

先放狗搜了一圈,大致确定了方向,使用samba和krb5做帐户认证,用squid来调用即可。

1、本文使用CentOS5.6系统,先安装需要的软件

1

					
yum install squid samba ntp

安装ntp是为了同步时间用的,如果squid的时间和域控制器时间相差太多,在以下配置中会出错。

同步时间的命令

1

					
ntpdate clock.redhat.com

2、修改hosts文件,把计算机名以及计算机全名设置好,本例域为test.local

1
2

					
vi /etc/hosts
127.0.0.1       squid squid.test.local localhost
3、修改dns,使用域控制器的DNS

 

1
2

					
vi /etc/resolv.conf
nameserver 192.168.1.100

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

					
[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
 }

修改完毕可以使用以下名来验证,输入正确的密码就不报错(就是啥显示也没有),输入错误的就会报错

1

					
net ads join -U administrator@TEST.LOCAL

注意,这里的TEST.LOCAL也必须要全部大写,否则也会报错。

5、修改samba配置文件,以下只贴出来有变化或没有的

1
2
3
4
5
6
7
8
9
10
11

					
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、加入域

1

					
net ads join -U administrator@TEST.LOCAL

然后输入密码就可以了,检测是否成功加入域的方法

1
2
3
4

					
wbinfo -t   #测试域连接
wbinfo -u   #列出所有用户
wbinfo -g   #列出所有组
tlm_auth --username=administrator   #测试ntlm_auth验证密码

7、配置NSS,在/etc/nsswitch.conf找到以下两行,在后面添加winbind即可

1
2

					
passwd:     files winbind
group:      files winbind

8、修改squid配置文件,因为要做组验证,还需要在域控制器上添加一个名为internet的组,并添加好相应人员

1
2
3
4
5
6
7
8

					
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配置文件无错,还需要增加以下几行

1
2

					
cache_mgr admin@penglei.name
visible_hostname squid.test.local

然后把squid服务重启一下就完成了,最后别忘了把squid、smb、winbind这几个服务设置成自动运行。

(责任编辑:IT)
------分隔线----------------------------