前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当GRE遇上IPSec后,安全性终于有了保障

当GRE遇上IPSec后,安全性终于有了保障

作者头像
网络之路一天
发布2024-01-08 19:57:19
2720
发布2024-01-08 19:57:19
举报
文章被收录于专栏:网络之路网络之路

回顾GRE配置

BJ_FW身后有一个服务器,CS_FW与CD_R后面的client需要访问这个服务器,希望不把服务器暴露在公网上面,能实现的那就只有GRE与IPSec了,但是GRE没有安全性保障,IPSec有安全性,那能不能把GRE与IPSec结合起来一起使用呢?下面先回顾下GRE的配置,把各个点之前打通,然后在这个基础上面尝试下用IPSec部署,看看有什么样的效果。

配置要点

代码语言:javascript
复制
图里面BJ与CS是防火墙,而CD是一台路由器,配置方面没什么区别
BJ与CS需要考虑安全策略的放行,这个可以参考下29篇(这里为了简化策略全放)
各自可以通过静态或者动态路由来完成内网之间的互通。
基础接口对接配置这里就不在详细讲解了。
代码语言:javascript
复制
1、internet基础配置
#
interface
GigabitEthernet0/0/0
ip address 202.100.1.254 255.255.255.0
#
interface
GigabitEthernet0/0/1
ip address 61.128.1.254 255.255.255.0
#
interface
GigabitEthernet0/0/2
ip address 103.15.1.254 255.255.255.0
#
2、BJ_FW的基础配置
#
interface
GigabitEthernet1/0/0
undo shutdown
ip address 202.100.1.1 255.255.255.0
#
interface
GigabitEthernet1/0/1
undo shutdown
ip address 192.168.10.254 255.255.255.0
#
firewall zone trust
add interface GigabitEthernet1/0/1
#
firewall zone untrust
add interface GigabitEthernet1/0/0
#
ip route-static 0.0.0.0
0.0.0.0 202.100.1.254
#
nat-policy
rule name internet
 source-zone trust
 destination-zone untrust
 source-address 192.168.10.0 0.0.0.255
 action source-nat easy-ip
3、CS_FW的基础配置
#
interface
GigabitEthernet1/0/0
undo shutdown
ip address 61.128.1.1 255.255.255.0
#
interface
GigabitEthernet1/0/1
undo shutdown
ip address 192.168.20.254 255.255.255.0
#
firewall zone trust
add interface GigabitEthernet1/0/1
#
firewall zone untrust
add interface GigabitEthernet1/0/0
#
ip route-static 0.0.0.0
0.0.0.0 61.128.1.254
#
nat-policy
rule name internet
 source-zone trust
 destination-zone untrust
 source-address 192.168.20.0 0.0.0.255
 action source-nat easy-ip
4、CD_R的基础配置
#
interface
GigabitEthernet0/0/0
ip address 103.15.1.1 255.255.255.0
#
interface
GigabitEthernet0/0/1
ip address 192.168.30.254 255.255.255.0
#
ip route-static 0.0.0.0
0.0.0.0 103.15.1.254
#
acl number 3000 
rule 5 permit ip source 192.168.30.0 0.0.0.255
#
interface
GigabitEthernet0/0/0
ip address 103.15.1.1 255.255.255.0
nat outbound 3000

(至此除了安全策略没展示,其余基础配置都完成了,安全策略参考下29篇,这里暂时全放)异地局域网如何互通?(GRE篇)

5、GRE相关配置

总体下来BJ_FW创建了2个tunnel隧道,一个对接CS防火墙,一个对接CD路由器,然后加入了安全区域,CS防火墙这边也创建了一个对接BJ防火墙,注意的是路由器这边,路由器的tunnel接口是tunnel0/0/0,跟防火墙有点区别,其余的配置是一样的,然后不需要加入安全区域。

6、局域网之间互通

代码语言:javascript
复制
隧道已经通了 ,互通的话很简单,可以通过静态路由,或者是跑动态路由,这里简单点来跑个静态路由。
[BJ_FW]ip route-static
192.168.20.0 24 Tunnel 0
[BJ_FW]ip route-static
192.168.30.0 24 Tunnel 1
[CS_FW]ip route-static
192.168.10.0 24 Tunnel 0
[CD_R]ip route-static
192.168.10.0 24 Tunnel 0/0/0

7、实际测试

在测试之前记得检测客户端的地址是否都设置了,并且服务器开启了80服务

访问没问题,GRE打通是没任何问题了,现在主要的是如何把IPSec融入进来。

GRE Over IPSec

