荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (人生不定式), 信区: Linux
标  题: 基于IPsec的虚拟专用网在UNIX上的组建--原理篇(转寄)
发信站: BBS 荔园晨风站 (Thu Sep 14 12:46:56 2000), 站内信件

【 以下文字转载自 georgehill 的信箱 】
【 原文由 georgehill.bbs@smth.org 所发表 】
发信人: starw (虫二·抛愚引砖), 信区: Linux
标  题: 基于IPsec的虚拟专用网在UNIX上的组建--原理篇(转寄)
发信站: BBS 水木清华站 (Thu Sep 14 03:16:04 2000)

http://www.linuxaid.com.cn/solution/posts/VPN_1.htm

基于IPsec的虚拟专用网在Unix上的组建--原理篇

LinuxAid工程师Unix_guo

1.    前言

       随着Internet的不断发展,由于其方便快捷,很多大公司和政府部门或民
间组织都用它来传输数据,这些单位的各个部门往往都是跨地区的,相隔很远,
如果全部用自己的专线,其价格非常昂贵。于是利用Internet这样的公共网络来
传输私有数据就可以节省大量费用。但是这样的后果就是非常不安全,在Internet
上,数据随时可能会被不怀好意的网络入侵者窃取或修改,因此,数据在传输
过程中必须被加密,接收方和发送方通过一个虚拟的安全隧道来传输信息,这就
是虚拟专用网技术。如果是在TCP或UDP层加密,那么通过截取IP层的数据同样可
以获得机密信息,在IP层使用加密和认证就非常安全了,这就是IPsec(IP安全体
系结构)技术。目前利用IPsec来实现VPN(虚拟专用网)成为一种发展趋势。

2.    IP协议的安全体系结构

   IPv4的包本身没有提供任何安全保护,黑客可以通过信息包探测、IP电子欺骗、
连接截获、replay攻击(是一种不断发相同序列号的包使系统崩溃的攻击方法)等
方法来攻击。因此,我们收到的数据包存在着以下危险:并非来自合法的发送者;
 数据在传输过程中被人修改; 数据内容已被人窃取(想想如果是军事机密等重要
信息的话,这是致命的)。IPsec的目的就是为了实现数据传输的完整性(源地址验
证和保证数据没有被修改)和机密性(没有被人看过)以及提供一定程度的对replay
攻击的保护。IPsec可用它为IP及其上层协议(TCP和UDP等)提供安全保护。

   RFC2401规定了IPsec的基本结构,它利用认证头标(AH)和封装化安全净荷(ESP)
   来实现数据的认证和加密。前者用来实现数据的完整性,后者用来实现数据的
机密性。同时对数据的传输规定了两种模式:传送模式和通道模式。在传送模式
中,IP头与上层协议头之间嵌入一个新的IPsec头(AH或ESP); 在通道模式中,要
保护的整个IP包都封装到另一个IP数据包里,同时在外部与内部IP头之间嵌入一
个新的IPsec头。两种IPsec头都可以同时以传送模式和通道模式工作。图1 说明
了分别在两种模式下的IP包。

原始的数据包            IP头  TCP头  数据
传送模式受保护的数据包  IP头  IPsec头  TCP头  数据
通道模式受保护的数据包  新IP头  IPsec头  IP头  TCP头  数据

图1

    IPsec是由四大组件组成,它们是因特网密钥交换进程、IPsec进程本身、安
全联盟数据库和安全策略数据库。

    IPsec中有两个重要的数据库,分别是安全联盟数据库SAD和安全策略数据库
