APP下载

防火墙与IPsec协同实现L3/L2一体化VPN*

2020-09-27申玲钰朱振乾

通信技术 2020年9期
关键词:网关报文数据包

申玲钰,朱振乾

(1.中国电子科技集团公司第三十研究所,成都 610041; 2.中国电子科技网络信息安全有限公司,成都 610041)

0 引言

随着网络技术的迅速发展,网络安全问题得到了广泛关注。IPsec 与防火墙是网络安全保护中常用的技术。防火墙主要用于保护内网的安全,是内部网络与公共网络间的第一道屏障,它按照一定的安全策略,对网络中传输的数据包进行检查,以决定对其进行放行或丢弃。IPsec 协议工作在IP 层上,为IP 数据包提供机密性、完整性、身份鉴别和访问控制等安全服务。将IPsec 与防火墙两种技术结合,可更有利于保护整个网络的数据安全。L3VPN工作在OSI 网络模型中的第三层,将公网模拟为一台网关,IPsec 是目前L3VPN 技术开发中使用最广泛的一种安全协议标准。L2VPN 工作在OSI 网络模型中的第二层,可以隐藏地域限制,能够真正地做到即插即用、高度透明。本文基于Linux 操作系统,提出了一种使用防火墙与IPsec 协同实现L3/L2 一体化VPN 的方法,该方法可做到在网关与网桥模式下自由切换。

1 基于NetFilter 的防火墙

Netfilter 是Linux 下的一个防火墙框架,它具有很好的可扩展性和安全性。NetFilter 虽结构相对独立,但它是嵌入内核IP 协议栈的一系列调用入口,将其设置在报文处理的路径上,和IP 报文的处理是完全结合在一起的。NetFilter 定义了一套钩子函数,在网络报文流过协议栈的几个关键点插入处理过程,五个HOOK 点如下:

NF_IP_PRE_ROUTING,在数据包经过简单处理后,路由选择前执行;

NF_IP_FORWARD,在数据包经过路由选择后如需转发时执行;

NF_IP_LOCAL_IN,在数据包经过路由选择后如目的地址是本机时执行;

NF_IP_LOCAL_OUT,在本机进程发出数据包做路由选择前执行;

NF_IP_POST_ROUTING,在数据包传输到网络之前执行。

防火墙系统另一重要组成是IPTables 的包选择系统,它包含四个表,优先级从高到底依次为Raw表、Mangle 表、Nat 表、Filter 表。

Raw表,决定数据包是否被状态跟踪机制(Conntrack)处理;

Mangle 表,可修改数据包的MARK、TTL、QOS 等;

Nat 表,用于网络地址转换;

Filter 表,用于过滤报文,不作任何修改,接受或拒绝。

网络报文在基于NetFilter 的防火墙中的处理流程如下图所示:

图1 网络报文在基于NetFilter 的防火墙中处理流程

2 防火墙与IPsec 协同实现L3VPN

IPsec VPN 是一种在公共网络中建立安全可靠虚拟专用网的技术,使用IPsec 协议保障IP 数据包的安全传输。IPsec 提供了认证和加密两种安全机制,认证机制可用于身份鉴别及验证数据在传输过程中是否存在篡改攻击,加密机制用于保证数据传输过程的机密性。IPsec VPN 工作在网络层,与网络协议栈联系紧密,适用性广泛。

IPsec VPN 与防火墙协同工作的典型应用场景如图2 所示,某企业总部需与其支部及移动用户间,在公用互联网中建立其虚拟专业网络,该虚拟专业网络包含加密、认证、权限分配、访问记录、安全监测等一系列安全手段。

图2 网关模式下防火墙与IPsec 协同工作应用场景图

在Linux 内核系统中,IPsec 的数据封装安全载荷协议(Encapsulating Security Payload,ESP)及认证头协议(Authentication Header,AH)是注册为传输层协议,在传输层进行封装和解封装处理,在ESP 和AH 协议过程中调用加解密算法实现对报文的处理。现将防火墙及IPsec 技术相结合实现防火墙L3VPN,网络层数据报文的包过滤及加解密处理流程如图3 所示:

