基金项目:空军科研项目(020066):陕西省自然科学基金项目(2005.9.1 7) 基于IPSec的VPN网关设计研究 郝志建孟相如麻海圆 空军工程大学电讯工程学院 71 0077 本文研究了IPSec橼议的体系姑构厦工作模式, 分析了Windows平台下基于ipsec的VPN网关的 定的流量保密。IPSec协议产生的初衷是 解决Internet上IP传输的安全性,它包括 从RFC2401到RFC2412的一系列RFC 不是安全终点。通常情况下,只要IPSec 双方有一方是安全 关或路由器,就必 须使用隧道模式。在隧道模式中,IPSec 具体实现方法,阐述了JPSec VPN网关的相关 技术设计 PSe c;虚拟专用网;网荧 This paper studies wchiteCtupe and operation mode of 文档,它定义了一套默认的、强制实施的 算法,以保证不同的实施方案可以互通。 IPSec协议是目前基于密码学的安全协议中 最完善、安全性最高、适应范围最广的一 套协议,可以为上层协议提供透明的安全 保证,它既可以保护端系统到端系统的安 全性,还可以保证网关到网关的安全性。 2.1 IPSec协议体系结构 IPSec协议由安全协议(包括AH协议 和ESP协议),密钥管理协议(如IKE)以及 对整个IP包进行封装保护,并增加一个新 的外部IP头,同时征外部与内部IP头之 间插入一个IPSec头,图2所示为封装前 后的数据包。所有原始的数据包通过这个 隧道从IP网的一端传递到另一端,沿途的 路由器只检查最外面的IP包头1 检查内部 原来的IP包头。该模式的通信终点由受保 护的内部IP头指定,而IPSec终点则由外部 IP头指定。如IPSec终点为安全网荚,则该 网关会还原出内部IP包,再转发到最终的目 IPSec protocol,analyses a method to implement IPSec-VPN g ̄teway In Windows system.Finally, 伽Pelevant technology of IPSec-VPN gateway ape descffoed。 1.引言 随着Internet的快速发展和日益普 及,人们关注的焦点逐渐从网络的可用性、 信息的获取性转移到网络的安全性、应用 的简易性上来。建立在IP技术基础上的虚 拟专用网(Virtual Private Network, 认旺和加密算法组成,其体系结构如图1 所示。AI I协议根据整个IP数据包(或上层 协议数据单元)的内容产生一段让对方认证 的数据,存放在IP包头中传输。它可以保 证数据来自正确的发送者、保证数据的完 蛰陛等。ESP协议是对整个IP数据包(或一 部分)进行加密,加密后的信息存放在原先 的IP头部之后作为信息部分传输。除了加 密以外,ESP还具有认证功能。密钥管理 协议负责完成密钥的安全交换、安全关联 的建立等工作,在整个IP层的安全结构中 起到了重要的作用。 2.2 IPSec协议的运行模式 IPSec支持传输模式和隧道模式,AH  ̄l:lESP都支持这两种模式。IPSec头的位置 依赖于协议所使用的运行模式。 (1)IPSec隧道模式 的地。隧道模式通常用在至少一端是安全 网关的时候。使用隧道模式后, 关后面的 主机可以使用内部地址进行通信,而且 需 要实现IPSec。 匝=]= 劐 i匝亚 匝圈图2隧道模式封装格式 (2)IPSeC传输模式 传输模式下,IPSec主要对上层协议 ItIHP包的载荷进行封装保护,通常情况下, 传输模式只用于两台丰机之间的安全通信。 在传输模式中,原IP头保持/f 变,IP头与 上层协议之间需要插入一个特殊的IPSec 头,如图3所示封装前后的数据包。传输模 式为上层协议(如TCP、UDP和ICMP)提 供端到端的安全保护,它所保护的数据包的 VPN)正快速成为新一代网络服务的基 础,许多服务供应商推出了基于VPN传输 pa】的各类增值服务,提供集成的高速 Internet访问业务、企业IP电话业务、为 企业客户提供电视会议、信息公告等服务。 IP安全协议RNPSec协议是Internet工程任 务组织IETF制订的一组开放协议的总称, 是目前唯一一种能为任何形式的Internet 通信提供安全保障的协议,采用IPSec协议 PSec终点。当数据包从传输层 这种模式的特点是数据包最终目的地 通信终点是I传递给刚络层时,AH或EsP会进行“拦截”, 在IP头与上层协议头之间插入一个IPSec 头(AH头或ESP头)。 实现VPN安全保障功能是目前的最佳选 择。 2.1 PSec协议简介 IPSec协议是IETF安全工作组制定的 一套可以用于IPv4和IPv6卜的,具有互 臣 [巫] H :匝 丑二 二] 图3传输模式封装格式 操作性的,基于密码学的安全协议。它 可以提供(无连接的)完整性、数据源 头的认证、防重发功能、数据保密和一 3.基于lPSec的VPN网关设计 图1 IPSec体系结构 按照数据包的输出处理(本机要发送数 103 维普资讯 http://www.cqvip.com
中国科技信息20O7年第 期 ucHINA SCIENCE AND TECHNOLOGY lNFORMATION J舯.2007 据)和输入处理(接收外来数据)给出了基于 G E TL E N G T H I P—H E A D E R数完成发送。 IPSec的VPN网关设计的总体过程。 (pIpHeader>VersionAndHeaderLength); 3.2接收方的解密认证设计 3.1发送方的加密认征设计 H e a d e r L e n g t h 2 修改NDIS DDK中的PtReceive0函 修改N D I S D D K中的 =GETLENGTH TCP HEADER数,在 中加入自己的处理数据包源代 MPsendPackets()函数,在其中加入自己 (pTcpHeader一->LenAndCodeBits) 码。在函数中其中一个类型为 的处理数据包源代码。在函数中其中一 VirtualAddressl VirtualAddress- PNDISPACKET参数Packet就是我们这 个类型为PNDIS PACKET的参数Packet HeaderLengtht—HeaderI ength2 t 里需要处理的数据包。下而对 就是我们这里需要处理的数据包。下面 (5)对包进行解析,从而得出到源 NDIS—PACKET的处理说明如下: 对Packet的处理说明如下: IP地址、目的1P地址、源TCI 端口号、 这里的处理方式和发送包时有 : (1)系统启动后,已经注册的驱动 目的T CP端[1号、包头总长度等参数, 同,第一・个缓冲区HeaderBuffer是以太网 程序(后缀为.sY s)调用修改过的函数 并根据目的地址判断出站点名称。得到 缓冲 :,其余缓冲区LookAheadBuffer是 MPSendPackets(),这一步实现的主要是 当前进程的句柄,进而得到完整当前进 一个连续的整体大缓冲区,其中的IP头等 用自己定义的包处理函数替换系统的包处 程名和路径。 都是有规律的连续排列着,给处理数据包 理函数。 (6)利用第5步解析出来的结果, 带来了很大方便,所以就不需要象发送包 (2)获得包的第一个缓冲区、包中 已经得到了IP源地址、目的地址,进程 时那么麻烦。下面是解密处理过程: 的缓冲 个数、包大小等参数。这步的 名称及完整路径,访问的站点名称。根 (1)同样,从接收端的系统启动开 实现是通过调用DDK中的 据<源IP地址,目的IP地址,协议,端口 始。当接收端的操作系统启动并运行已 NdisQueryPacket函数来实现的。 号>,由策略引擎查询安全策略数据库 经注册的驱动程序(后缀为.sys)调用自 (3)获得每个缓冲区的地址(指 (SPD)决定相应处理。 定义PtReceive()函数。 针)。首先定义一个PVOID类型的大 (7)根据SPD指针,可以从SPD (2)对1OOk AheadBuffer进行解 小为整个缓冲区个数的数组,通过DDK 中取得相应的安全处理意见,包括验证 析,从而得出IP源地址目的地址。同 中的NdisGetNextBuffer函数循环取得地 算法、验证密钥、加密算法和加密密 时利用P S G et C u r re n t P r o ce s s或 址。源代码如下: 钥。安全刚关对每一个进出的数据包都 IoGetCurrentProcess函数得到当前进程的 for(i=0I i<BufferCount{i++) 要查找SPD中匹配的规则,根据匹配的情 句柄,进而得到完整当前进程名和路径, { 形,有三种不同的处理:a.丢弃{b.旁 并根据目的地址判断出站点名称。 Ndi SQue rYBuffe r(B11ffe r. 路绕开{C.按IPSec进行安全处理。 (3)由于lookAheadBuffer所具有 &Vi ̄ualAddress,&Length); (8)在第二、三、四步中已经得 的连续性,可以很容易地得到有效负载的 NdisGetNextBuffer(Bu_fer,&Buffer)l 到了封包有效负载缓冲区地址,及其缓冲 指针(仅需将lookAheadBuffer指针向后 virtualaddress[i]--&Vi ̄ualAddress 区大小等参数。在第七步中已经知道需要 移动IP头大小)。 }J 对有效负载所采用的加密和认 算法以及 (4)利用第2步解析出来的结果, (4)根据WINDOWS操作系统的 密钥,就可以对其进行机密和认证处理, 已经得到了IP源地址、目的地址{进程名 版本,获得封包有效负载缓冲区地址。 最后返回一个新的负载数据指针。由r采 称及完整路径;访问的站点名称,可以得 Windows 95/98/me/2000 server下 用的算法都是标准算法,所以有现成的加 到指向安全策略数据库的SPD指针。 N D I S—PA C K E T 的第一 个 密、验证函数可以调用。用外部函数 (5)根据SPD指针,可以从SPD NDIS—B U FFER保存的是Ethernet Do3DES、MD5 Ex对加密有效负载进行 中取得相应的安全处理意见,包括验证算 Header,第二个NDIS—BUFFER则是 解密、认证。 法、验证密钥、加密算法和加密密钥。要 IPHeader+Tcp/Udp/Icmp Header. (9)经过第8步,得到了发送数据 洋意接收端策略一定要和发送端策略-・致。 接着是封包数据。而2000 Professional 需要的加密数据(指针)及大小和散列数 (6)参考上一小节的第8步,用外 的第一个NDIs—B U FFER则保存着 据(指针)及大小。把数据重新拷贝到封 部函数Do3DES、MD5一Ex对加密有效负 Ethernet Header+IP Header+Tcp/ 包缓冲区,注意这里新的封包缓冲区大小 载进行解密、验征。最后把验证的结果和 U dp/Icmp Header,接着就是封包数 等都要进行改变,组成r一个全新的 验证数据ICV进行比较,判断数据的有效 据。由于我们在WIN2000下,且有效 NDIS_PACKET封包。在DDK中提供这 性。 负载的范围是指IP层的高层,所以我们要 样一个NdisCopyBuffer函数,可以进行 (7)最后调用系统Pr0t0colReceive 去掉Ethernet Header和IP Header的 这样的工作。下面是该函数的定义: 函数完成接收。 大小,计算出有效负载的指针位置。源 VOIDNdiSC OPYB Uffe r(0UT 3.3 MTU(最大传输单元)问题 代码如下: PNDIS—STATUS StatUS, OUT 在发送时,由于加密处理,会导致 PIPHeader=(PIP—HEADER) PNDIS BUFFER*Buffer, 数据长度增加,在某些情况I 可能会导 (DWORD)VirtualAddress; IN NDIS HANDLE PoolHandle.IN 致数据长度超过MTU,这种情况下,需 pTcpHeader=(PTCP I-{EADER) PVOID MemoryDescriptor.IN UINT 要对数据包进行分片、重组的算法,这 (DWORD)VirtualAddress; Offset,IN UINT Length)‘ H e a d e r L e n g t h i— (10)最后调用系统的NdisSend函 下转第1 O6页势 104 维普资讯 http://www.cqvip.com
个大后门。如果我们重新需要这个存储 过程时,可以用下列语句把它恢复过 来: sp addextendedproc xp Icmdshell。. ’xI: ̄ll70.du’ Windows2000以f=操作系统提供r这样的 由于对包的内容进行自己的处理, 修改了包的内容,而这是在协议栈之下, 所以要重新修正CheckSum。调整包的相 关信息如长度等。其部分代码如下: USH0RT Checksum(USHORT 安全机制。使用操作系统自己的IPSec可 以实现IP数据包的安全性。我仃】可以通过 对IP连接进行限制,保汪广1己的Il 既能 进行访问义能拒绝其他IP进行的端u连 需要注意的是对存储过程进行删除必 接,把来自网络上的安全成胁进行有效 *addr,int len) 须慎重,尤其是对帐号调用扩展存储过 的控制。 II 程的权限要慎重。在处理存储过程的时 三结束语 register int iLeft-len I 候,要确认一下,避免造成对数据库或 本文针对目前面临数据库安全『口J题进 register USHORT*w-addr I 应用程序的伤害。 行了研究,提出了数据库安全的重要 register int sum=0 I 5、使用协议加密 性,并对SqlSever数据库的安全配置进 USHORT answer-0 1 SQL Server使用Tabular Data Stream 行描述,提出了一系列安全解决方案, while(iLeft>1) 协议来进行网络数据交换,如果不加密 SqlSever数据库用户可根据自己的数据库 { 的话,所有的网络传输都是明文的,包 系统制定安全策略,从而提高数据库的安 sum+--*w+}{ 括密码、数据库内容等等,这是一个很 全性。在实际中应用时应该做哪些改进将 iLeft-=2; 大的安全威胁,很容易被非法入侵者在 是我们I 一步研究的重点。 } 网络中截获到他们需要的东西,包括数 if(iLeft-1) 据库帐号和密码。所以在有证书支持的 { 条件F,最好使用ssL来加密协议。 十(UCttAR*)(&answer)=*(UCHAR 6、防止被别人探测到你的TCP/IP )Wl 端口 sum+-answer l SQL Server默认使用1433端口监 [1】萨师煊、王珊.数据库系统概论[M] } 听,很多人在配置SQL Server的时候会 北京:高等教育出版社.2000-2(第三 sum=(sum>>16)+(sum&0xfff)I 把这个端口改变,以为这样别人就不能 版). [2]王为.sQL Server 2005从入门 sum+-(sa ̄n>>16)I 很知道他使用的什么端口了。其实,通 到精通[M].清华大学出版杜.2006.9 answer- sum I 过微软的l434端口的UDP探测可以很容 [5]耿冲.sQL Server 2000数据库管理 return answer 易知道SQL Server使用的什么TCP/IP端 [M】.北京:人民邮电出版杜.2001.1 5 l J 口了 我们可以在实例属性中选择TCP/ [4】钟乐海.网络安全技术[M】.北京:电 IP协议的属性,选择隐减SQL Server实 子工业出版社.2002.87. 4.结束语 例。如果隐藏了SQL Server实例,则 喇 瓣 黎 目前,采用[PSec协议实现VPN安全 将禁止对试图枚举网络』二现有的SQ I 王东升,男,1 978.9.助教,东营职业学院 保障功能是目前的最佳选择,本文对 计算机系教师 中国石油大学在读研究生. Windows环境下IPSec安全网关的实现做 Server实例的客户端所发出的广播作出响 主要研究方向为数据库安全,数据库技术应 了研究,对遇到的问题做出了相应的处理, 应。这样,别人就不能用l434来探测你 用等。 可采用各种加密算法实现网络的安全性。 的TCP/IP端口r。 徐鑫涛.男,1 980.7,助教.东营职业学院 7、修改TCP/IP使用的端口 计算机系教师 主要研究方向为网络技术与 我们可以在上一步配置的基础上, 应用、数据库原理与应用技术,高职人才培 养模式研究等。 更改原默认的1433端口。在实例属性中 选择网络配置中的TCP/IP协议的属性, [1]朱雁辉主编.Window ̄防火墙与网络封 将TCP/IP使用的默认端口变为其他端 包截获技.-K[M】.电子工业出版社.20o2、7 口 《 上接第1 04页 [2]Windows2000 DD托. 。 8、拒绝来自l434端口的探测 [5]徐佳。荆继武 实现lPSI 的一种方案. 由于l434端口探测没有限制,能够 样使得挚个驱动的开发变得比较复杂。 计算机工程[J】 2002(1):1 77_一l79 被别人探测到一些数据库信息,而且还 所以可以采取一个比较简单,容易实现的 [4j李超 。!InuxTIPS ̄协议的实现 计算机 可能遭到D 0 S攻击让数据库服务器的 处理方式。Windows操作系统可以在注册 应用[J],2002(6):69--71¨- l lCPU负荷增大,所以对Windows操作 表中对MTU的大小进行限制。所以可以在 系统来说,在IPsec过滤拒绝掉1434端口 注册表中限制MTU的大小,使得包}皮加密 郝志建(1 9 8 1一}I男,河北省新乐市 的U DP通讯,可以尽可能地隐藏你的 认证后,长度不会大于普通包比度。这个 主要研究方向:宽带网络技术 空军工程 SQL Server。 方式只需要查找注册表,在注册表巾填加 大学电讯工程学院在读硕士研究 9、对网络连接进行IP限制 孟相如空军工程大学电讯工程学院教授, 一项就可以了。从而可以避免相对复杂的 SQL Server数据库系统本身没有提供 博士生导师 l l0 分片、重组的处理。 麻海圆空军工程大学电讯工程学院在读硕士 网络连接的安全解决办法,但是 3,4校验和 研究生 . 106
因篇幅问题不能全部显示,请点此查看更多更全内容