安全 : Cisco NAC Appliance (Clean Access)

NAC ADSSO 无法工作在Microsoft 2008服务器版本

2010 年 12 月 14 日 - 原创文档
其他版本: PDFpdf | 反馈

目录

技术领域
问题描述
ADSSO认证流程
故障排除思路
故障诊断步骤
总结

技术领域

NAC, Single Sign On, Kerbose, ActiveDomain

问题描述

当客户将自己的域Server从Win2003升级到Win2008后,发现所有部署NAC的用户无法登录Windows域。

ADSSO认证流程

阶段1:

  1. 在AD server 上使用KTpass命令创建CAS的认证账户
  2. CAS 首先发起一个认证请求用于开启ADSSO服务
  3. AD server 响应认证请求,成功建立

阶段2:

  1. CAS 通过SSO服务协助用户获得SSO服务通行凭证
  2. CAS 发送通行凭证给用户
  3. CAS 执行SSO认证放行用户

故障排除思路

因为这是一个 ADSSO 认证不能通过的问题,我们首先讲解了一下 ADSSO 认证过程,大家也很清楚的明白了认证的详细步骤,通过上述的认证过程进行排错思路将会很清晰。我们这里采用自下而上的步骤开始排错。

故障诊断步骤

  1. 检测Agent 和 CAS 是否可达

通过Ping 操作或抓包进行检测,如果正常跳到下一步继续排错,如果不正常检测链路层面。

  1. 检测CAM 和 CAS 是否通讯正常

通过HTTPS 登录CAM 查看是否CAS 已经连接,也可以使用Ping 操作或抓包进行检测,,如果正常跳到下一步继续排错。如果不正常检测链路层面。

  1. 检测 CAS ADSSO 服务是否启动

通过HTTPS 登录CAM 进行查看,下图是ADSSO 正常其他,如果显示Stop 我们将进入下一步继续排错。

  1. 检查KTpass 版本 和 AD server 补丁包 ,由于win2008和win2003配置方式不同,请重新配置KTpass 命令,语法和版本对应表见下:

Windows AD Server and KTPass Version Compatibility

Windows AD Server Version

KTPass Version

Windows Server 2008 SP2 1 ,2

6.0.6002.18005

Windows Server 2008 R2 2 6.1.7600.16385

Windows Server 2003

5.2.3790.1830

For Windows Server 2008:

KTPASS.EXE -princ newadsso/[adserver.]domain.com@DOMAIN.COM -mapuser newadsso -pass
PasswordText -out c:\newadsso.keytab -ptype KRB5_NT_PRINCIPAL -crypto All

For Windows Server 2003:

KTPASS.EXE -princ newadsso/[adserver.]domain.com@DOMAIN.COM -mapuser newadsso -pass
PasswordText -out c:\newadsso.keytab -ptype KRB5_NT_PRINCIPAL

如果KTpass 重新执行后ADSSO 依然无法正常运行。请跳到下一步继续排错。

  1. AD server 以太网接口进行抓包确认 Kerbose 认证是否正常,Kerbose协议在包传输过程中会把非正常行为和认证失败原因保存在包头中。抓包后发现下面的错误代码:
Error cord : KERB5KDC_ERR_C_PRINICPAL_UNKNOWN"

此错误由于下面的三个主要原因引起:

  • 麻省理工学院 (MIT) Kerberos 客户端执行针对基于 Windows Server 2008 的域控制器的 Kerberos 身份验证。
  • 若要创建 keytab 文件要使用 MIT Kerberos 客户机上使用 KTPass。
  • 客户端请求票证授予票证 (TGT) 指定为客户端名称 KRB_AS_REQ 数据包中的主机的主体名称。

详见微软文档:

http://support.microsoft.com/kb/951191
  1. 解决此问题办法不能通过正常安装补丁解决。需要严格执行下面的步骤解决:
  1. 下载HotFIX 951191<\\hotfix> , 解压缩放入 c:\temp 文件夹中
  2. 打开写字板程序, 复制下面的命令到写字板中。存储文件名为INSTALL.CMD 放入C:\temp 文件夹中。
c:
cd\temp
md msu_expand
expand -f:* c:\ temp \******.msu(the msu name) msu_expand
pkgmgr /ip /m:c:\ temp \msu_expand\*****.cab(the cab name)
echo %errorlevel% (to check the error code, it should be "0")
pause
  1. 右键点击INSTALL.CMD 程序,选择作为管理员运行此程序
  2. 我们可以通过控制面板和CBS 日志文件 c:\windows\logs\cbs\ 查看是否正确安装
  1. 执行完上述步骤成功解决问题

总结

对于安全的产品,大家要建立一个七层的排错思路,不论是自上而下的应用层到物理层,还是自下而上的物理层到应用层都是可以的。但需要把握的重点是详细了解认证的建立过程和应用的行为细节。