SPD。SAD中的每一个元组是一个安全联盟SA,它是构成IPsec的基础,是两个通信
实体经协商建立起来的一种协定,它决定了用来保护数据包安全的IPsec协议、转
码方式、密钥以及密钥的有效存在时间等。SPD中的每一个元组是一条策略,策略
是指应用于数据包的安全服务以及如何对数据包进行处理,是人机之间的安全接
口,包括策略定义、表示、管理以及策略与IPsec系统各组件间的交互。两个数据
库联合使用。对于发送方,每个SPD的元组都有指针指向相关的SAD的元组。如果
一个SPD的元组没有指向适合发送包的SA,那么将会创建新的SA或SA束,并将SPD
的元组和新的SA元组链接起来。对于接收方,通过包头信息包含的IP目的地址、
IP安全协议类型(AH或ESP)和SPI(安全参数索引)在SAD中查找对应的SA。SA中其他
字段为序列号、序列号溢出标志、Anti-replay 窗口、AH认证算法和密钥、ESP加
密算法和密钥及初始化矩阵、ESP认证算法及密钥等等。

因特网密钥交换(IKE)是IPsec最为重要的部分,在用IPsec保护一个IP包之前,必
须先建立一个SA,IKE用于动态建立SA。IKE代表IPsec对SA进行协商,并对SAD数
据库进行填充。RFC2409所描述的IKE是一个混合型的协议,它建立在由Internet
安全联盟和密钥管理协议(ISAKMP)定义的一个框架上,见RFC2408。IKE使用了两
个阶段的ISAKMP。第一阶段建立IKE安全联盟,第二阶段利用这个既定的安全联盟,
为IPsec协商具体的安全联盟。

IPsec进程本身就是用来实现整个IPsec的守护进程,用户可以通过和这个进程打
交道来管理自己的安全策略,实现适合自己需要的网络安全。当然,每个开发组
织的源代码不一样,用户管理的界面和方式就不一样,但是它们都必须遵守RFC的
规范,最终的目的都应该是差不多的。通常,IPsec的源代码是嵌入到内核IP层源
代码中的,也有人提出在其层次在IP之上,TCP之下,两种方式都可以。

3.    虚拟专用网

虚拟专用网(VPN)是专用网的扩展,它的通信两端之间通过的是公用传输介质如I
nternet。VPN允许你在两台计算机之间通过公共传输介质通信,就好像是自己的
端到端的专用网一样。为了模拟端到端的专用网,数据必须被加上一个路由信息
头,以便能够在Internet上找到正确的路径; 同时为了数据的安全,数据包在传
输过程中必须被加密。图2说明了VPN的逻辑概念,VPN连接使用户可以在家工作或
者在出差的旅途中利用公用介质如Internet来和公司总部的机器连接。从用户的
角度来看,VPN是一个VPN的客户端与服务器端的端到端的的连接,Internet等公
共介质的网络结构是无关紧要的,因为从逻辑上看,数据是在专用网上传输。VPN
也可以使公司在地域上分割的各个分部之间通过Internet传输信息,信息必须在
一个安全的通道中传播,从逻辑上看就像一个WAN上的专用网。

VPN的一个重要的特征就是安全性,通过VPN通信的两台主机必须通过一个安全的
通道(tunnel)。这个tunnel是逻辑上的,并不真正存在,因此通过数据的加密和
认证使得数据包即使被截获也不容易破译。如何实现这一点,以前的VPN很多的采
用SSL等方法对数据进行加密,但是缺点是配置安全策略不够灵活,另外,需要在
高层协议上开发大量的代码,唯一的优点就是能够对DOS(服务拒绝)攻击由较好的
防御。



       图2 VPN的逻辑概念图

4.基于IPsec的虚拟专用网

   当IPsec用于路由器时,就可以建立虚拟专用网。在路由器的连内部网的一端,
如图2     所示,是一个受保护的网络,另一端则是不安全的公共网络。两个这
样的路由器建立          起一个安全通道,通信就可以通过这个通道从一个本
地的保护子网发送到一个远程的保护子网,这就形成了一个VPN。

在这个VPN中,每一个具有IPsec的路由器都是一个网络聚合点,试图对VPN进行通
信分析将会失败。目的地是VPN的所有通信都经过路由器上的SA来定义加密或认证
的算法和密钥等参数,即从VPN的一个路由器出来的数据包只要符合安全策略,就
会用相应的SA来加密或认证(加上AH或ESP报头)。整个安全传输过程由IKE控制,
密钥自动生成,保护子网内的用户根本不需要考虑安全,所有的加密和解密由两
端的路由器全权代理。

