梁建辉,侯昱辉,刘润福,何靖刚,李志强
(中国铁路兰州局集团有限公司 信息技术所,兰州 730000)
近年来,铁路信息网络受到的外部攻击量不断增长,安全形势日益严峻,对运输生产安全造成潜在威胁。国家“十四五”规划和2035年远景目标纲要[1]提出了建设数字中国的方针,建设智能铁路,全面加强网络安全体系和保障能力建设[2]。高速铁路大规模建设以来,我国铁路装备的智能化和信息化程度越来越高,新技术的应用及大量的互联网出口,使得铁路网络环境越来越复杂化、多样化、边界模糊化,铁路网络安全环境面临着严峻挑战。铁路作为重要的交通基础设施,信息化程度较高,也是网络攻防战中被攻击的重点目标之一,面向铁路的攻击方式也从单一的扫描渗透攻击转为复杂的高级持续性威胁(APT,Advanced Persistent Threat)攻击[3]。
网络安全靶场是进行新型网络攻击技术检验、网络安全竞赛、网络安全人才培养的重要工具。美国早于2008年发布了关于开展“国家网络安全靶场”项目研发工作的通知,并同时启动国家赛博靶场建设项目[4]。2016年美国白宫公布了《网络安全国家行动计划》,再次对网络基础设施水平、专业人才队伍建设等5个方面作出全面提升[5]。而我国的网络安全靶场产业发展与国际水平还存在差异,国内一些科研机构及高校建立了一些满足特定需求的网络安全靶场[6-7],但尚缺少面向铁路行业的网络安全靶场。
为此,本文基于Docker技术,设计了集网络安全竞赛、仿真渗透测试、网络安全人才培养等功能为一体的网络安全靶场。
网络安全靶场采用容器化分布式架构,遵循分层设计理念,将板块设计细化为数据资源层、功能实现层及应用代理层,如图1所示。
图1 网络安全靶场总体架构
1.1.1 数据资源层
数据资源层内容包括比赛库、网络安全培训题库、仿真题库、MariaDB及Redis缓存5部分,数据资源采用容器方式实现。其中,MariaDB用于存储用户的登录信息、答题信息、积分排行榜及靶场配置信息等;Redis用于缓存用户登录凭证、动态靶机的ID及端口号等,为不需要频繁更新的数据提供缓存服务,从而加快靶场响应时间,提升用户使用体验。
1.1.2 功能实现层
网络安全靶场、动态靶机及Frp Client是功能实现的关键组件,均以容器方式运行,可充分发挥容器轻量级、快速部署、快速恢复、易扩容的优势。其中,网络安全靶场通过使用传输层安全协议加密的Docker应用程序接口连接Docker Swarm集群,控制动态靶机的生成与销毁;动态靶机底层环境使用Docker Swarm 集群,通过Frp Client程序将靶机端口进行映射,实现在网站前端点击按钮,即可生成用户专属靶机,避免因共享环境而影响用户使用体验,可提高网络安全比赛时公平性,同时方便后续扩展Swarm集群节点,提升靶场整体性能。
1.1.3 应用代理层
该层主要负责靶场与用户间的交互。多个网络安全靶场容器通过Nginx做反向代理负载均衡,使用IP Hash负载均衡算法来分配用户所访问到的靶场容器,并利用Nginx缓存静态资源,在一定程度上增加吞吐量、提高靶场可用性并提升靶场响应时间。
不同角色用户通过Web页面登录、访问靶场,可得到不同的靶场使用权限。Frp用于反向代理,包括服务器端Frp Server和客户端Frp Client。应用代理层中的Frp Server通过与功能实现层中各类型靶机的Frp Client程序连接,以反向代理的方式,可使不同子域名或用同一IP的不同端口访问到对应的靶机。
网络安全靶场网络环境部署如图2所示。
图2 网络安全靶场网络环境部署
用户通过终端交换机可直接与网络安全靶场实现网络互通。由于服务器底层均采用Docker Swarm技术,因此搭建网络安全靶场的服务器数量不受限制,后续可根据用户数量动态扩展节点,提高靶场同时在线用户数。服务器1主要运行网络安全靶场平台、MariaDB、Redis、Frp Server 4种类型的容器,用于搭建靶场网站,网络安全靶场容器直接映射网站端口提供服务。其余服务器主要用于运行Frp Client容器及给用户下发动态靶机,3种类型的动态靶机通过Frp Client与服务器1上的Frp Server相连接,通过Frp程序反向代理动态靶机,用户即可通过服务器1的不同端口号访问对应靶机。
基于Docker的网络安全靶场可实现以下功能。
(1)网络安全竞赛功能。该靶场可作为夺旗赛(CTF,Capture The Flag)平台,采用动态独立靶机技术,每道动态靶机题目被开启后,会自动生成一个虚拟题目环境,并为每个用户生成一个独一无二的Flag,可防止作弊行为。当题目完成后,用户可将动态靶机销毁,网络安全靶场会快速释放动态靶机所占系统资源,以便其他用户快速生成动态靶机。
(2)仿真环境渗透测试功能。通过添加仿真环境容器镜像,可快速生成仿真环境动态靶机;通过对仿真环境靶机的渗透测试和反复攻击,可提升网络信息系统相关人员的实战技能水平;根据对仿真环境靶机的渗透测试,发现铁路系统中可能存在的安全漏洞和风险,找到铁路安全防护中的短板,可优化防御策略,提高相关人员的网络安全防御能力和意识。
(3)网络安全人才培训功能。靶场可作为日常网络安全理论知识及网络安全实操的学习平台,为不同水平、不同类型的用户提供难度逐步进阶的课程及实操环境,使其逐步掌握网络安全的理论知识、实操技能及攻防技战法,从而提高铁路行业网络安全人才的培养效能。
Docker使用Linux虚拟网络技术,Docker 中的每个网络接口默认都是虚拟的接口。容器之间要相互通信的前提是两者必须有属于同一个网络的网卡。网络安全靶场中所有关键模块及动态独立靶机均以Docker 容器的形式存在,容器之间资源是相互隔离的。靶场使用Docker容器网络控制动态独立靶机及各容器之间的连通与隔离,使用Docker Compose定义和运行多容器网络。
网络安全靶场包含CTF、MariaDB、Redis缓存、Frp Server、Frp Client共5个容器组件。其中,容器CTF即网络安全靶场平台网站;用户的个人信息和答题信息等存储到MariaDB容器中;缓存数据存储到Redis容器中;Frp Client与Frp Server容器通过Frp网络相互连接,用于反向代理Web、Pwn及仿真环境这3种类型的动态靶机。靶机控制开启销毁模块由Python脚本完成,通过网络安全靶场管理界面进行统一管理和控制。网络安全靶场容器架构如图3所示。
图3 网络安全靶场容器架构
Frp网 络、Internal网 络 和Default网 络 都 以Bridge桥接模式连接。其中,Internal网络为容器内部通信网络,用于网络安全靶场与MariaDB、Redis缓存间的通信,不对外提供端口映射;Default网络为网络安全靶场容器的Web界面所在网络,对外提供端口映射,可创建多个网络安全靶场容器,并使用Nginx做负载均衡及缓存;Frp网络为Frp Client与Frp Server程序所使用,通过Frp程序的反向代理功能可将动态靶机通过Default容器网络对外提供端口映射。
Docker Swarm是 Docker的集群管理工具,它的主要作用是把多个Docker主机作为一个整体来进行管理,通过一个入口管理多个Docker主机上的资源[8]。任何安装Docker的主机都可以使用Docker Swarm功能快速扩展多个主机。网络安全靶场利用Docker Swarm的集群管理能力,能够将题目容器分发到不同的节点上运行。用户每次请求启动题目容器时,靶场将根据Swarm调度算法,选出适合的节点运行该题目容器。
网络安全靶场采用了动态独立靶机技术。每个动态独立靶机存在的时间可由参赛队伍进行设置,防止空闲靶机占用系统资源。靶机可随时延长时间或销毁,方便用户使用全新的环境进行测试。动态独立靶机通过 Frp提供容器端口映射,服务端部署的Frp Server程序通过Frp Client应用程序接口,使用基本身份验证控制动态独立靶机端口,该程序能够安全、便捷地将动态独立靶机对外提供服务的IP暴露给用户。
本文设计的网络安全靶场已成功应用于中国铁路兰州局集团有限公司,取得的效果如下。
(1) 在网络安全人才的培养选拔方面,该靶场已用于举办网络信息系统职业技能竞赛,有利于发掘网络安全人才、建立完善的网络安全人才培养体系。
(2) 在网络安全日常培训方面,该靶场已用于开展日常网络安全理论知识学习、网络安全竞赛知识学习、网络安全渗透测试实战学习等,进一步提高了铁路网络信息系统相关技术人员网络安全技能和攻防技能。
(3) 在仿真环境渗透测试方面,该靶场已用于构建部分业务应用系统运行环境并进行仿真测试,有利于预先发现网络安全隐患,降低测试成本。
本文设计了基于Docker技术的网络安全靶场,该靶场可用于日常的网络安全学习、竞赛、仿真环境渗透测试等,有助于铁路行业开展网络安全人才的培训选拔、内部攻防演习、网络安全日常培训等工作,进而为铁路网络安全管理提供技术支撑,为下一步开展铁路网络安全靶场体系构建提供参考。