前言:
IPSec的全称是Internet Protocol Security,翻译成中文就是Internet协议安全性。它的作用主要有两个:一个是保护 IP 数据包的内容,另外一点就是通过数据包筛选并实施受信任通讯来防御网络攻击。这对于我们当有一些重要的数据在传输的过程中需要加以保护或者防止监听来说无疑是一个好消息,因为Windows 2000已经内置了这个功能,我们不再需要借助其他的工具以实现这个目的了。
由于是在IP层进行对数据的对称加密,封装的是整个的IP数据包,所以不需要为 TCP/IP 协议组中的每个协议设置单独的安全性,因为应用程序使用 TCP/IP 来将数据传递到 IP 协议层,并在这里进行保护。相应的IPSec配置相对复杂,但是对于应用程序来说是透明的,因此不要求应用程序必须支持。下面分几个部分对IPSec的概念、工作过程和实践应用等几个方面加以阐述:
一、 IPSec的工作的过程:
两台计算机在通讯的时候,如果已经设置好IPSec的策略,主机在通讯的时候会检查这个策略,策略在应用到主机的时候会有一个协商的过程,这个过程通过Security Association来实现。协商后根据Policy的配置,两台计算机之间建立一个加密的连接,数据进行加密传输。驱动程序将解密的数据包传输给TCP/IP的驱动程序,然后传输给接收端的应用程序。
二、 进入IPSec控制界面:
有两种方式可以打开,功能是完全一样的:
开始-运行-管理工具-本地安全策略
MMC-添加/删除管理单元-添加-IP安全管理策略-确定
三、 预定义的策略:
缺省的是没有启用IPSec,需要进行指派。我们可以发现系统已经给我们定义了三个策略,下面非别进行介绍。
安全服务器:必须使用IPSec,如果对方不使用IPSec,则通讯无法完成。用于始终需要安全通讯的计算机。
客户端:功能是缺省在通讯过程中不使用IPSec,如果对方要求IPSec,它也可以使用IPSec。用于在大部分时间不能保证通讯的计算机。
服务器:功能是缺省使用IPSec,但是对方如果不支持IPSec,也可以不使用IPSec。用于在大部分时间能保证通讯的计算机。
策略可以在单台计算机上进行指派,也可以在组策略上批量进行指派。值得注意的是为了达到可以通过协商后进行通讯,所以通讯的两端都需要设置同样的策略并加以指派。
四、 IPSec的工作方式:
传送模式(计算机之间安全性配置):保护两个主机之间的通讯,是默认的IPSec模式。传送模式只支持Windows2000操作系统,提供点对点的安全性。
隧道模式(网络之间安全性配置):封装、发送和拆封过程称之为“隧道”。一般实现方法是在两个路由器上完成的。在路由器两端配置使用IPSec,保护两个路由器之间的通讯。主要用于广域网上,不提供各个网络内部的安全性。
五、 IPSec的身份验证方法:
Kerberos V5:(默认)如果是在一个域中的成员,又是Kerberos V5协议的客户机,选择这一项。比如一个域中的Windows 2000的计算机。
证书:需要共同配置信任的CA。
预共享密钥:双方在设置策略的时候使用一段共同协商好的密钥。
以上三种方法都可以作为身份验证的方法,一般在日常工作当中,如果是域中的Windows 2000的计算机之间就采用Kerberos的认证方式,由于国内CA用的实在不多,一般其他情况下可以采用第三种方式,双方协商一段密钥,这个在后面的例子二中还会涉及。
六、 IPSec的加密模式:
身份验证加密技术:
SNA
MD5
数据包加密技术:
40-bit DES
56-bit DES
3DES:最安全的加密方法,相应的也会消耗更多的系统资源。
以上的概念性的东西大家可以查阅相关资料,这里就不多多讲述了。
七、 应用:
以上概念性的东西说了很多,下面正式进入实战,将通过两个例子把IPSec的两方面的功能进行说明。
1、 保护IP数据包的内容:为了保护两个主机之间的通讯信息的安全性,我们将利用IPsec的在两台计算机之间建立一个安全连接。采用预共享密钥方式,并强制使用IPSec进行通讯加密。例子中有两台计算机,第一台计算机IP为192.168.0.1,第二台计算机IP为192.168.0.2,如果没有特殊说明,操作是在第一台计算机上进行。
(1)、进入IPSec控制界面,右键点击“安全服务器”,选中属性(系统已经内置了三条规则,大家可以自己详细的看一下作用,为了演示策略的添加过程我们采用自己添加的方式)。点击“添加”按钮。
(2)、进入安全规则向导,点击“下一步”按钮。
(3)、根据实际情况,我们是实现两台主机之间的安全通讯,不是网络之间的,所以选择“此规则不指定隧道”,因此我们将采用传送模式。点击“下一步”按钮。
(4)、进入了选择网络类型的界面,可以选择的有三种方式,概念应该很好理解了,我们选择“所有网络连接”,点击“下一步”按钮。
(5)、进入了身份验证方法的界面,三种验证方法在上文中已经介绍,我们选择第三种“此字串用来保护密钥交换(预共享密钥)”,然后在对话框中输入我们协商好的密钥,比如“hello”。点击“下一步”按钮。
(6)、进入了“IP筛选器列表”界面,由于我们是要保护全部的通讯,所有选择“所有IP通讯”,当然也可以自己添加新的筛选器列表,这部分内容在第二个例子中会提到,点击“下一步”按钮。
(7)、进入“筛选器操作”界面,根据我们前面提到的要求,我们选择要求安全设置,这里的筛选器操作也是可以自己添加的,例子二中也会提到,点击“下一步”按钮。
(8)、至此安全规则创建完毕,我们点击“完成”。
(9)、会到开始的端口,我们会发现已经增加了我们新增加的安全规则。除了选中我们自己创建的规则以外,我们把其他默认规则的对勾点无。
(10)、最后,也是非常重要的一点,我们要对我们创建的策略进行指派,否则策略不会自己生效,点击“安全服务器”右键,点击“指派”。
(11)、这个时候我们打开一个窗口,开始使用Ping命令,检查我们的通讯状况。例子中的第二台计算机的IP地址为192.168.0.2,我们执行Ping 192.168.0.2 ?t,会发现一直在“协商IP安全性”,这个是什么原因呢?因为这个时候我们只是在第一台计算机上面设置了IPsec策略,另一端并没有做相应的设置,协商无法成功,所以这个时候我们必须到另外一端的计算机进行同样的设置并进行指派。
(12)、192.168.0.2的计算机上设置完毕并进行指派以后我们发现信息发生了变化,协商IP安全性通过,我们又接收到了来自192.168.0.2的回应。
(13)、如果我们在这之前打开了IP安全监视器,也就是IPSecmon的话,我们会发现窗口里面会有相应的记录显示。右下角也会显示“IP安全设置已经在这台计算机上启用”。
至此,例子一所要求的目的已经达到,我们成功的创建了IPSec来保证数据的安全性,这个时候其它没有启用IPsec的计算机如果对这台计算机发出Ping的命令,将得不到回应,如下图(我采用的方法是不指派计算机192.168.0.1设置好的IPSec策略):
2、 数据包筛选:这个功能对于我们来说也是相当有用的,记得很多网友都在询问如何关闭计算机的某个端口或者是如何防止别人Ping我的计算机等等之类的问题,防火墙是一个解决的方式,但是需要付出额外的费用和资源。靠TCP/IP属性里面的高级选项的筛选可以做到一些,但是只能够设置打开哪些端口,不能设置关闭哪些端口。其实这个要求完全可以靠IPSec来实现,有的朋友可能要问,那么还防火墙做什么?前面提到,和专业防火墙比起来,使用Ipsec配置相对来说要麻烦一些,不适合一般用户使用,另外目前的防火墙已经集成了很多其他的功能,还有就是硬件的防火墙会消耗更少的系统资源。
下面的例子会介绍如果使用IPSec进行数据包筛选,关闭ICMP,也就是大家很关心的如何关闭Ping的回应信息,这个其实用到的是ICMP(8,0),这里不详细介绍了ICMP了,正式进入实践操作(例子有两台计算机,第一台计算机IP为192.168.0.1,第二台计算机IP为192.168.0.2,如果没有特殊说明,操作是在第二台计算机上进行。):
(1)、进入IPSec控制界面,由于我们需要的筛选策略和操作在系统内置的里面没有合适的,所以下面我们进行自己添加。首先右键点击“IP安全策略”,选中“管理IP筛选器表和筛选器操作”。
(2)、选中管理IP筛选器列表,点击“添加”按钮。
(3)、为我们的IP筛选器列表起一个名字,比如“ICMP”,也可以在“描述”信息里面输入相应的描述信息。点击“添加”按钮。
(4)、进入“IP筛选器向导”,点击“下一步”按钮。
(5)、选择“源地址”信息,我们选择“我的IP地址”,也就是代表的本机,192.168.0.2。点击“下一步”按钮。
(6)、选择“目标地址”信息,我们选择“任何IP地址”,如果大家配置过防火墙,大家会发现这个步骤和防火墙的配置是完全一样的。点击“下一步”按钮。
(7)、选择“协议类型”,我们选择“ICMP”。这个时候大家会发现有很多协议类型供大家选择,也包括了TCP、UDP等等。点击下一步。
(8)、这个时候就完成了IP筛选器的建立,可以点击“完成”按钮。这个时候值得注意的是,由于我选择的是ICMP,但是假如这个时候我选择的是TCP,后面还会出现端口的选择,设置进站和出站的端口