IPSec(IP Security)协议作为一种重要的安全技术已经在互联网中得到了广泛应用。NAT技术将传入数据报和外发数据报中的地址和端口进行转换,缓解了IPv4地址不足的问题,解决了在不需要为网点中的每台计算机都分配全球有效IP地址的情况下,在网点中的主机都可通过地址转换访问互联网。然而,IPSec和NAT技术不兼容。如果同时使用IPSec和NAT技术,NAT会修改IPSec包的源和目的地址以及端口号,进而破坏IPSec报文的完整性。
IPSec对报文的保护通过头部认证协议AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)实现。
IPSec协议有两种工作模式:隧道模式和传输模式。
传输模式和隧道模式数据包封装格式如图5.15所示。
图5.15 传输模式和隧道模式下数据包的封装格式
在总公司与分公司之间建立IPSec隧道。当分公司与总公司的专线出现故障时,这无疑是一种安全又有效的连接方案。
但是,在实际连接过程中,有的分部只能先由网络中的NAT设备进行地址转换,然后才能访问Internet。另外,分部还有访问Internet的需求,有些分部在网关上同时配置了IPSec和NAT。下面具体说明如何使得IPSec和NAT一起工作。
IPSec会禁止任何对数据包的修改,但是NAT处理过程是需要修改IP数据包的IP包头、端口号才能正常工作的。AH会认证整个包头,当NAT修改了IP头之后,IPSec就会认为这是对数据完整性的破坏,从而丢弃数据包。因此,AH是不可能与NAT一起工作的。
而ESP并不保护IP包头,所以,在NAT网络中,只能使用IPSec的ESP认证加密方法,不能用AH,不能修改受ESP保护的TCP/UDP,那就再加一个UDP报头。
1.NAT-T的操作步骤
(1)判断双方是否支持NAT-T,这是IKE协商的第一阶段,双方通过发送一个VENDOR ID来识别是否支持NAT-T。
(2)判断通信链路上是否存在NAT设备,使用IP地址和端口号进行HASH运算,送往对方进行校验。一旦发现NAT,在IKE协议的第二阶段将IKE的UDP 500浮动到UDP 4500端口。
(3)进行ESP处理。
如果发现存在NAT设备,NAT-T模块自动对IPSec数据包进行再次封装,封装时使用UDP包头和附加的NAT-T包头作为额外的地址信息。具体的UDP封装IPSec ESP报文过程如图5.16所示。
图5.16 UDP封装IPSec ESP报文过程
(4)报文传送。
完成NAT-T封装后的UDP数据包被正确路由到远端IPSec主机。
(5)报文解封装过程。
远端IPSec主机在收到NAT-T数据包后进行解包处理,首先将图5.16中的UDP头部去掉,重新计算IP头中的可变字段,再进行ESP解封装,并还原之后的IPSec数据包。
在预共享密钥身份确认体系中,使用名字作为身份标识,也能穿越NAT。该方式不需要搭建CA服务器,使用较广。
IPSec穿越NAT的数据封装如图5.17所示:
(1)发起方在协商报文中携带自己的WAN口IP地址信息10.35.2.1;
(2)发送方的协商报文经过NAT处理后,其源IP地址变成了202.2.2.20;
(3)响应方接收到协商报文后发现源地址202.2.2.20和协商报文中的IP地址信息10.35.2.1不一致,即判断中间经过了NAT设备,并告知发送方,双方要使用UDP封装。
根据NAT设备所处的位置和地址转换功能的不同,IPSec的NAT穿越方式也不同。
(1)情况一:NAT转换后的分公司公网地址未知,总公司使用模板方式,具体组网如图5.18所示。
图5.17 IPSec穿越NAT的数据封装
图5.18 情况一组网图
总公司既然使用了模板方式,那就无法主动访问分公司,只能由分公司主动向总公司发起访问。
总公司和分公司网关的关键配置如表5.6所示。
表5.6 情况一中总分公司网关的关键配置
(2)情况二:NAT转换后的分公司公网地址可知,总公司使用模板方式或IKE方式,具体组网图如图5.19所示。
图5.19 情况二组网图
总公司和分公司网关的关键配置如表5.7所示。
表5.7 情况二中总分公司网关的关键配置
(3)情况三:NAT设备提供NAT Server功能,总公司使用IKE方式主动访问分公司,具体组网图如图5.20所示。
图5.20 情况三组网图
在NAT设备上配置NAT Server,将202.2.2.20的UDP 500端口和4500端口分别映射到172.16.30.1的UDP 500端口和4500端口,具体配置如下:
nat server protocol udp global 202.2.2.20 500 inside 172.16.30.1 500
nat server protocol udp global 202.2.2.20 4500 inside 172.16.30.1 4500
报文到达NAT设备后,匹配反向Server-map表,源地址转换为202.2.2.20,即可实现分公司到总公司方向的访问。
下面通过一个实例详细说明IPSec的NAT穿越技术的配置过程和测试结果。具体的组网情况如下:
(1)分支机构和总部通过Eudemon_A、Eudemon_B、Eudemon_C相连,Eudemon_C为总部的内网设备;
(2)Eudemon_A、Eudemon_B、Eudemon_C之间路由可达;
(3)Eudemon_A具有固定的公网地址。
该企业网络需实现以下需求:
(1)分支机构要访问总部的服务器设备,且传输的数据需要进行加密。
(2)为保护内网设备,分支机构不能直接访问总部,需要进行地址转换后才能访问。
(3)在Eudemon A和Eudemon B之间建立一个安全隧道,在EudemonC上配置NAT功能,实现NAT与IPSec兼容,对PCA代表的子网(10.3.3.x)与PCB代表的子网(10.1.1.x)之间的数据流进行安全保护。具体要求如下:
①安全协议采用ESP协议;
②加密算法采用DES;
③验证算法采用SHA1-HMAC-96;
④10.35.3.0/24网段的用户可以访问公网。
Eudemon C配置NAT,该设备也可以是路由器。
只能采用IKE自动协商方式配置IPSec。
IPSec的NAT穿越配置案例的组网图如图5.21所示。
图5.21 IPSec的NAT穿越配置案例组网图
在华为防火墙Eudemon500上配置IPSec的NAT穿越,需要进行如下操作。
步骤1 配置Eudemon A
[Eudemon A]ike local-name EudemonA
[Eudemon A-Ethernet3/0/0]ip address 10.35.3.1 255.255.255.0
[Eudemon A]firewall zone trust
[Eudemon A-zone-trust]add interface ethernet 3/0/0
[Eudemon A]interface ethernet 2/0/1
[Eudemon A-Ethernet3/0/1]ip address 10.35.2.1 255.255.255.0
[Eudemon A]firewall zone untrust
[Eudemon A-zone-untrust]add interface ethernet 3/0/1
1.配置静态路由
[Eudemon A]ip route-static 10.64.3.0 0 10.35.2.2
2.定义用于包过滤和加密的数据流(www.xing528.com)
[Eudemon A]acl number 3000
[Eudemon A-acl-adv-3000]rule permit ip source 10.35.3.0 0.0.0.255
[Eudemon A]acl number 3001
[Eudemon A-acl-adv-3001]rule permit ip destination 10.35.3.0 0.0.0.255
3.配置域间包过滤规则
[Eudemon A]firewall interzone trust untrust
[Eudemon A-interzone-trust-untrust]packet-filter 3000 outbound
[Eudemon A-interzone-trust-untrust]packet-filter 3001 inbound
4.配置缺省包过滤规则
保证Untrust区域的主机可以ping通防火墙的接口。
[Eudemon A]firewall packet-filter default permit interzone local untrust
5.配置IPSec安全提议
[Eudemon A]ipsec proposal pro
[Eudemon A-ipsec-proposal-pro]transform esp
[Eudemon A-ipsec-proposal-pro]encapsulation-mode tunnel
(1)设置ESP协议采用的验证算法
对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。
[Eudemon A-ipsec-proposal-pro]esp authentication-algorithm sha1
(2)设置ESP协议采用的加密算法
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法。
[Eudemon A-ipsec-proposal-pro]esp encryption-algorithm des
6.配置IKE Peer
[Eudemon A]ike peer p1
[Eudemon A-ike-peer-p1]exchange-mode aggressive
(1)配置与对端共享的pre-shared key
[Eudemon A-ike-peer-p1]pre-shared-key abcde
[Eudemon A-ike-peer-p1]remote-address 202.2.2.2
(2)配置IKE Peer的ID类型为名字认证
[Eudemon A-ike-peer-p1]local-id-type name
[Eudemon A-ike-peer-p1]remote-name EudemonC
(3)配置NAT穿越
[Eudemon A-ike-peer-p1]nat traversal
7.配置安全策略
[Eudemon A]ipsec policy map2 10 isakmp
[Eudemon A-ipsec-policy-isakmp-map2-10]security acl 3000
[Eudemon A-ipsec-policy-isakmp-map2-10]ike-peer p1
[Eudemon A-ipsec-policy-isakmp-map2-10]proposal pro
8.引用安全策略
[Eudemon A]interface ethernet 3/0/1
[Eudemon A-Ethernet3/0/1]ipsec policy map2
步骤2 配置Eudemon C
Eudemon C的基本配置与Eudemon A的配置思路相同,需要注意的是在配置对端地址时,需要配置为202.2.2.1。
步骤3 配置Eudemon B
1.完成Eudemon B基本配置
[Eudemon B]interface ethernet 4/0/0
[Eudemon B-Ethernet4/0/0]ip address 10.35.2.2 255.255.255.0
[Eudemon B]firewall zone trust
[Eudemon B-zone-trust]add interface ethernet 4/0/0
[Eudemon B]interface ethernet 4/0/1
[Eudemon B-Ethernet4/0/1]ip address 202.2.2.1 255.255.255.0
[Eudemon B]firewall zone untrust
[Eudemon B-zone-untrust]add interface ethernet 4/0/1
2.配置静态路由
[Eudemon B]ip route-static 10.35.3.0 255.255.255.0 10.35.2.1
[Eudemon B]ip route-static 10.64.3.0 255.255.255.0 202.2.2.2
3.定义用于包过滤的数据流
[Eudemon B]acl number 3000
[Eudemon B-acl-adv-3000]rule permit ip source 10.35.3.0 0.0.0.255
4.配置域间包过滤规则
[Eudemon C]firewall interzone trust untrust
[Eudemon C-interzone-trust-untrust]packet-filter 3000 outbound
5.配置NAT
[Eudemon C]nat address-group 1 202.2.2.20 202.2.2.20
[Eudemon C]firewall interzone trust untrust
[Eudemon C-interzone-trust-untrust]nat outbound 3000 address-group 1
配置完成后PC1可以ping通PC2。在总部网关Eudemon C上查看IKE SA的建立情况:
因为中间NAT设备上配置了源NAT转换,所以分支机构网关A上只有分支机构到总部方向的会话,没有总部到分支机构方向的会话。
总之,在实际组网应用中,如果发起者位于一个私网内部,而它希望在自己与远端响应者之间直接建立一条IPSec隧道,这种情况会对部署IPSec VPN网络造成障碍。这就需要IPSec与NAT进行结合。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。