Chinaunix首页 | 论坛 | 博客
  • 博客访问: 84016
  • 博文数量: 15
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-07 13:51
文章分类

全部博文(15)

文章存档

2007年(2)

2006年(13)

我的朋友

分类:

2006-07-07 14:26:03

WindowsIIS中有项配置使用集成的Windows验证,在AD的环境中我们可以通过启用集成的Windows验证来使用用户登陆Windows系统的帐号进行认证,在用户访问网页时,IE会将用户的帐号凭据发往服务器自动做认证,不需要用户输入用户名和密码。最好的例子就是用户登陆Outlook Web AccessOWA)。当我们利用Squid做代理服务器需要利用用户身份做认证是,用户每次访问网页,系统会提示用户输入用户名和密码,这样给用户带来很多麻烦,有没有方法集成Windows的帐号做认证呢?通过查找资料,发现实际上在Linux等系统下,利用SQUID集成SAMB同样可以集成windows的认证,用户在通过访问代理服务器时自动利用登陆计算机的帐号做身份验证,对用户完全透明,不需要手动输入用户名及密码。下面是我进行Squid集成Windows帐号认证的总结,希望对有这方面需求的朋友有所帮助,其中有什么不正确及有更好的方法也希望各位给予指点,共同研究进步。
1 实现环境
FreeBSD 5.4 + Squid 2.5 + Samba 3.0 + Krb5
2 软件包安装
SquidSambaKrb5均通过Ports安装最新版本。
3 Kerberos配置
Win2003系统默认通过Kerberos做身份验证,Kerberos验证需要安装Krb5软件包。配置文件及测试都很简单。Krb5的配置文件为/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.COM
(验证域的realm,必须全部大写)
dns_lookup_realm = false
dns_lookup_kdb = false

[realms]
TEST.COM = {
kdc = 192.168.0.1:88  (
域控制器名,可以是IP地址)
default_domain = TEST.COM  
(缺省域名,同样必须全部大写)
}


配置完成后可以通过Kinit工具进行测试方法如下

代码:

root#  kinit
Password for


正确输入密码后系统返回

代码:

kinit: NOTICE: ticket renewable lifetime is 1 week


表示正确验证,如果返回有错误,检查krb5.conf文件设置。

4 Samba配置
通常samba配置文件在/usr/local/etc/smb.conf,编辑smb.conf文件如下
注意,安装Samba是选择Winbind组件

代码:

[global]
       log file = /var/log/samba/log.%m
       dns proxy = No
       idmap gid = 10000-20000
       server string = Samba Server
       idmap uid = 10000-20000
       password server = 192.168.0.1
       workgroup = TEST   (
域的NetBios)
       os level = 20
       encrypt passwords = yes
       security = ads  
(设置为AD验证)
       realm = TEST.COM
(验证域realm,必须大写)
       winbind use default domain = yes
       max log size = 50


 这里需要正确配置你的workgroupNetbios名、realm,password servers(域控制器,可以有多台)。一旦配置正确,你可以使用net ads join将你的Samba主机加入AD中。输入

代码:

root# net ads join –U


将主机加入AD
重新启动samba

代码:

/usr/local/etc/rc.d/samba.sh restart


同时winbind也将重新启动。
5 确认Samba主机帐号在AD中正确注册
使用wbinfo –t验证Samba主机已成功加入AD

代码:

root# wbinfo –t


系统返回

代码:

checking the trust secret via RPC calls succeeded


说明主机信任已成功建立
使用wbinfo –u 可以列出AD中注册的帐号信息。Wbinfo –g可以返回AD中的组信息。
6 测试ntlm_auth验证

代码:

root# ntlm_auth –username=administrator
Password:**************
NT_STATUS_OK: NT_STATUS_OK (0x0)


说明域帐号administrator已成功验证
7 配制NSS
NssName Service Switch,控制帐号的验证。编辑/etc/nsswitch.conf,如下

代码:

passwd: files winbind
group: files winbind

8 配置Squid
squid.conf文件中增加

代码:

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
   
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
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


配置Squid使用ntlm_auth验证,并允许验证用户通过代理服务器访问。
这里要注意一点,用户要通过验证squid必须能访问winbind pipe,否则用户不能通过Squid验证,我刚配置完成时就是因为这里总是不能通过squid身份验证。修改winbind pipe权限

代码:

root# chown -R root:squid /var/db/samba/winbindd_privileged
root#chmod -R 750 /var/db/samba/winbindd_privileged


9 重新启动squid服务器,验证使用域用户身份验证。
如果使用域帐号登陆计算机,那么浏览网页时就不会提示输入用户名及密码认证,非域用户登陆计算机,通过代理访问网站时,IE将弹出用户身份验证窗口要求用户输入用户名及密码验证。
squid.conf中同样可以设置允许访问的域用户,及不允许访问的域用户。对于windows域用户来说,说有的验证都是透明的。不需要手动输入用户名及密码,方便用户的使用。

阅读(2905) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~