186 0440 4087

IPSec原理与实践

随着越来越多的企业、单位接入Internet和接入速度的不断提高,网络安全正日益成为网络管理的一个重要课题。作为广泛部署的Windows(NT)Server系统自身的安全受到越来越多的关注。市场上也出现了很多软、硬件防火墙产品来保证内网服务器的安全。其实,Windows(NT)Server系统自身便带有功能强大的防火墙系统-IPSec,其全面的安全保护功能并不输于其它商业防火墙产品。本文将介绍基于Windows操作系统的防火墙系统-IPSec的原理与实现。
  
  1 TCP/IP过滤
  
  在深入探讨IPSec之前,我们首先来看一下Windows系统的TCP/IP过滤功能。
  
  Windows 2000 Server系统内部集成了很多安全特性,这包括"本地安全及审核策略"、"加密文件系统"、"TCP/IP过滤"、"IP安全(IPSec)"等等。其中的"TCP/IP过滤"为用户提供了一个简单、易于配置、易于使用的网络安全保障工具。它是用于入站本地主机TCP/IP通讯的一组筛选器。使用TCP/IP筛选可以为每个IP接口严格指定所处理的传入TCP/IP通讯类型。这个功能设计用于隔离Internet或Intranet服务器所处理的通信。
  

 


  如图1所示,使用"TCP/IP"筛选,可以根据以下三种方式来限制本地主机的入站TCP/IP通讯:
  
  ●目标TCP端口
  
  ●目标UDP端口
  
  ●IP协议(号)
  
  "TCP/IP筛选"的使用有很多限制,如不能根据源地址来区别对待数据包的入站、不能对出站通信进行筛选、不能对已允许的通信进行加密等等。如果想要实现更加灵活、安全的设计,则必须使用IPSec。
  
  2 IPSec原理
  
  使用internet协议安全(Internet Protocol Security,IPSec)是解决网络安全问题的长久之计。它能针对那些来自专用网络和internet的攻击提供重要的防线,并在网络安全性与便用性之间取得平衡。IPSec是一种加密的标准,它允许在差别很大的设备之间进行安全通信。利用IPSec不仅可以构建基于操作系统的防火墙,实现一般防火墙的功能。它还可以为许可通信的两个端点建立加密的、可靠的数据通道。
  
  2.1 术语解释
  
  为了便于理解IPSec的工作原理,首先介绍一些数据加密和安全方面常用的一些术语和基本知识,然后再介绍IPSec的实现以及它如何在网络中提供安全通信的。这种介绍仅仅是一个概述并为后面讨论IPSec做一个铺垫。加密是一个复杂的领域,它包含了许多规则、算法以及数学方面的知识。这里我们将着重讨论加密技术的实际实现,对于它内在的理论只作一个简要的概述。
  
  2.1.1 数据加密标准
  
  数据加密标准(Data Encryption Standard,DES)是美国国家标准局于1977年开发的对称密钥算法。它是一种对称密钥算法,可以使用40~56位长的密钥。另一种称为3DES的加密策略也使用同样的DES算法,但它并不只是加密一次,而是先加密一次,再加密(解密)一次,最后做第三次加密,每一次加密都使用不同的密钥。这一过程显著地增加了解密数据的难度。
  
  2.1.2 RSA算法
  
  RSA是一种根据它的发明者Rivest,Shamir和Adleman命名的公开密钥算法。它方便了对称密钥加密中的密钥交换过程。它还可以用来产生数字签名。
  
  2.1.3 Diffie-Hellman
  

  Diffie-Hellman是一种简化在非安全网络上交换秘密密钥的公开密钥加密算法。算法是以Diffie和Hellman命名的,他们在1977年出版了第一个公开密钥加密的公开搜索。它的主要目的是简化在不安全网络上交换秘密会话密钥的过程。
  
  2.1.4 散列函数
  

  散列(Hash)函数是一种单向的算法,它提取任意长度的一段信息并产生固定长度的乱序的摘要。摘要是文本的一个截取,只包含与文本最相关的部分,这就是Hash函数所产生的结果。Hash是一种单向的定义。我们可以在给定的文本上运行算法来获得固定长度的Hash值,但不能从Hash过程中获得最初的文本。Hash函数可以唯一地定义文本。它对每个唯一的消息而言就像是指纹一样。不同的消息可以产生不同的值,并且相同的消息会产生完全相同的Hash,Hash值可以用于维持数据的完整性。如果A发送一个消息给B,并给B消息的Hash。B可以在消息上运行用在该消息上的同一Hash算法,并用计算得到的Hash值与B收到的Hash值相比较。如果发现根据消息计算出来的Hash与B收到的Hash值不同,就可以知道数据在传输的过程中出错了。
  
  2.1.5 消息摘要:MD5
  

  消息摘要(Message Digest 5,MD5)是一种符合工业标准的单向128位的Hash算法,由RSA Data Security Inc.开发,它可以从一段任意长的消息中产生一个128位的Hash值。(例如,质询握手身份验证协议 (CHAP)通过使用MD5来协商一种加密身份验证的安全形式。CHAP在响应时使用质询-响应机制和单向MD5散列。用这种方法,用户可以向服务器证明自己知道密码,但不必实际将密码发送到网络上,从而保证了密码本身的安全性。)
  
  2.1.6 安全散列算法:SHA-1
  
  Secure Hash Algorithm(SHA-1)是一种产生160位Hash值的单向Hash算法。它类似于MD5,但安全性比MD5更高。
  
  2.1.7 Hash信息验证码HMAC(Hash message authentication codes)
  
  HMAC可以用来验证接收消息和发送消息的完全一致性(完整性)。
  
  2.1.8 数字签名
  
  数字签名标准(Digital Signature Standard,DSS)是国家标准技术研究所开发的数字签名算法。数字签名(Digital Signature,DS)是一种用使用者的私有密钥加密的Hash值。它可以像正常签名一样用于认证,但它也可以用做与签名相关的信息完整性的认证。
  
  2.1.9 认证授权
  
  认证授权(Certificate Authority,CA)是一个实体,通常是一台计算机,它保存了一些公开密钥。事实上,它保存的一些称为认证的目标包含了用户或设备的信息,其中包括它们的公开密钥。认证包含某个公开密钥的所有者的认证信息,如:姓名、地址、公司等。认证的目的有两个:
  
  ●标志一个用户或设备的公开密钥。
  
  ●确认假设的公开密钥的拥有者是公开密钥的真实拥有者。
  
  认证授权(CA)是一个记录了所有认证的第三方。使用CA,用户可以有一个认证的集中贮藏处,它允许用户获得其他用户的公开密钥并认证那些用户。它提供了一个记录用户和设备公开密钥的集中存放点。它还提供了认证授权,当用户从CA中获得用户A的公开密钥时,密钥确实是用户A的而不是其他人的。
  
  2.1.10 OAKLEY密钥决定协议
  
  Hilarie Orman提出的"OAKLEY密钥决定协议",Oakley和SKEME各自定义了一种建立已认证密钥交换的方法,包括载荷的结构、所承载载荷信息、处理它们的顺序以及如何使用它们。Oakley描述了一系列的密钥交换模式,提供密钥交换和刷新功能。
  
  2.1.11 SKEME: Secure Key Exchange Mechanism
  
  Hugo Krawczik提出的"安全密钥交换机制(SKEME)"SKEME描述了通用密钥交换技术,提供匿名性、防抵赖和快速刷新。
  
  2.1.12 互连网安全联盟及密钥管理协议
  
  互连网安全联盟及密钥管理协议(Internet Security Association and Key Management Protocol,ISAKMP)是一个定义在主机之间交换密钥和协商安全参数的框架。ISAKMP定义密钥在非安全网络上交换的一般机制,ISAKMP定义的信息包括报文中消息的位置和通信过程发生的机制,但它不指明使用的协议和算法。
  
  2.1.13 互连网密钥交换
  
  互连网密钥交换(Internet Key Exchange,IKE)是一种实现密钥交换定义的协议。IKE是一种在ISAKMP框架下运行的协议。它是从其他密钥交换协议OaKley和SKEME中派生而来的。IKE用于在对等端之间认证密钥并在它们之间建立共享的安全策略。IKE用于确认,譬如标志一个要求加密会话的对等端,以及决定对等端使用何种算法和何种密钥。
  
  IKE考虑了IPSec使用的所有算法交换秘密密钥的复杂性。通过将密钥管理函数替代普通的密钥管理协议,简化了将新的算法添加进IPSec协议栈的过程。IKE使用公开密钥加密算法在非安全网络上安全地交换秘密密钥。
  
  2.1.14 Kerberos V5身份验证
  
  Kerberos V5是用于处理用户和系统身份的身份验证的Internet标准安全协议,是在Windows 2000 Server域中进行身份验证的主要安全协议。使用Kerberos V5,通过网络线路所发送的密码将经过加密而不作为纯文本进行发送。Kerberos V5协议校验了用户的身份和网络服务。这种双重验证被称为相互身份验证。[Page]
  
  2.2 IPSec基本概念
  
  2.2.1 IPSec基本概念
  
  IPSec通过使用基于密码学的保护服务、安全协议和动态密钥管理,可以实现以下这几个目标:
  
  1、认证IP报文的来源
  
  基于IP地址的访问控制十分脆弱,因为攻击者可以很容易利用伪装的IP地址来发送IP报文。许多攻击者利用机器间基于IP地址的信任,来伪装IP地址。IPSec允许设备使用比源IP地址更安全的方式来认证IP数据报的来源。IPSec的这一标准称为原始认证

  上文我们介绍了IPSec的工作原理及其相关的基本概念和术语,在接下来的叙述中,我们将集中讨论IPSec的配置步骤。
  
  1 IPSec基本配置步骤
  
  前文中提到的AH和ESP报头中值得注意的一点是没有指明用来产生认证数据和负载数据的算法。可以使用一些不同的算法。这意味着,如果出现了一个新的算法,它可以不作明显改动地合成进IPSec标准中。目前,MD5和SHA是用来产生认证数据的两种算法。ESP加密算法包括DES,3DES,RC5和IDEA。下面讨论IPSec配置的步骤以及如何选取不同的算法。
  
  (1)打开IPSec配置对话框
  
  选择"开始"|"程序"| "管理工具"|"本地安全策略"菜单,打开"本地安全设置"对话框。单击以选择"IP安全策略:在本地机器",如图1所示。
  

 
  图1  "本地安全设置"对话框


  
  最初的窗口显示三种预定义的策略项:客户端、服务器、安全服务器。在每个预定义的策略的描述中详细解释了该策略的操作原则。如果想要修改系统预定义的策略细节,可以右击相应的策略并选择"属性"进行修改。
  
  下面,我们将通过新建一个策略对各种策略的属性进行介绍。
  
  (2)右击"IP安全策略,在本地机器",选择"创建IP安全策略",打开"安全策略向导"。单击"下一步"继续。如图2、3所示。
  

 
  图2  创建IP安全策略
   
  图3  安全策略向导


  
  (3)在弹出的对话框中为新的IP安全策略命名并填写策略描述。如图4所示。
  

  (4)单击"下一步",接受对话框中"默认的响应"复选项,之后单击"下一步"。如图5所示。
  

 
  图4 " 安全策略名称"对话框
   
  图5  "安全通讯请求"对话框


  
  (5)接受默认的选项"Windows 2000 默认值Kerberos V5"作为默认响应规则身份验证方法,单击"下一步"继续。如图6所示。
  

  (6)保留"编辑属性"的选择并单击"完成"按钮完成IPSec的初步配置。如图7所示。
  

 
  图6  设置身份验证方法
   
  图7 完成IP安全策略向导


  
  (7)完成初步配置后,将弹出新IP安全策略属性对话框。如图8所示。
  

 
  图8  IP安全策略属性对话框
   
  图9  "新规则属性"对话框


  
  (8)接下来需要添加用户自己定义的"IP安全规则"。这里,我们在不选择"使用'添加向导'"情况下单击"添加"按钮。出现如图9所示的"新规则属性"对话框。在这里我们可以对新规则的各项属性进行设置。其中包括:
  

  1)IP筛选列表
  
  在"IP筛选列表"标签页上单击"添加"按钮打开"IP筛选器列表"对话框。如图10所示。
  
  输入新IP筛选器列表的名称、描述信息并在不选择"使用'添加向导'"情况下单击"添加"按钮。新弹出的"筛选器属性"对话框如图11所示,包含三个标签页:
  
  ●"寻址":可以对IP数据流的源地址、目标地址进行规定,如图11所示。
  
  ●"协议":可以对数据流所使用的协议进行规定,如果选择了"TCP"或"UDP"协议还可以对源端和目的端使用的端口号作出规定,如图12所示。
  
  ●"描述":对新筛选器作出简单描述。
  

 
  图10  "IP筛选器列表"对话框
   
  图11  "筛选器属性"对话框
   
  图12  "筛选器属性"-"协议" 标签页
   
  图13  确保选中新设置的"IP筛选器"


  
  在完成对"筛选器属性"的设置后,要确保选中新设置的"IP筛选器",如图13所示。
  
  2)筛选器操作
  
  "筛选器操作"标签页是整个IPSec设计的关键。它将对符合"IP筛选器"的数据流进行相应处理。如图14所示。这里,我们在不选择"使用'添加向导'"情况下单击"添加"按钮。出现如图15所示的"新筛选器操作 属性"对话框。
  

 
  图14  "筛选器操作" 标签页

  图15  "新筛选器操作 属性"对话框
  
  在这里我们可以对新筛选器操作的细节进行设置。其中,可以选择"许可"、"阻止"对符合"IP筛选器"的数据流进行过滤。可以发现,实际上这就可以很简单的实现一个普通防火墙的功能。除此之外,如果选择"协商安全"还可以对允许的通信进行进一步的安全设置。可以单击"添加"按钮,添加相应的安全措施,如图16所示。
  
 
  图16  "安全措施" 对话框
   
  图17  "自定义安全措施设置"对话框

  
  安全措施包括:
  
  ●"高":选择以最高的安全级别来保护数据。使用"封装安全措施负载量"(ESP) 来提供机密性(数据加密)、身份验证、防止重发和完整性,使其适合于高的安全级别。ESP 不提供 IP 报头(地址)的完整性。如果数据和地址均需要保护,可以创建自定义安全方法。如果不需要加密,可以使用"中"。
  
  ●"中":使用验证报头(AH)协议来提供完整性、防止重发和身份验证。这适合于安全计划需要标准的安全级别时。AH 提供IP报头和数据的完整性,但是不加密数据。
  
  ●"自定义":如果需要加密和地址完整性、更强大的算法或密钥寿命,可以指定自定义的安全方法。如图17所示,其中包括:
  
  ■数据和地址不加密的完整性(AH)算法:
  
  ◆消息摘要 5 (MD5),产生 128 位的密钥。
  
  ◆安全散列算法 (SHA1),产生 160 位的密钥。密钥越长越安全,所以应首要考虑 SHA1。
  
  ■数据完整性算法: MD5或SHA1。
  
  ■数据加密算法:
  
  ◆3DES 是最安全的 DES 组合,3DES 每个数据块处理三次,因此会降低系统性能。
  
  ◆DES 只使用56位密钥,用于不需要很高的安全性和3DES开销的情况下,或者出于互通性考虑。
  
  ■密钥生存期 :密钥生存期决定新密钥的产生时间,可以用千字节数或/和秒数指定密钥生存期。例如,如果通讯用了 10000 秒,而密钥寿命指定为 1000 秒,将会产生 10 个密钥来完成该传送。这样可以确保即使攻击者获得了部分通讯,也无法获得整个通讯。
  
  可以添加多个安全措施,并通过"上移"、"下移"按钮指定和另一计算机协商时采取的安全措施首选的顺序。如图18所示。
  
 
  图18  指定安全措施首选的顺序
   
  图19  确保选中新添加的筛选器操作项

  
  在"安全措施"标签页还有三个选项:
  
  ●"接受不安全的通信,但总是用IPSec响应":接受由其它计算机初始化的不受保护的通信,但在本机应答或初始化时总是使用安全的通信。
  
  ●"允许和不支持IPSec的计算机进行不安全的通信":允许来自或到其它计算机的不受保护的通信。
  
  ●"会话密钥完全向前保密":确保会话密钥和密钥材料不被重复使用。
  
  需要注意的是,当以上内容设置结束回到"筛选器操作"标签页后,必须选中刚才添加的新筛选器操作项,如图19所示。
  
  3)身份验证方法
  
  身份验证方法定义向每一位用户保证其他的计算机或用户的身份的方法。如图20所示。每一种身份验证方法提供必要的手段来保证身份。WINDOWS2000支持三种身份验证方法:Kerberos协议、使用证书和使用预共享的密钥。如图21所示。
  
 
  图20  身份验证方法标签页
   
  图21  身份验证方法属性对话框

  
  4)隧道设置
  
  如图22所示,当只与特定的计算机交换通信并且知道该计算机的IP地址时,选择"隧道终点由此IP地址指定"并输入目标计算机的IP地址。
  