内网数据外出处理流程:内网数据包首先进入防火墙的NF_IP_PRE_ROUTING 链,在该链处进行跟综连接,然后进入NF_IP_FORWARD 链进行转发及基于状态的包过滤等安全处理,符合规则的数据包最后进入NF_IP_POST_ROUTING 链,在此链中用定义的HOOK 函数进行VPN 处理。VPN 处理首先查找SPD 数据库获取处理策略,若为密通策略则得到相应的SA 进行IPsec 封装加密和认证处理,若为明通策略直接通过,若为丢弃策略直接拒绝。最后将包进行分片处理(封装后包长将增加),发送至外网中。

外网数据进入处理流程:外网数据进入防火墙的NF_IP_PRE_ROUTING 链后,由定义的HOOK函数判断其是否为IPsec 包,若是则进行IPsec 解封装解密及认证处理,解封装成功后由路由模块判定是本地处理还是转发。若为本地处理则进入NF_IP_LOCAL_IN 链对数据包进行包过滤、规则检测等安全处理,以决定接收还是丢弃。若为转发则进入NF_IP_FORWARD 链进行转发及基于状态的包过滤等安全处理,符合规则的数据包最后进入NF_IP_POST_ROUTING 链,在此链中用定义的HOOK 函数查找该数据包的策略。若策略显示数据包还需进行VPN 处理,则再进行相应的IPsec 处理,最后将数据包转发至正确网络接口。

图3 网关模式下网络报文在L3VPN 中的处理流程

3 防火墙与IPsec 协同实现L3/L2 一体化VPN

实际应用中,防火墙有时工作在网桥模式下,需要设计L2VPN 以保护局域网间数据传输的安全性。如图4 所示,同一个局域网内用户1 与服务器A 之前交互的数据除了要经过防火墙的规则筛选以外,还需进行机密性保护,用户2 与服务器B 之间交互的数据只需要通过防火墙的规则筛选直接明通。针对以上的应用场景,现介绍一种网桥模式下防火墙与IPsec 协同实现L2VPN 的方案。

图4 网桥模式下防火墙与IPsec 协同工作应用场景图

在Linux 内核中,基于NetFilter 的网桥实现机制中增加了BROUTING 链,对应的网桥模式下防火墙的配置工具为Ebtables,Ebtables 中的Broute 表用于控制数据包是进行二层转发还是三层转发。当网络报文进入网桥中的BROUTING 链后,通过扩展其Broute 表及自定义HOOK 函数,将需要机密性保护的网络报文上传至三层NF_IP_PRE_ROUTING 链中,进而经过图3 所示的IPsec 处理及包过滤等安全处理,其他网络报文直接在二层进行包过滤及规则匹配。

综上所述,基于防火墙与IPsec 的L3/L2 一体化VPN 的实现方案如图5 所示。该方案主要运用了Linux 内核中的NetFilter 框架,通过一定的规则配置可实现网关与网桥自由切换,且只需一台一体化设备就能完成L2VPN 和L3VPN 的连接,实际应用中可降低网络复杂度及运营成本。

图5 防火墙与IPsec 协同实现L3/L2 一体化VPN

4 结语

本文介绍了Linux 中的防火墙框架NetFilter 及其包选择系统IPTables 及Ebtables,描述了网关网桥两种模式下网络报文在防火墙中的处理流程。提出了一种防火墙与IPsec 协同实现L3/L2 一体化VPN 的设计方案,该方案具有在网关与网桥模式下自由切换、配置简单、功能灵活等特点,是一种有效且适用范围广泛的网络防御机制,而且在网桥上实现可以隐藏地域限制,能够真正做到即插即用、高度透明。

猜你喜欢

网关报文数据包
基于J1939 协议多包报文的时序研究及应用
基于FPGA的工业TSN融合网关设计
二维隐蔽时间信道构建的研究*
一种主从冗余网关的故障模式分析与处理
低轨星座短报文通信中的扩频信号二维快捕优化与实现
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
C#串口高效可靠的接收方案设计
基于6LoWPAN的嵌入式多网关系统设计与实现