Chinaunix首页 | 论坛 | 博客
  • 博客访问: 345969
  • 博文数量: 79
  • 博客积分: 3053
  • 博客等级: 中校
  • 技术积分: 861
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-27 20:43
文章分类

全部博文(79)

文章存档

2012年(3)

2011年(21)

2010年(15)

2009年(40)

分类: WINDOWS

2009-07-21 13:00:48

在你的局域网内实现用IPsec保护网络通信后,尽管你每一步都是认真按照技术文档来进行的,你还是不确信自己在网络上的通信没有被监听。怎样才能确定IPsec已经真正将你的电脑的网络通信信息加密了呢? 

  让我们来看看怎样确定一切运转正常,然后-你应当在进程中发现问题-查看检修IPsec的大图-相关的认证问题。在进程中,我会指出一些Windows Server 2003中内置的工具。当你确实发现网络通信信息没有被加密的时候,可以用这些工具来诊断出IPsec出现的问题。(但是注意,文中我讲到的技术并不适用于一些特殊的IPsec设备,比如IPsec卡以及基于IPsec的VPN。)

  1.检查IPsec是否在工作

  即使你已经成功地配置了IPsec,它也可能出现很多错误。当Windows XP或者Windows Server 2003连不上网的时候,你可以确定是出了什么问题。不幸的是,没有什么类似的情况可以让你知道IPsec的状态。根据IPsec的配置,出问题的时候,你或者会连不上网或者是-这种情况更普遍也更不容易察觉-网络可以照常使用,但是信息没有加密。当你确信你的网络通信信息已经被加密时,却发现它完全处在不安全的状态,想象一下,这将多么令人震惊。

  检查IPsec是否在工作的最快方法就是用网络监视器捕捉到达以及发出计算机的数据包,检查它们是否有被加密。Windows 2003自带网络监视器,你可以打开控制面板的添加/删除程序来安装它以及访问windows组件。安装网络监视器之后,选择捕捉菜单中的“开始”来开始捕捉数据包。然后,执行一些普通的操作,比如浏览另一台电脑上的共享文件夹等,通过类似操作来生成网络活动并产生数据。最后,选择捕捉菜单中的“停止”和“查看”。在协议栏你可以看到很多协议。右边是计算机使用IPsec情况下的捕获情况。可以看到,列表中只有一项协议:压缩安全负载(ESP)。当windows 2003 计算机使用默认IPsec政策时,载数据包捕获过程中只会出现ESP和互联网控制信息协议(ICMP)。ICMP会出现是因为默认IPsec策略允许ICMP 通信。因此,如果捕捉数据包的时候看到很多协议,你就有理由断定IPsec没有正常起作用。

  几乎所有的IPsec问题都是因为在互联网密钥交换(IKE)认证阶段出现了认证问题而引起的。当两台计算机试图建立安全连接(SA)的时候,他们通过特定的过程来授予对方身份识别凭证。IKE是协商SA形式的算法。身份识别认证可以是事先共享的密钥,数字证书或者Kerbero安全认证。Windows 2003默认的IPsec策略使用Kerberos安全认证。绝大多数情况下,检修IPsec故障就意味着检修认证的进程。

  2.重新启动IPsec服务

  一旦你确定IPsec没有工作,你应当首先重新启动IPsec服务。这将完全清零IKE协商的状态。IPsec在策略有重大更改后不起作用的这种情况下,该措施通常都能够恢复IPsec的功能。该方案有两个优点:一是不需要重启服务器,另一个是用很短的时间就可以实现。通过执行如下Net命令,你可以在Windows 2003计算机上立刻重启IPsec服务。

  net stop policyagent

  net start policyagent

  现在,再次执行捕捉数据包的程序,或者运行我下文要讲到的Netsh命令测试。

  3.在时间日志中诊断IKE问题

  如果重启IPsec服务不能解决故障,你可以继续检查安全时间日志。网络登录日志监听各个SA的建立和删除。如果你启用了监听登录事件策略的成功失败监听,这些事件就会被记录在日志中。一切运转正常的时候,成功代码显示为541,542和543。然而,我们讨论的是IPsec不工作的时候该怎么办,所以我们要找失败代码,表1中显示了各个失败代码。图2显示的是失败事件547。

  SA事件记录有一个问题是这些事件很快会填满你的日志。如果你只是要监听登录事件而不想让安全事件填满IKE条目的话,你可以创建 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Audit\DisableIKE Audits subkey然后把它的值设为1来停止IKE监听。

  4.使用共享密钥认证

  由于它是依靠共享字符串而不是诸如Kerberos或者证书那样更复杂的方法,共享密钥认证方法能够很有效的使IPsec工作起来。当然,如果你已经使用共享密钥,但还是出现故障的话,你应该核实一下每台计算机上事先共享的密钥是否匹配。如果你的事先共享密钥有错误,IPsec是不会工作的。

  如果用共享密钥认证方法可以使IPsec工作,你就会知道该检查Kerberos或者证书认证机制了。在默认的IPsec策略中,从共享密钥认证方式切换到Kerberos安全认证方式需要执行以下几个步骤:

  1.关闭所有的IPsec可能应用到的Active Directory(AD)服务

  2.点击“开始”,“运行”,然后输入gpedit.msc来开始编辑本地策略。

  3.进入路径 计算机配置\系统设置\安全设置\IP安全策略的组策略对象编辑节点。

  4.右键点击导致故障的策略然后选择”属性“

  5.在规则标签中,选择过滤列表中“所有IP通信”,并点击“编辑”。

  6.在“编辑规则属性”对话框中,选择“认证方法”标签然后单击“添加”来添加新的认证方法。

  7.选择“使用该字符串发报”按钮并输入一个事先共享的密钥。然后单击“确定”。

  8.使用“认证方法”标签中的“上移”按钮来把事先共享密钥移到列表顶端。

  这些说明是假设你没怎么定制IPsec策略的。总的来说,你应当总是创建新的策略而不要编辑已经存在的策略。但是,在当前这种情况下,你只是添加一种认证方法,解决故障之后,可以将它降级。变换到共享密钥认证方法会显著的简化认证过程,所以它很有可能使IPsec对你的网络起作用


