韦 小 刚
(南瑞集团有限公司(国网电力科学研究院有限公司) 江苏 南京 210003)
随着移动信息化技术的广泛应用,移动终端的数量在快速增长,各类移动应用层出不穷,为人们的生产、生活各方面提供了许多便利。但是,提供便利的同时,移动信息化也带来了不少安全风险,如非法终端接入至内网的风险,攻击者利用合法终端对内网系统开展网络攻击。网络攻击的形式多种多样,有DoS攻击及端口扫描攻击,这种攻击会导致服务拒绝响应或者服务响应延迟较大,在网络数据传输上表现出来的是流量异常或流量过大。因此,通过对网络流量的分析,开展入侵检测及防御工作,可以有效管理网络环境[1-2],对移动信息化业务的安全运行至关重要。
目前,接入到内网的电力移动业务的流量及协议比较单一,这与网络协议繁多、复杂的移动互联网业务有本质不同。针对这种情况,本文提出一种轻量级的入侵检测与防御方法,基于网络深度数据包检测(network Deep Packet Inspection,nDPI)技术对网络流量进行分析,识别网络协议,分辨出接入到内网的电力移动业务在运行时的异常网络协议,在此基础上,对有异常网络协议的连接进行网络重定向。下面对这套轻量级的入侵检测与防御系统进行详细的阐述。
本文设计的轻量级入侵检测与防御系统主要由网络流量捕获模块、协议识别引擎、响应处置模块组成,基本软件流程图如图1所示。
图1 轻量级入侵检测及防御系统的基本软件流程
网络流量捕获模块是对终端接入网络后产生的流量按照一定的规则进行捕获;协议分析引擎是对捕获到的网络流量进行协议分析,根据既定的协议,可以分辨出业务运行过程中的异常协议,对于协议单一、流程简单的业务来说,这种方式尤为有效;响应处置模块是针对有异常协议的网络流量进行操作,根据认证结果决定是否允许终端入网。
系统的部署架构如图2所示。各类终端,如PC机、笔记本、平板电脑、手机等通过无线网络(如运营商网络或自建WIFI网络)访问部署在内网的应用服务器,中间需要经过接入路由器、应用防火墙、接入交换机等多种网络设备。由于无线网络自身存在大量的安全隐患,为了保证内网资源不被攻击者破坏或嗅探,需要对终端访问过程中经过的网络流量进行检测,对检测到的异常进行告警及处置。通过交换机的端口镜像功能把进入应用服务器的流量镜像到入侵检测与防御系统的一个空闲端口供入侵检测与防御系统分析有无异常。
与一般的入侵防御系统串接在关键网络路径上不同的是,本文设计的入侵检测与防御系统采取旁路工作,这样不仅不影响终端访问应用服务器时的数据转发性能,还能避免因为自身的软件缺陷造成网络节点故障,从而直接导致终端无法正常访问应用服务器。此外,认证服务器也是采取旁路工作,接在交换机上,跟入侵检测与防御系统及终端保持网络上贯通。
图2 整体部署架构
对网络流量捕获是开展流量监测工作的前提[3-5],流量捕获的方式很多,本文采用Linux系统上libpcap库。libpcap(Packet Capture Library)即数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库,它是一个独立于系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架,Linux上抓包工具tcpdump即基于libpcap开发而成。下面是本文对于libpcap的使用过程:
(1) 获取网络接口 确定入侵检测与防御系统上需要监听的网络接口,该接口可以指定或由libpcap自动选择,具体函数为pcap_lookupdev()。
(2) 打开网络接口 确定需要监听的网络接口后,需要对该接口进行初始化,具体函数为pcap_open_live。
(3) 获取数据包 打开网络接口后就已经开始监听,这是libpcap使用过程中的核心部分,可采用函数pcap_dispatch来完成获取数据包的任务。
(4) 释放网络接口 这个功能是在操作完网络接口后对接口进行释放,具体函数为pcap_close。
捕获网络流量的目的是进行网络协议识别,分辨出异常协议,便于后续响应处置,本文基于nDPI技术实现网络异常协议识别。nDPI是由ntop维护的一个openDPI[6-7]的扩展库,从OpenDPI发展而来,解决了OpenDPI的诸多问题,并具备相当完善的应用层协议识别功能[8-9],几乎成为DPI领域的唯一之选。本次系统对nDPI源码进行二次开发,针对电力特定的业务,增加可识别到的协议类型,对异常协议进行告警,并通知后续的响应处置模块对产生异常协议的连接及时处理,具体过程如下:
(1) 初始化协议识别引擎 调用ndpi_init_detection_module()初始化协议识别引擎的检测模块。
(2) 设置需要识别的协议 调用ndpi_protocol_detection_bitmask2()设置协议的掩码,调用ndpi_load_protocols_file()加载协议文件,通过协议文件指定具体识别哪些协议。
(3) 识别协议 调用ndpi_detection_process_packet()可以获得报文的具体信息,包括协议流、报文的详细信息等数据。业务运行过程中,系统根据指定的协议进行协议匹配,无法完成匹配的则为异常协议。针对异常协议,可追溯到具体的终端,从而便于后续的响应处理。
(4) 统计分析 系统对业务运行过程中识别到的协议进行统计,并对异常协议的处理进行可视化展示。
对于发起异常协议的终端(PC机、笔记本、平板电脑、手机等)的系统响应处置如图3所示。终端向应用服务器发起访问请求后,本文设计的入侵检测与防御系统通过网络流量捕获模块获取到网络上的流量并进行监测。通过协议识别引擎检测到异常协议后,追溯该异常协议所发起的终端,并向该终端发起网络重定向报文,将终端的访问重定向至认证服务器。认证服务器受到终端发起的请求后,则推送认证提示,只有通过认证的终端才被允许接入网络,认证通不过则被阻断。
图3 响应处置流程示意图
设置协议文件时,可指定具体的网络协议及端口,也可指定协议中包含的IP地址,甚至是可指定具体的网站名,系统可以采用字符串匹配的方式识别出相应协议。图4为系统检测后的统计分析结果之一,其中HTTP和ICMP为协议文件中指定的协议,13.9%是协议文件中未指定的协议,进一步分析后,最终有13.5%的流量被系统认为协议异常,将会进行后续的响应处置。在实际的电力业务运行过程中,协议类型单一,通过本文设计的系统比较容易区分出与业务无关的其他协议,承载这些无关协议的流量将会被网络重定向,以便进一步检查终端使用人员是否有攻击行为。
图4 初步统计分析结果
本文考虑到现有入侵检测系统及防御系统实施部署的复杂性,面向电力业务的实际运行特点,对入侵检测及防御功能合二为一,提出了一种轻量级的入侵检测与防御系统的设计、实现方案,并给出了运行测试结果,系统经过权威检测机构检测误报率及漏报率均为0%,现场试点过程中的运行稳定。本系统的设计与实现对网络流量监测、协议分析及异常终端的响应处置等都有较高的参考价值。