[Page]

 
  图22  隧道设置标签页
   
  图23  连接类型标签页

  
  5)连接类型
  
  为每一个规则指定的连接类型可以决定计算机的连接(网卡或调制解调器)是否接受IPSec策略的影响。每一个规则拥有一种连接类型,此类型指定规则是否应用到LAN连接、远程访问连接或所有的网络连接上。如图23所示。
  
  (9)新创建的IP安全策略的属性对话框还有一个"常规"标签页,如图24所示。这里可以输入新IP安全策略的名称和描述,更改"检查策略更改时间"(输入因该策略的变化而对Active Directory进行轮询的频率)。
  
 
  图24  "IP安全策略属性"的"常规"标签页
   
  图25  "密钥交换设置"对话框

  
  此外还可单击"高级"按钮,在"密钥交换设置"对话框中对密钥交换进行高级设置,如图25所示。其中:
  
  ●"主密钥完全前向保密":选择保证没有重用以前使用的密钥材料或密钥来生成其它主密钥。
  
  ●"身份验证和生成新密钥间隔(A)":确定在其后将生成新密钥的时间间隔。
  
  ●"身份验证和生成新密钥间隔(U)":限制主密钥可以被当作会话密钥的密钥材料来重新使用的次数。(如果已经启用了"主密钥完全前向保密",则会忽略该参数。)
  
  ●保护身份的方法:单击"方法"按钮,在弹出的"密钥交换安全措施"对话框中安全措施首选顺序以及IKE安全算法细节作出选择,如图26所示。其中包括:
  
  ■完整性算法:MD5或SHA1。
  
  ■加密算法:3DES或DES。
  
  ■Diffie-Hellman小组:选择作为将来密钥基础的"Diffie-Hellman小组":
  
  ◆使用"低"(Diffie-Hellman小组1)来为96位的密钥提供密钥材料。
  
  ◆使用"中"(Diffie-Hellman小组2)来为128位的密钥(更强)提供密钥材料。
  
 
  图26  "密钥交换安全措施"对话框
   
  图27  指派一种策略

  
  (10)最后,需要在新建立的IP安全策略上单击鼠标右键并选择"指派"使改IP安全策略启用。如图27所示。注意:一次只能指派一种策略。
  

  2 IP安全策略管理
  
  通过右击"IP安全策略,在本地机器",选择"管理IP筛选器表和筛选器操作"可以对已制定的IP安全策略进行修改。如图28所示,其中各种选项前面都已经介绍,在此不再赘述。
  
 
  图28  "管理IP筛选器表和筛选器操作"对话框
  在前文的叙述中,我们介绍了IPSec的原理以及工作步骤。下面,我们以实验的形式对其前面的IPSec理论进行检验。通过下面的实验,我们可以:深入理解IPSec的实现原理、验证IPSec相关理论、掌握IPSec的配置及诊断技巧和方法。
  
  1.准备工作
  
  准备两台运行Windows 2000 Server操作系统的服务器,并按图1所示进行连接、配置相应IP地址。
  
 
  图1  实践拓扑结构图

  
  2.配置HOST A的IPSec
  
  (1)建立新的IPSec策略
  
  1)选择"开始"|"程序"| "管理工具"|"本地安全策略"菜单,打开"本地安全设置"对话框。
  
  2)右击"IP安全策略,在本地机器",选择"创建IP安全策略",当出现向导时单击"下一步"继续。
  
  3)为新的IP安全策略命名并填写策略描述,单击"下一步"继续。
  
  4)通过选择"激活默认响应规则"复选框接受默认值,单击"下一步"继续。
  
  5)接受默认的选项"Windows 2000 默认值Kerberos V5"作为默认响应规则身份验证方法,单击"下一步"继续。
  
  6)保留"编辑属性"的选择,单击"完成"按钮完成IPSec的初步配置。
  
  (2)添加新规则
  
  在不选择"使用'添加向导'"的情况下单击"添加"按钮。出现"新规则属性"对话框。
  
  (3)添加新过滤器
  
  1)单击"添加"按钮,出现 "IP筛选器列表"对话框。
  
  2)为新的IP筛选器列表命名并填写描述,在不选择"使用'添加向导'"的情况下单击"添加"按钮。出现"筛选器属性"对话框。
  
  3)单击"寻址"标签,将"源地址"改为"一个特定的IP地址"并输入HOST A的IP地址。将"目标地址"改为"一个特定的IP地址"并输入HOST B的IP地址。保留默认选择"镜像"复选框。
  
  4)单击"协议" 标签,选择"协议类型"为ICMP。
  
  5)单击"确定"回到"IP筛选器列表"对话框。观察新添加的筛选器列表。
  
  6)单击"关闭"回到"新规则属性"对话框。
  
  7)通过单击新添加的过滤器旁边的单选按钮激活新设置的过滤器。
  
  (4)规定过滤器动作
  
  1)单击"新规则属性"对话框中的"筛选器操作"标签。
  
  2)在不选择"使用'添加向导'"的情况下单击"添加"按钮。出现"新筛选器操作属性"对话框。
  
  3)选择"协商安全"单选框。
  
  4)单击"添加"按钮选择安全方法。
  
  5)选择"中(AH)",单击"确定"回到"新筛选器操作属性"对话框。
  
  6)单击"关闭"回到"新规则属性"对话框。
  
  7)确保不选择"允许和不支持IPSec的计算机进行不安全的通信",单击"确定"回到"筛选器操作"对话框。
  
  8)通过单击新添加的筛选器操作旁边的单选按钮激活新设置的筛选器操作。
  
  (5)设置身份验证方法
  
  1)单击"新规则属性"对话框中的"身份验证方法"标签。
  
  2)单击"添加"按钮,出现"新身份验证方法属性"对话框。
  
  3)选择"此字串用来保护密钥交换(预共享密钥)"单选框,并输入预共享密钥子串"ABC"。
  
  4)单击"确定"按钮回到"身份验证方法"标签。
  
  5)单击"上移"按钮使"预先共享的密钥"成为首选。
  
  (6)设置"隧道设置"
  
  1)单击"新规则属性"对话框中的"隧道设置"标签。
  
  2)选择"此规则不指定IPSec隧道"。
  
  (7)设置"连接类型"
  
  1)单击"新规则属性"对话框中的"连接类型"标签。
  
  2)选择"所有网络连接"。
  
  3)单击"确定"按钮回到"新IP安全策略属性"对话框。
  
  4)单击"关闭"按钮关闭"新IP安全策略属性"对话框回到"本地安全策略"设置。
  
  3.配置HOST B的IPSec
  
  仿照前面对HOST A的配置对HOST B的IPSec进行配置。
  
  4.测试IPSec
  
  (1)不激活HOST A、HOST B的IPSec进行测试。
  
  1)确保不激活HOST A、HOST B的IPSec。
  
  2)在HOST A执行命令PING 192.168.0.2,注意观察屏幕提示。
  
  3)在HOST B执行命令PING 192.168.0.1,注意观察屏幕提示。
  
  (2)激活一方的IPSec进行测试
  
  1)在HOST A新建立的IP安全策略上单击鼠标右键并选择"指派", 激活该IP安全策略。
  
  2)在HOST A执行命令PING 192.168.0.2,注意观察屏幕提示。
  
  3)在HOST B执行命令PING 192.168.0.1,注意观察屏幕提示。
  
  (3)激活双方的IPSec进行测试
  
  1)在HOST A执行命令PING 192.168.0.2 -t ,注意观察屏幕提示。
  
  2)在HOST B新建立的IP安全策略上单击鼠标右键并选择"指派", 激活该IP安全策略。
  
  3)观察HOST A、HOST B间的安全协商过程。


    众信咨询:互联网资质代理诚信品牌