5.确定哪种IPsec策略是有效的

  IPsec不工作很有可能是因为网络上的计算机被指定了互补兼容的策略。例如,一个策略可能试图使用证书认证,然而其他策略则只接受共享密钥认证。有两种方法来确定当前主导的是哪种IPsec策略。第一种方法是用IP安全监听器。如图3所示,内置的微软管理平台(MMC)IP安全监听器替代了Windows2000的Ipsecmon.exe功能。它能确定当前计算机上哪种策略是起作用的。

  第二种方法是运行Netsh命令 netsh ipsec dynamic show all more 从命令行得到相同的信息。该命令将所有的IPsec信息放到剪切板上。你可以把该信息粘贴到文本文档中,如图4所示。在文本中,可以看到一个策略应用到了本地级别(例如,客户端:只响应)以及通过AD应用(例如,服务器:安全请求)。一旦你得到了这些信息,你就可以很快发现IPsec不工作的原因是:或者计算机没有指定策略,或者指定了不兼容的策略。解决策略不兼容问题之后,IPsec可能就正常工作了。

  6.检查Kerberos认证的问题

  Kerberos认证依靠AD。如果产生了Kerberos问题,很可能跟计算机帐户的问题有关。你可能需要重置计算机帐户的密码或者重启计算机帐户。如果继续有故障,可能就需要将Kerberos网络通信与域控制器(DC)上的IPsec隔离。运行命令 netsh ipsec dynamic set config ipsecexempt value=0Win2000容许Kerberos认证通信,但是Windows2003不容许。该Netsh命令强制Windows2003如Win2000一样操作。

  7.检查证书认证的问题

  如果基于证书的认证系统有问题,很大可能是如下三种情况之一:没有安装证书,证书过期,或者证书撤销列表(CRL)不完整。默认的IPsec证书有效期是2年,这对大多数忘了该有效期的组织来说都足够长了。不像一些证书模板,默认情况下,IPsec证书模板没有设置成自动注册模式。

  确定证书认证到底是上述哪种问题的最简便方法就是打开本地计算机的证书存储器。你也可以使用内置MMC证书工具来请求一个新的IPsec证书。当你创建了内置MMC证书来检查已安装的IPsec证书的过期数据时,需要确认你选择了“计算机帐户”选项,如图5所示。如果选择的是“我的用户帐户”或者“服务器帐户”选项的话,你就无法在定位到该找的IPsec 证书。

  从长远角度来看,最好的解决方法是创建一个支持自动注册(仅限于Windows2003 企业版)的新的IPsec模板。这样,IPsec证书就可以自动更新,并且只要你选择了自动更新选项你就不需要记住IPsec证书有效期是2年了。

  证书正在使用时,IPsec检查CRL来确定证书是否已被废除。IPsec要花一定的时间来做这个检查,并且很有可能在得到结果之前,系统就被关闭了。可以运行 netsh ipsec dynamic set config strongcrlcheck 0 来取消CRL检查。

  8.检查是否所有人都使用客户端策略

  IPsec的新的管理员有时候对网络上的所有计算机都应用客户端(只响应)策略,然后纳闷为什么没有加密任何信息。对开始生效的IPsec来说,搭档中的一个需要请求使用IPsec的策略。如果所有的主机都指定的是客户端(只响应)策略,那么没有主机会请求使用IPsec。要解决该问题,可以在计算机上激活各种服务器策略中的一个,然后运行GPU更新。

  9.检查IKE日志

  如果所有的前述措施都没有解决IKE问题,你就不得不按照更详细的步骤来决定方案。这种情况下,你需要有互联网安全连接和密钥管理协议RFC 2408和IKE RFC 2409(ISAKMP)方面的更进一步的知识。运行 netsh ipsec dynamic set config ikelogging 1来开始追踪IKE的协商。可以将ikelogging的值增加至7(记录所有可能的数据)来增加记录下来的信息量。IKE跟踪日志位于\%systemroot%\Debug\Oakley.log,可以用文本编辑器来查看。需要注意的是,记录文档的内容很密集,刚接触IPsec的人很可能很快就受不了了。

  慎用自定义

  Windows2003带的IPsec策略是可以直接使用的。只有你自定义它们使用基于证书或者基于共享密钥的认证系统的时候,才会产生问题。如果需要修改IPsec的认证方法,你应该创建新策略而不是对已存在的策略进行修改。只要遵从这个建议,在调查各种突然出现的问题时,都能够迅速切换到起作用的配置上。

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