smb域验证
实例使用NTLM 验证整合Squid 及Samba3实现AD 域用户认证08-04-10 10:45 发表于:《蓝色航标》 分类:未分类实例使用NTLM 验证整合Squid 及Samba3实现AD
实例使用NTLM 验证整合Squid 及Samba3实现AD 域用户认证
08-04-10 10:45 发表于:《蓝色航标》 分类:未分类
实例使用NTLM 验证整合Squid 及Samba3实现AD 域用户认证
Windows 的IIS 中有项配置使用集成的Windows 验证,在AD 的环境中我们可以通过启用集成的Windows 验证来使用用户登陆Windows 系统的帐号进行认证,在用户访问网页时,IE 会将用户的帐号凭据发往服务器自动做认证,不需要用户输入用户名和密码。最好的例子就是用户登陆 Outlook Web Access(OWA )。当我们利用Squid 做代理服务器需要利用用户身份做认证是,用户每次访问网页,系统会提示用户输入用户名和密码,这样给用户带来很多麻烦,有没有方法集成Windows 的帐号做认证呢?通过查找资料,发现实际上在Linux 等系统下,利用SQUID 集成SAMB 同样可以集成 windows的认证,用户在通过访问代理服务器时自动利用登陆计算机的帐号做身份验证,对用户完全透明,不需要手动输入用户名及密码。下面是我进行 Squid集成Windows 帐号认证的总结,希望对有这方面需求的朋友有所帮助,其中有什么不正确及有更好的方法也希望各位给予指点,共同研究进步。
1. 实现环境
Fedora 7 Squid 2.6 Samba 3.0 Krb5
2. 软件包安装
Squid 、Samba 及Krb5均通过yum 安装最新版本。
3. Kerberos配置
Win2003系统默认通过Kerberos 做身份验证,Kerberos 验证需要安装Krb5软件包。配置文件及测试都很简单。Krb5的配置文件为
/etc/krb5.conf,配置如下
CODE:
,[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 (缺省域名,同样必须全部大写) }
[domain_realm]
.test.com = TEST.COM
test.com = TEST.COM
配置完成后可以通过Kinit 工具进行测试方法如下
CODE:
root# kinit administrator@TEST.COM
Password for administrator@TEST.COM
正确输入密码后系统返回
CODE:
kinit: NOTICE: ticket renewable lifetime is 1 week
表示正确验证,如果返回有错误,检查krb5.conf 文件设置。
,4. Samba配置
通常samba 配置文件在/etc/samba/smb.conf,编辑smb.conf 文件如下 注意,安装Samba 带有Winbind 组件
CODE:
[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
这里需要正确配置你的workgroup 、Netbios 名、realm,password
servers(域控制器,可以有多台) 。一旦配置正确,你可以使用net ads join 将你的Samba 主机加入AD 中。输入
CODE:
root# net ads join –U administrator@TEST.COM 或 net rpc join -S win2k3.test.com -U administrator
将主机加入AD 。
重新启动samba
CODE:
,service smb restart
同时winbind 也要重新启动。
service winbind restart
5. 确认Samba 主机帐号在AD 中正确注册
使用wbinfo –t 验证Samba 主机已成功加入AD
CODE:
root# wbinfo –t
系统返回
CODE:
checking the trust secret via RPC calls succeeded
说明主机信任已成功建立
使用wbinfo –u 可以列出AD 中注册的帐号信息。Wbinfo –g 可以返回AD 中的组信息。
6. 测试ntlm_auth验证
CODE:
root# ntlm_auth --username=administrator
Password:**************
NT_STATUS_OK: NT_STATUS_OK (0x0)
说明域帐号administrator 已成功验证
7. 配制NSS
Nss 为Name Service Switch ,控制帐号的验证。编辑/etc/nsswitch.conf,如下
CODE:
passwd: files winbind
group: files winbind
8. 配置Squid
在squid.conf 文件中增加
,CODE:
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 //这二行在squid
2.6中不能识别,不知道何原因,所以我实际上已经注释掉了 ^_^
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
配置Squid 使用ntlm_auth验证,并允许验证用户通过代理服务器访问。 这里要注意一点,用户要通过验证squid 必须能访问winbind pipe,否则用户不能通过Squid 验证, 我刚配置完成时就是因为这里总是不能通过squid 身份验证。修改winbind pipe权限
CODE:
root# chown -R root:squid /var/cache/samba/winbindd_privileged root#chmod -R 750 /var/cache/samba/winbindd_privileged
9. 重新启动服务器,验证使用域用户身份验证。
如果使用域帐号登陆计算机,那么浏览网页时就不会提示输入用户名及密码认证,非域用户登陆计算机,通过代理访问网站时,IE 将弹出用户身
,份验证窗口要求用户输入用户名及密码验证。
在squid.conf 中同样可以设置允许访问的域用户,及不允许访问的域用户。对于windows 域用户来说,说有的验证都是透明的。不需要手动输入用户名及密码,方便用户的使用。
======================================
附:
ADS 模式还是以RPC 模式
Configuring Samba 3.0 To Use The ADS Security Mode (CentOS) http://www.howtoforge.com/samba_ads_security_mode
官方英文文档: http://us3.samba.org/samba/docs/man/Samba-HOWTO-Collection/domain-member.html#ads-member