NAT与IPSec协议兼容性问题及解决方案_祝芝梅_第1页
NAT与IPSec协议兼容性问题及解决方案_祝芝梅_第2页
NAT与IPSec协议兼容性问题及解决方案_祝芝梅_第3页
NAT与IPSec协议兼容性问题及解决方案_祝芝梅_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

收稿日期: 2003- 09- 15 作者简介: 祝芝梅( 1979- ) , 女, 浙江江山人, 硕士研究生, 主要研究方向: 计算机信息网络安全; 李之棠( 1951- ) , 男, 湖北监利人, 教授, 博士生导师, 博士, 主要研究方向: 光互连并行计算机体系结构、 计算机信息网络安全. 文章编号: 1001- 9081(2004) 03- 0027- 04 NAT 与 IPSec协议兼容性问题及解决方案 祝芝梅, 李之棠 ( 华中科技大学 计算机学院, 湖北 武汉 430074) ( zzmconnie163. com) 摘 要: 概要介绍了 IPSec 协议和网络地址转换( NAT ) 协议的基本原理, 着重介绍了 IPSec 协议 与 NAT 协议所存在的矛盾, 最后介绍了采用 UDP 封装方式实现 IPSec 报文穿越 NAT 的完整方案。 关键词: IPSec; 网络地址转换( NAT) ; IKE; RSIP; UDP 封装; NAT 穿越 中图分类号: TP393 文献标识码: A NAT and IPSec Protocol Compatibility Problem and Solution ZHU Zh- i mei, LI Zh- i tang (School of Computer Science and Technology ,Huazhong University of Science and Technology, Wuhan Hubei 430074, China) Abstract: This article introduces the basic theory of IPSec and network address transform (NAT) protocol at first, then introduces the conflict between IPSec and NAT protocol; at last, explains the way to solve this conflict IPSec NAT -traversal by UDP encapsulation. Key words: IPSec; NAT; IKE; RSIP; UDP encapsulation; NAT -traversal IPSec 作为 IP 层的安全协议, 为 IP 包提供了身份验证和 机密性保护, 加上安全的 Internet 密钥交换协议( IKE) , 就构 成了整个 IP 层次上的安全体系。现在 IPSec 在网络安全特 别是虚拟专用网(VPN)领域中起着重要作用。而 NAT 是将 子网内的私网地址映射为一个或者几个 Internet 上的公网地 址, 它有效地解决了 IPv4 地址短缺问题。 目前, 网络地址转换( NAT) 和因特网安全协议( IPSec) 在 全球范围的互联网环境中已经得到了广泛的应用。令人遗憾 的是, 由于协议设计并没有充分考虑到这一结合趋势, NAT 与 IPSec 的结合应用是当 IPSec 数据流传输路径中需要完成 NAT 转换时存在着严重的兼容性问题: IPSec 协议的目的是 保证数据传输的安全, 防止信息泄漏, 导致 NAT 无法访问到 所需的地址和端口信息; 其次, IPSec 协议要求对数据包进行 认证防止在传输中被修改, NAT 对包头的地址和端口号字段 的修改将被视为非法的, 破坏数据的完整性。这一不兼容性 已经严重地限制了 NAT 和 IPSec 的应用范围, 引起了国内外 广泛的关注。 1 IPSec 和 NAT 的工作原理 1. 1 IPSec 工作原理 IPSec包括安全协议( 验证头 AH 和封装安全载荷 ESP) 、 安全联盟(SA)、 密钥管理和安全算法等, 它定义 IP 数据包格 式和相关基础结构, 以便为网络通信提供端到端加强的身份 验证、 完整性、 抗重播和保密性等, IKE 还提供按需要的安全 协商和自动密钥管理服务, IPSec 可保障主机之间、 安全网关 之间( 如路由器或防火墙) 或主机与安全网关之间的数据报的 安全, 它可以实现各种方式的 VPN: ExtraNet VPN、 IntraNet VPN 和远程访问 VPN。 1. 2 NAT 工作原理 NAT 是对不同地址域( address realm) 中的地址进行转换 的一种方法, 通过在地址域边界对数据包头的地址/ 端口字段 进行替换并为转换前后的数据项建立映射关系, 使得数据包 可以在不同地址域间透明转发。当运行 NAT 的计算机收到 来自内部客户机的数据包时, 它替换掉 IP 包头, 并且将客户 的端口号和相应的内部 IP 转换成它自己的端口号和公共 IP, 然后将数据包送到目的主机。并且, 它把映射关系保存到 一张表里, 以便将目的主机的回答回送到客户机上。当运行 NAT 的计算机收到目的主机的回答时, 它再次替换 IP 包头, 并且把数据包回送给客户机。 2 NAT 与 IPSec 的不兼容性 NAT 和 IPSec之间存在的兼容性问题主要分为三类: 第一类不兼容是 NAT 所固有的, 是由 NAT 协议本身决 定的。这些不兼容性会在所有的 NAT 设备上出现。 1) IPSEC AH 和 NAT 由于 AH 要对整个 IP 包进行完整性保护, 但 NAT 需要 对外出包的源地址和进来包的目标地址进行修改, 这样导致 IPSEC 认为 IP 包遭到非法修改, 而丢弃该包。ESP 方式不存 在这个问题。 2) 校验和与 NAT 如果 IP 包中封装的上一层协议( 传输层) 是 TCP 或者 UDP, 那么在这些协议的协议头中都有一个校验和字段, 它跟 IP 头中的 IP 地址有关, 在 NAT 的处理中, 当 NAT 更改了 IP 头中的源地址或者目的地址后, 会重新计算并修改传输层的 第 24 卷第 3 期 2004 年 3 月 计算机应用 Computer Applications Vol. 24, No. 3 Mar. , 2004 校验和字段。 这样 NAT 如果按普通的处理更改该字段, 这个 IP 包就 会被对方的 IPSec 丢弃。而如果不修改该字段的值, 那么在 接收端, 虽然 IPSec 不会丢弃这个包, 但传输层在进行校验和 校验时会出错, 这个报文还是会被传输层丢弃。对于隧道模 式, 不存在这个问题。 3) IPSEC 和 NAPT NAPT 是最常用的一种 NAT, 它需要更改传输层的端口 号, 而如果一个 IP 包受到了 IPSec 的保护, 那么传输层的端 口号一定会受到完整性保护, 这样在 NAPT 对端口号进行修 改后, 该 IP 包就会被接受方的 IPSec丢弃。 4) IKE 协商时的固定目标端口和 NAPT NAPT 的工作原理是通过不同的端口号来区分不同的连 接。但是 IKE 协商时, 进行的 UDP 通信的端口号一般是固 定的(通常是 500), 这时就会出现问题。 5) 传输模式的 IPSec的进入策略检查和地址标识的矛盾 在 IPSec 的进入处理中, 进行了解密和身份验证后, 需要 利用选择符来检查自己的 SPD, 以确认是否采用了符合自己 SPD 中规定的安全策略, 如果不符合就丢掉该包, 其中选择符 为 , 选择符信息来自 IP 包的包头。对于传输模式的 IPSec 包, 该 IP 包的 IP 头经 过了 NAT 的处理, 取出的源地址和源端口是经过 NAT 处理 后的值, 但是外部主机配置安全策略的时候只能根据对方主 机的内部地址或名称来配置。这是因为 NAT 的地址变换是 动态的, 外部主机在配置 SPD 的时候不可能知道 NAT 会如 何对从对方主机到自己的连接进行地址变换。 6) NAT 所固有的方向性 NA T 常常要求发初始包通过 NA T 以便建立进入的映射 状态, 方向性使得 NAT 后面的主机不能主动请求建立 IPSec SA。 第二类不兼容是某些 NAT 在实现方面上的弱点。这些 特殊的处理方式也会引起 IPSec 与 NAT 的不兼容。 例如, 有些 NAPT 不能处理非 UDP/ TCP 报文, 不能通过 SCTP、 ESP、 AH 的报文; 有的 NAPT 不能正确处理 IP 数据包 的分片, 特别是在数据包的分片过小, 使数据包的 UDP/TCP 协议头和 IP/ IPSec 协议头不在同一分片中时会引起不兼容; NAT 对映射表的超时时间设定得不一样, 这样即使 IKE 报文 被正确地改变, 这种状态有可能不久就被删除。 第三类不兼容是由于有些不完整的 IPSec 和 NAT 协同 工作的解决方案造成的, 这类帮助解决兼容性问题的方法反 而引起新的不兼容性。 例如, 在某些 NAT 中, 它知道 IKE 要用 UDP 端口 500 进行密钥交换, 就保存 UDP 端口 500不进行 NAT 转换, 但在 完整的 IPSec 与 NAT 协同工作的解决方案中, 不得不对这种 情况进行特殊处理; 对于 ISAKMP 头的检查: 现在一些 NAT 通过 IKE cookies 来区分进来的 IKE 报文, 就像使用原端口来 多路复用一样, 也会产生 re -keying 的问题, 因为第一阶段的 re -keys 通常不会和以前的报文使用相 同的 cookies。一些 NAT 可能会对 ISAKMP 有效载荷进行解析, 但却不能按顺 序正确处理 ISAKMP 有效载荷, 或者不能支持 vendor_id, 而 这对于 IKE 阶段的协商来说是重要的。 3 IPSec 和 NAT 兼容性要求 IPSec -NAT 的兼容性方案的目的是扩大 IPSec 的适用范 围。评价其兼容性需要遵从如下标准: 1) 可配置性。IPSec -NAT 兼容性方案所需的配置时间 必须小于 IPv6 所用的时间。由于 IPv6 的配置需要改变路由 器和主机, 同样需要改变路由器和主机的 IPSec -NAT 兼容性 方案将和 IPv6 的时间规模大体相当。这样, 一个 IPSec -NAT 兼容性方案应当只对主机进行改变, 而不对路由器进行改变。 2) 模式支持。IPSec -NAT 兼容方案最小必须支持 IPSec ESP 通道模式穿过 NAT。既然 IPSec 传送模式用于通道协议 如 L2PT, IPSec -NAT 兼容方案需要支持使用 ESP 的 IPSec 传 送模式, 至少要保护没有嵌入 IP 地址出现的 UDP 流量。 3) 互操作性。IPSec -NAT 兼容性方案必须能与现有的 IPSec实现进行互操作。这样, 在没有 NA T 的地方, 已有的 IPSec 实现必须能和 IPSec -NA T 兼容实现进行通信。这意味着 IPSec - NAT 兼容方案必须具有后向兼容性, 可以检查到 NAT 的存在, 这样, 只在需要时才使用 NA T 兼容性必要的改变。 4) 协议的兼容性。IPSec -NAT 穿越这种方法并没有完 全解决与协议相关的一些问题。因此, ALGs 这种方法对一 些协议依然是需要的, 所以 IPSec -NAT 兼容性方案应该兼容 ALGs。 5) 防火墙的兼容。IPSec -NAT 兼容性方案必须支持防 火墙管理者能够建立一条简单的规则, 去允许或者不允许 IKE 和 IPSec -NAT 穿越的报文。 6) 安全性。IPSec -NAT 兼容性方案不能将另外的安全 弱点引入 IKE 或 IPSec。例如, 一个可接受的方案必须证明 它没有引入新的 DoS 或欺骗弱点。 4 基于 UDP 封装的解决方案 为了解决兼容性问题, 通常对 NAT 协议进行修改, 或者 对 IPSec 协议进行修改, 或者把 NAT 放在 IPSec 前面。IETF 提出了 RSIP 方案和 UDP 方式。 RSIP 方案: 采用其他域作为子网内主机复用的标识, 如 IPSec 的 SPI 标识域和 IKE 的 cookie。这个方法的优点是消 除 NAT 网关在某些方面的局限性, 缺点是 RSIP 改变了现有 的网络物理结构, 如果用 RSIP 网关取代 NAT 网关的话, 花 费巨大。所以短期内无法得到普遍应用。 UDP 方式: 不在 NAT 网关上复用, 而将数据包传递给 对方安全网关, 在对方网关上完成 IPSec 处理后, 再进行 NAT 处理。这个方法的优点是不需要修改 NAT 网关; 缺点是报 文开销增加。相比之下, UDP 方式更合适一些。 4. 1 UDP 封装方式首先要解决的问题 由于普通的 NAT 已经成为一种标准, 因此如果能透明 NAT 地穿透而不被用户察觉, 那将是非常吸引人的。可将 IPSec 报文封装到一个普通的 UDP 报文中, 完成 NAT 的穿 越。但使用 UDP 封装方式, 有几个必须解决的问题。 虽然 IKE 报文是 UDP 报文, 但是在 IKE 协议中, 要求源 地址和目标地址都必须是 UDP 500 端口, 如果不作任何修 改, IKE报文在穿过 NAT 后源端口就发生了变化。所以, 第 一个问题, 在 IKE 协商前必须知道两个对等实体间是否存在 NAT。 IKE 发起方的源地址经过 NAT 变换后, 会发生改变, 而 IKE 的响应方在 IKE 第二阶段协商前必须知道发起方经过 NAT 变换前的源地址。第二个问题是 IKE 协商响应方在 IKE 第二阶段协商前应该预先知道相应的地址转换。 NAT 变换是动态的, 也就是说经过一段时间后, 映射后 28 计算机应用2004 年 的 IP 地址、 端口号4会发生变化, 这时候, 新的 将不为对等通信方所识别。第三个问题是如何保持 NAT 的映射关系不会动态改变。 4. 2 解决方法 在 IKE 协商前发送 NAT 探测报文、 来探测 NAT 是否存 在; 将普通 IPSec 通信报文封装到一个 UDP 中, 这样既保护 了通信, 又可以穿透 NAT 网关; 在发起方定时发送激活消息 ( keepalive) , 来保持所建立的 NAT 映射。 对于 IPSec 响应方而言, 封装在 UDP 中的 IPSec 普通通 信报文的源地址是私网地址, 不能唯一表示 Internet 上的一 台主机。因此, 在对 IPSec 报文完成解封装和解密后, 要再进 行 NAT 映射, 以保证源的唯一性。图 1、 2 表明 UDP 封装是 如何帮助 IPSec 报文通过 NAT 的。 图 2 标准的 IPSec 报文通过 NAT/ NAPT 隧道模式( 有 UDP 封装) 图 1 标准的 IPSec 报文通过 NAT/ NAPT 隧道模式( 没有 UDP 封装) 4. 3 过程 1) 探测对等方是否支持 NAT -T(NAT 穿越) : 首先, 发送 IKE探 测报 文, 在第 一 阶段 的前 两条 消 息中, 增加 VID ( vendor id)载荷, 以验证双方是否支持 NAT -T。 2) 探测 NAT 是否有存在。如果已经确认对等方支持 NAT -T, 在 IKE 第一阶段协商的第三、 四条消息中附加 NAT - D(NAT Discovery Payload) 载荷, 其载荷表现为 IP 地址和端 口号的哈希。 HASH = HASH(CKY -I | CKY -R | IP | Port) 在这两条消息中, 应该包括至少两个 NAT -D 载荷, 第一 个载荷是远端 IP 和端口的哈希。剩下的载荷是本地 IP 和端 口的哈希( 本地的地址可能不止一个, 其中每一个地址都要生 成一个 NAT -D 载荷)。如果一方收到的第一个 NAT -D 载荷 和自己发出去的任意一个本机的 NAT -D 载荷一致, 那么说 明在对等实体间没有 NAT 的存在, 否则, 表示 NAT 对 IP 地 址和端口作了动态映射。 3) 是否进行 NAT -T( NAT 穿越)。如果在 IKE 的第一 阶段发现通信链路上有 NAT 存在, 在第二阶段协商 IPSec SA 的时候, 也要作相应的变化。这里, 除了 IPSec 所定义的的传 输模式和隧道模式, 另外添加两种新的模式: UDP 穿越隧道 模式和 UDP 穿越传输模式。同时, 在第二阶段的前两条消息 增加一个 NAT -OA 载荷, 这个载荷包含了发起方的 IP 地址。 4) UDP 封装和解封装( NAT -T 模块)。当有进入 NAT - T 的加密报文到达 UDP500 端口后, IKE 模块确认其为 NAT - T 报文, 然后将其交给 NAT -T 模块, NAT -T 模块完成报文的 NAT -T 解封装, 将 IPSec 报文交给 IPSec 模块完成解密处理。 对于外出的 IPSec 报文, 当模块发现其 SA 模式是 UDP 穿越 隧道模式或者 UDP 穿越传输模式时, 就将加密后的报文交给 NAT -T 模块, NAT -T 模块将 IPSec 报文封装到 UDP 中, 通过 UDP500端口发送出去。 5) NAT 变换。IPSec 解封装后得 到的报文的 IP 源地址是私网地址, 不 能唯一地表示 Internet 上唯一的一台 主机, 所以, 完成 IPSec 解封装后, 要对 其源地址再做一个 NAT 变换, 将私网 地址变换为公网地址, 该公网地址就是 NAT -T 中外层 UDP 包的地址, 也就是 网关的 IP 地址。这样, 相当于本应该 在 NAT 网关做的 NAT 变换, 由于 IP 报的载荷加密, 而转移到对等 VPN 网 关或主机上做。同样地, 从 VPN 网关 或主机外出的 IP 报文, 首先做 NAT 反 变换, 将 IP 报文的目的地址映射回私 网地址, 再做 IPSec 处理。 6) keepalive 消息。IPSec 发起方 (隐藏在 NAT 的后面) 必须定时发送 keepalive 消息, 保证 NAT 网 关对 其 UDP500 端口的动态映射不会被删除。 IPSec 接收方收到 keepalive 消息, 直接 丢弃该报文。但是, 如果 IPSec 接收方 x秒后还没有收到 keepalive 消息, 则删除该 IPSec SA, 表示对 等方 NAT 穿越的映射关系已经被删除。 图 3 在传送模式下 IPSec 报文UDP 封装前后的格式 7) 报文数据流向。进入的报文到达 UDP500 端口以后, 交给 NAT -T 模块解封装, 将载荷里的 IPSec 报文交给 IPSec 模块解密, 对源地址做 NAT 变换, 再交给 IP 层。外出的 IP 包, 则首先对目的地址做 NAT 反变换, 然后交给 IPSec 模块 29第 3期祝芝梅等: NAT 与 IPSec 协议兼容性问题及解决方案 加密, 再交给 NAT -T 模块做UDP 封装, 然后通过 UDP500 端 口发送出去。 图 4 在隧道模式下 IPSec 报文 UDP 封装前后的格式 5 安全分析 1) UDP 本身容易受到拒绝服务攻击( DOS) , 而 UDP 封 装方法要求在 IPSec 处理之前去掉 UDP 封装, 这样受到否认 服务攻击的概率就会大大增加, 而且, UDP 封装后的数据包 是将整个 IPSec 协议数据单元作为载荷, IPSec 的安全性被大 大降低了。用 UDP 封装还不能很简单地处理 IPSec 协议族 中的 AH 协议。 2) 在网络设计和安全协议定义时, 仍然要考虑处理重叠 的私有地址。比如说位于不同地理位置的客户要使用同一个 私有地址网段。 3) 如果在 IPsec 报文路径中遇到 NAT, NAPT 还是不能 修改应用载荷, 如 FTP、 IRC、 SNMP、 LDAP 和 H. 323。 4) IKE 中如果把地址作为标识符, 那么会和 NAT 冲突, 这个兼容性问题也没有得到解决。利用 IKE 进行 SA 协商 时, 如果第一阶段采用的模式是主模式, 并且身份验证方式采 用预共享密钥方式, IKE 要根据 IP 包头中的 IP 地址找出对应的 预共享密钥, 如果在途中, IP 包的源地址被 NAT 修改了, 那么对 方就不能找到正确的预共享密钥, 导致 SA 的协商失败。 6 总结 NAT 技术能够让局域网中的多台机器以一个或少量 IP 地址连上因特网, 缓解目前 IPv4 地址资源紧张问题。同时, IPSec 技术能较好解决目前因特网上面临的各种安全威胁, 因 而也越来越受到人们的广泛关注。 但 NAT 的核心是修改 IP 头中的 IP 地址, 而 IPSec 却要 保护 IP 包, 因此同时使用这两种技术会出现很多问题。本文 介绍的 UDP 封装解决 IPSec 的 NAT 穿越的方法, 不需要对 Ipsec 或 IKE 进行修改, 实现最为简单, 但有一定的局限性。 参考文献 1 http: / / www. ietf. org/ internet -draft/ draft-aboba -nat - ipsec -02. txt EB/ OL , 2003- 09. 2 http: / / www. ietf. org/ internet -draft/ draft -iet- f ipsec -udp - encaps - 06. txt EB/ OL , 2003- 09. 3 http: / / www. ietf. org/ internet -draft/ draft -iet- f ipsec -nat - t -ike -05. txt EB/OL , 2003- 09. 4 http: / / www. ietf. org/ internet -fraft/ draft -iet- f ipsec -nat -reqts -04. txt EB/ OL , 2003- 09. 5 Kent S , Atkinson R . RFC 2402 , IP Authentication Header S , 1998. 6 Kent S, Atkinson R. RFC 2406, IP Encapsulating Security Pay - load ( ESP) S , 1998. 7 Harkins D, Carrel D. RFC 2409, The Internet Key Exchange ( IKE) S , 1998. ( 上接第 26 页) Mr 为接收方中间件接收到消息的时间; Tr 为消息离开发送 方中间件的时间; Ts 为消息离开接收方中间件的时间。 图 3 中间件所占传送比例 图 4 消息转发时间耗费 由图 3 可见, 当消息长度为比较小的时候, 中间件在整个 时间延迟里占用较大比例, 但是, 随着消息长度的增加, 中间 件的处理能力明显增

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论