上面GRE已经连通了,但是缺乏安全性,这个时候IPSec出现了,IPSec不单单可以自己建立隧道,还可以兼容GRE等协议,为他们提供保护,这种方式称为 GRE over IPSec,就是数据报文先通过GRE封装,然后在进行IPSec封装。为什么有这样的技术出现呢?第一个是可以兼容更多的协议来保护这些不支持安全加密的(比如GRE、L2TP等),第二个是IPSec本身它是不支持组播的,假设我们的站点之间想跑OSPF协议,如果单纯的IPSec则无法实现,有了GRE的帮忙,那么组播就能够轻松穿越了,所以GRE over IPSec会更加的灵活。

GRE与IPSec是如何封装的?

GRE与IPSec结合,这两种协议都是需要封装的,那么在IPSec里面有两种封装方式,一个是隧道、一个是传输模式,那么在GRE over IPSec中应该选择哪种呢?这就需要来了解下数据包的结构了。

在GRE OVER IPSec里面,传输模式跟隧道模式都能来保护私网的数据安全,但是仔细看其实可以发现隧道模式比传输模式多了一个IPSec的头部,这是加重了数据包的长度,会容易导致分片,所以在实际中比较推荐使用传输模式。(这个是GRE over IPSec,包括后面要讲解的L2TP over IPSec都会采用传输模式),因为GRE产生新的头部已经能够保证数据包穿越互联网了,而且里面的内容被ESP进行保护加密了,达到了最终的需求。

GRE over IPSec配置

GRE上面已经配置完毕了,这里来加入IPSec进来,看看IPSec这块有什么不一样的。

配置里面几个不一样的地方,这里说明下

(1)ACL,平时的IPSec匹配的是双方的局域网之间的流量,但是这个是GRE over IPSec,IPSec保护GRE,而GRE里面包含了实际的数据,最终可以看到ACL匹配的各自公网地址的GRE流量。

(2)IKE提议与IPSec安全提议:会发现比之前的有点不一样,之前都是防火墙对接,所以可以用默认参数,但是有了路由器就不一样了,因为路由器的版本不一样,支持的算法强度不一样,很多没法支持最新的算法,所以要改成一致,否则会出现建立不起来的情况。

(3)BJ_FW这边由于是同时跟CS与CD建立,所以需要两个IPSec policy策略,来各自匹配,但是也可以简化成一个。(视频会单独演示下)

实际测试

问题出现了,CS_FW的建立成功了,但是CD_R却失败了,这里说下,并不是配置有问题,而是模拟器路由器与防火墙对接IPSec有这个问题,博主特意用debug看了下报错,提示是共享密钥不一致,我反复确认过,也重新输入过,确定是一致的。

为了严谨性,我本想用真机AR系列路由器桥接到网络里面跟防火墙对接,结果发现桥接不起来,只好放弃了。

直连网关都不通,这台不通的只能用防火墙来代替了。

当替换这套台路由器后,用防火墙就建立起来了。

BJ_FW这边有两对IKE的SA,一对是来自于CS的,一对来至于CD。

两个IPSec SA里面有点特别就是在FLOW里面后面有个47,47表示协议号,就是GRE协议,说明保护的就是GRE,而且我们这里用的是隧道模式,并没有用传输模式,建立是可以建立的,但是会多出来20个字节。

抓包也可以看到,IPSec新头部后,就是ESP,然后里面的内容都被加密了,所以看不到,那么改成传输模式看看。

代码语言:javascript
复制
ipsec proposal 1
encapsulation-mode transport

(3个点都改成传输模式,然后要执行reset ike sa reset ipsec sa,重新建立)

重新建立后就变成传输模式了,这种会更加优化。

抓包看,用传输模式效果比隧道模式少了一个新的IPSec头部,而GRE新IP头部跟IPSec新IP头部生成的内容其实是一样的,所以在GRE over IPSec下面比较推荐用传输模式。(注意是标准的GRE over IPSec使用传输模式,在后面的案例里面会讲解利用GRE衍生出来的特殊方案,就不一定可以用传输了)

GRE over IPSec总结

  • 实际配置就是GRE+IPSec的配置,ACL与封装模式这里有点区别注意下
  • GRE over IPSec标准情况下,双方之间都是需要公网地址建立的,而且建议使用传输模式
  • 注意分片问题,建议把GRE的tunnel隧道MTU减少在1380~1400之间,尽量减少分片
  • 如果分支之间不需要互访,又跑动态路由协议,建议使用多个进程进行区分
  • 分支少的场景可以直接使用静态路由协议
  • GRE over IPSec 只要tunnel隧道不在NAT范围内,比如案例里面在GRE区域,则不需要做NONAT策略。

思考:GRE over IPSec的安全策略应该如何放行?(参考GRE与IPSec策略篇)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络之路博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档