刁振军,张琦,曹子建
(西安工业大学计算机科学与工程学院,陕西西安710021)
互联网技术得到越来越好的发展环境,从国家到地方,所有与社会息息相关的一切慢慢都靠互联网进行连接,所有的一切看起来都变得高效而且有序。互联网也经历了信息互联网到工业互联网的慢慢转型,我们身边的一切变得智能也变得方便,微信、支付宝、共享单车等,都是互联网的产物我们身处其中,享受着互联网带给我们的高效和便利。同时,我们又像在这个互联世界里裸奔,我们如今的一切都与信息打交道,而我们几乎所有的信息都暴露于互联网之上,无论是快递外卖,还是网银报名等等,信息不但存在故意泄露的问题,更为严重的是非法的信息收集,也就是常说的网络入侵[1]。
入侵的目的更多是为了个人数据,企业数据,甚至国家机密,高风险往往伴随着高收益,抱着这些想法,越来越多不法分子铤而走险,开始将黑手伸向了这样的互联网世界,所以在网络威胁愈加严重的今天我们需要重视网络安全问题,需要有效的防护措施来应对这种威胁,保护我们每一个公民的信息数据乃至生命财产的安全[2]。
在过去的十几年间,入侵检测作为网络安全的主要技术,受到了研究者的广泛关注,主要的方法有:遗传算法[3]、浅层神经网络[4]、支持向量机[8-10]、群智能算法[7]、极限学习机[12]、信息熵[14]、独立成分分析[13]、主成分分析[15]、深度神经网络[5-6]以及新的特征提取[16]等方法。虽然检测方法日益增多,但提出主动入侵防御思想的方法还不多见,本文在使用开源Snort技术搭建入侵检测平台的基础上,对入侵检测的规则集进行管理和分析,采用代理技术构建安全的网络入侵防御系统。
入侵检测(Intrusion Detection,ID)是入侵防御系统的关键环节,主要由以下3种方式实现:模式匹配、统计分析和完整性分析。模式匹配是对捕获到的数据和已发现的入侵系统误用模式数据库进行相对比,去发现是否存在违背安全策略的动作。统计分析方法为先给信息描述对象创建一个统计描述,统计正常使用的一些属性,如果测量值超过了正常偏差,可以判定有异常行为产生。完整性分析则更关注对象是否被修改,主要包括目录、内容及属性,在发现被修改,感染病毒的应用程序有很好的效果。
入侵防御系统(Intrusion Prevention System,IPS)通过监视网络资源的传输行为,可以对一些异常或具有攻击性的行为进行实时响应。主要特点如下:1)嵌入式运行。IPS以嵌入模式运行,实时阻拦有问题数据包,对该数据流的剩余流量进行过滤。2)深入分析和控制。IPS深入应用层对流量进行抓取和分析,可以精确控制每一条链接的流量是否放行还是过滤。3)入侵特征库。入侵特征库是IPS的灵魂所在,通过一条条规则来约定流量的正常与否,特征库必须时常更新,涵盖最新的恶意行为特征。4)高效处理能力。IPS必须具有特别高效的处理数据能力,尽可能减少对用户正常的流量使用产生影响。
为了增强入侵检测技术的主动防范能力,代理技术通常被利用作为主动防御的插件,代理相当于运行与后台的一个守护进程,一旦Snort检测到入侵行为后,代理就被触发,通知防御设备进行相应的拦截以及相应的处理。比较常用的是Guardian和Snortsam代理。本文采用Snort和Guardian代理技术融合的方式设计和开发入侵防御系统。
系统总体设计需要满足入侵检测与防御的需要,既要安全可靠,又要具有一定的先进性。在架构设计和功能模块的划分上,应充分的分析和整合项目的总体需求和预期的目标,尽量遵循高内聚、低耦合的设计原则,既要保证各个模块的独立性,也要保证模块间联系的简单性和易扩展性。
入侵检测模块从最基本的功能上讲,至少要包括检测功能和显示功能。入侵检测使用Snort+Base结合实现:Snort利用libpcap从网络层抓取数据包,数据包经过Snort解码引擎解析到链路层协议的结构体中,对应用层协议进行解码操作。然后,数据包会被送至预处理器中进行检查和操作。在检测引擎处理之前预处理器会检查数据包是否会有什么行为产生。最后,数据包被送到Snort检测引擎。检测引擎则会通过规则链中的特征对应用层数据内容进行规则匹配。Snort通过检测引擎、预处理器和解码引擎输出报警。网络入侵检测原理如图1所示。
图1 网络入侵检测原理图
入侵防御模块是最终要实现的目的模块,体现整个系统的最终价值,实现功能为对恶意流量的应对措施,采取的方法为IP屏蔽定向阻止访问,过滤恶意访问流量,具体设计思想为处理Snort日志,提取报警流量的源IP地址,并通过调用iptables添加进防火墙的DROP策略,使用防火墙阻断掉此源IP地址的连接,设定屏蔽时间为86 400秒,达到对入侵行为的防御目的。网络入侵防御的原理如图2所示。
图2 网络入侵防御原理图
Snort捕获数据包主要通过数据包捕获函数库libpcap,将网卡设置为混杂模式可以监听通过网络的所有流量,libpcap工作在数据链路层,Snort通过调用libpcap函数库可以直接从网卡上获取数据流量,对于被捕获的数据流量包,调用解码引擎对数据链路层的原始数据开始解码,将解析后的数据包存储到内存指针指向的数据结构。
Snort通过预处理器实现规则匹配的高效性,影响匹配效率的主要问题,简单规则的匹配,攻击模式常见会产生较高的误报率,模式复杂又会产生漏报,根本原因还是在于特征语言表达能力是有限的,还有对协议的解析不够Snort含有多个预处理器,主要功能是用来进行包重组、协议解析和异常检测。
Snort规则是具有有特定语法的代码程序,以文本的形式书写,然后保存在一种特殊的.rule格式文件中,Snort检测引擎启动时,所有的Snort规则会根据规则头和规则选项生成一种三维链表方便以最大的检索速率进行特征匹配。
网络数据流量通过抓包引擎捕获然后提交给分析引擎,如果数据流量匹配到了规则集中的特征那么就会触发报警,并生成相应的日志文件,紧接着会被提交给相应的输出插件进行处理。输出插件会在数据包捕获,预处理器处理,检测引擎全部处理完之后进行输出处置,也就是Snort的全部工作流程。如图3所示。
图3 Snort工作流程
值得注意的是,本文采用Base对Snort进行管理。Base是一个基本安全分析引擎,它可以被用来处理检测到的安全事件数据,使用Base连接MySQL数据库可以将入侵信息直观的表现在Web应用程序中,方便管理员及时了解到入侵信息。
基于上述分析,入侵防御功能主要由以下7个步骤组成。
1)在虚拟机里搭建服务器模拟所在校园内网的服务器,从主机向虚拟机发送请求。
2)模拟入侵者对服务器进行出于信息搜集目的的恶意扫描。
3)同时启动Wireshark对扫描过程进行抓报分析。
4)分析数据流量的报文内容,再Nmap进行扫描的时候会发送UDP探测包,内容为300个字节的字符C,以此为特征书写可匹配的Snort规则,添加进入侵防御系统的Snort规则库中。
5)使用命令开启入侵检测,执行入侵防御功能。
6)再次使用Nmap对校园服务器进行端口扫描测试,恶意行为被检测到发出报警信息。入侵者IP地址被加入iptables的DROP策略。
7)入侵者访问被阻止,切断网络连接,防止进一步的恶意行为。
本部分采用Snort和iptables结合的方式对入侵防御功能模拟。首先修改Snort配置文件,配置输出插件为output alert_fast:alert,以alert_fast的格式输出Snort日志,接着读取日志信息,Guardian处理Snort日志,提取报警流量的源IP地址,并通过调用iptables添加进防火墙的DROP策略,使用防火墙阻断掉此源IP地址的连接,设定屏蔽时间为86 400秒,达到对入侵行为的防御目的。
1)添加一条Snort测试规则,内容为全匹配。如图4所示。
图4 添加Snort规则
2)获取服务器的网卡信息。如图5所示。
3)开启 Apache、PHP、MySQL、iptables、入侵防御系统服务。如图6所示。
4)Snort检测到的匹配了规则的访问服务器信息。如图7所示。
图5 获取服务器网卡信息
图6 开启入侵防御相关服务
图7 Snort检测到匹配信息
5)模拟入侵者访问源被添加进Iptables的DROP策略中。如图8所示。
图8 iptables的DROP策略
6)入侵者IP被屏蔽,不能正常连接服务器,实现入侵防御的功能。如图9所示。
图9 入侵者不能访问服务器
通过上述模拟测试,系统可以完成入侵检测及入侵防御的主要功能。但是在效率上还不够完善,还需细化和改进。后续需要改进的问题有:1)检测功能只对已知威胁有用;2)研究更有效的模式匹配算法的实现;3)在防御时,若能从应用层进行防御,效果更好,并能减小误报。
文中针对日益复杂的网络入侵威胁[17-18],在对非法入侵和异常流量进行研究的基础上,提出了对异常流量检测并防御的一些方法。文中重点讨论了两个问题:第一,入侵检测的实现。讨论了流量的抓取和分析关键因素并给出了本系统的解决方案。使用Snort规则链,提高对恶意流量的匹配速度。第二,入侵防御的实现。在入侵检测的基础上,给出了具体的防御措施,实验结果证明了防御方法的可行性。实验证明,使用本文中的思想可以完成对网络环境提供一定的保护措施。此外,在系统设计过程中,通过学习防御手段。了解了网络入侵手段的丰富多样性。Snort规则集提供遇到的恶意流量规则,提高了对异常流量的精确匹配。
[1]李威,杨忠明.入侵检测系统的研究综述[J].吉林大学学报:信息科学版,2016,34(5):657-662.
[2]徐鑫.入侵防御系统攻击特征库的建立方法研究[D].成都:电子科技大学,2011.
[3]朱红萍,巩青歌,雷战波.基于遗传算法的入侵检测特征选择[J].计算机应用研究,2012,29(4):1417-1419.
[4]杨雅辉,黄海珍,沈晴霓,等.基于增量式GHSOM神经网络模型的入侵检测研究[J].计算机学报,2014(5):1216-1224.
[5]高妮,高岭,贺毅岳,等.基于深度信念网络的入侵检测模型[J].东南大学学报(英文版),2015(3):339-346.
[6]王声柱,李永忠.基于深度学习和半监督学习的入侵检测算法[J].信息技术,2017(1):101-104.
[7]肖立中,刘云翔,陈丽琼.基于改进粒子群的加速K均值算法在入侵检测中的研究[J].系统仿真学报,2014,26(8):1652-1657.
[8]谭爱平,陈浩,吴伯桥.基于SVM的网络入侵检测集成学习算法[J].计算机科学,2014,41(2):197-200.
[9]武小年,彭小金,杨宇洋,等.入侵检测中基于SVM的两级特征选择方法[J].通信学报,2015,36(4):19-26.
[10]刘铭,黄凡玲,傅彦铭,等.改进的人工蜂群优化支持向量机算法在入侵检测中的应用[J].计算机应用与软件,2017(1):230-235.
[11]江颉,王卓芳,陈铁明,等.自适应AP聚类算法及其在入侵检测中的应用[J].通信学报,2015,36(11):118-126.
[12]康松林,刘乐,刘楚楚,等.多层极限学习机在入侵检测中的应用[J].计算机应用,2015,35(9):2513-2518.
[13]杜晔,张亚丹,黎妹红,等.基于改进FastICA算法的入侵检测样本数据优化方法[J].通信学报,2016,37(1):42-48.
[14]魏琴芳,成勇,胡向东.基于信息熵的无线传感网入侵检测遗传算法[J].重庆邮电大学学报:自然科学版,2016(1):107-112.
[15]刘珊珊,谢晓尧,徐洋,等.基于PCA的PSO-BP入侵检测研究[J].计算机应用研究,2016,33(9):2795-2798.
[16]吴丽云,李生林,甘旭升,等.基于PLS特征提取的网络异常入侵检测CVM模型[J].控制与决策,2017,32(4):755-758.
[17]许学添.基于模糊约束的网络入侵检测方法[J].西安工程大学学报,2016,30(5):627-632.
[18]张耀元,郭淑明,汪小雨.基于入侵检测技术的MANET安全研究[J].电子科技,2016,30(5):627-632.