我们来看看数据包的处理过程,先看看数据包的外出处理:

(1)源主机TCP层通过调用ip_output()函数,调用IP层, 令其发送一个数据包给
路由器;

(2)路由器针对目的主机的数据包,查询策略引擎,根据安全策略强制加上AH或ESP
头;

(3)IKE处理,对没有SA的安全策略建立新的SA;

(4)SA处理, 增加序列号字段;

(5)通道模式处理,通常VPN用的是通道模式,因此加上一个额外的IP头;

(6)路由器发送这个安全的数据包。

接收方的处理过程:

(1)另一端的路由器收到这个包,剥去额外的IP头,并利用数据包的AH或ESP头调
用   IPsec层;

(2)IPsec层从AH或ESP头摘录出SPI,从IP头中选出源和目的地址及协议;

(3)IPsec层用以上的参数从SAD中取出所需的SA,如果没找到,就丢弃这个包;

(4)SAD返回SA,IPsec将会根据AH和ESP定义的规则对这个包进行处理;

(5)验证和这个包对应的策略,进而决定IPsec处理的应用是否正确,策略是通过
SA中的指针获得或利用选择符查询SPD得来;

(6)如果验证正确,那么解密并把这个包转发到真正的目的主机。

5.在Linux上的例子

我们实现的基于IPsec的VPN选用的Linux操作系统作为两端的路由器,其结构如图
2所示,是一个典型的VPN结构。两边的路由器定义了相同的安全策略,也就是说,
两端的通信都遵守相同的安全规则,例如都使用HMAC-MD5算法对WWW服务进行验证,
都使用TRI-DES算法对telnet进行加密等等。IPsec的四大部分都在作为路由器的
Linux机器上。

两端的路由器的IP地址分别是202.38.64.185和202.38.75.75,我们的测试方案是
从64.185内的主机host1和75.75内的主机host2的ftp通信,host1和host2的有相
应的域名解析,分别对应各自内部的IP地址。公共网络是校园上的Internet网,
如图3所示



图3 基于IPsec的VPN在Linux上的实现环境

经过测试表明,从host1到host2的IP包全部被封装了一个额外的IP头,所有的上
层协议都是经过加密的乱码,无法分析其内容,黑客获得的唯一信息就是这个包
是64.185和75.75之间的通信(ESP应用TRI-DES算法)。另外,应用TRI-DES的结果
使得网络吞吐量下降了25%左右,这是由于在路由器上所做的加密和解密过程都需
要耗费一定的时间。

基于IPsec的VPN实现有以下优点:

(1)在IP层增加AH或ESP头实现网络安全使得通信安全可靠;

(2)IKE协议可以自动产生需要的SA,并且SA的生存期非常短,使得破译更加困难;

(3)定义安全策略方便灵活,只需要在配置文件里进行编辑,就可以实现安全策略,
例如如果一种算法被破解,立刻换另一种算法。 (目前AH支持HAMC-MD5、HAMC-SHA1;
ESP支持DES-CBC、TRI-DES-CBC、BLOWFISH-CBC、CAST128-CBC)

6.小结

    IPsec的提出使得VPN有了更好的解决方案,这是因为在网络层就进行安全服
务,使得密钥协商的开销被大大削减了,这是由于多种传送协议和应用程序可共
享由网络层提供的密钥管理结构(IKE)。其次,假如网络安全服务在较低层实现,
那么需要改动的应用程序就要少得多。IPsec是目前唯一一种能为任何形式的Int
ernet通信提供安全保护的协议,因此,可以预见,未来的VPN实现方案将会更多
的利用IPsec。



--

        寒山惟白云,寂寂绝埃尘。草座山家有,孤灯明月轮。
        石床临碧沼,鹿虎每为邻。自羡幽居乐,长为世外人。


※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.117.1.24]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店