开发一个功能完善的NIDS复杂度比较高,本章只介绍一个简易版的恶意流量的分析系统的实现过程。它的应用场景是对办公网出口的流量进行分析,通过分析TCP、UDP与HTTP数据包的内容,从中发现一些外网发起的攻击,如员工的PC是否中了后门等。
恶意流量分析系统的架构
恶意流量分析系统部署于办公网出口或办公网与互联网数据中心(Internet Data Center,IDC)之间,通过交换机将办公网出口的流量镜像到一台Linux服务器中,然后在该台Linux服务器中部署恶意流量分析系统的传感器,传感器的作用是分析所有的流量,并将TCP、UDP的五元组信息及HTTP的内容发送到后端的Server中进行分析。
如果发现有攻击者的蛛丝马迹就展示出来或报警。恶意流量分析系统的架构图
以上架构适合小规模的办公网络的流量分析,如果办公网流量规模较大,传感器采集数据的框架就不能使用gopacket了,需要更换为性能更高的DPDK包,采集到的数据也不能直接传到Server端处理,而是需要通过Fluentd等专业的日志采集工具将数据转发到Kafka中,然后再从Kafka中消费使用。
思路
开发一个简单的入侵检测系统(IDS)需要创建一个基本系统,该系统可以监视网络流量或系统日志,以发现可疑或恶意活动的迹象。
下面是构建简单IDS的一步一步指南:
定义目标:确定IDS的范围和目标。决定是否要监视网络流量或系统日志,或者两者都监视。
确定您想要检测的可疑活动类型(例如,端口扫描、暴力攻击等)。
数据收集:决定要监视的数据源。对于基于网络的IDS,可以使用libpcap等库从网络接口捕获数据包。对于基于主机的IDS,您可能会监视系统日志或特定的日志文件。
流量分析:分析捕获的数据,以识别与已知攻击类型相关的模式或签名。您可以使用正则表达式、字符串匹配或统计方法检测异常。
基于规则的检测:开发一组规则或签名来识别可疑或恶意活动。例如,您可以创建规则来检测日志文件中的特定关键字或指示已知攻击的模式。
阈值和基线:设置正常行为的阈值和基线。这有助于区分正常的网络/系统行为和潜在的攻击。超过这些阈值的异常活动将触发警报。
警报机制:实现警报机制,在检测到入侵时通知管理员。警报可以通过电子邮件、短信或记录到文件发送。日志记录和报告:确保IDS记录所有检测到的事件和活动。创建一个简单的报告机制,提供检测到的事件和趋势的摘要。
测试和改进:在受控环境中测试您的IDS以验证其有效性。根据测试结果和反馈进行改进。
部署:将IDS部署到需要监控的网络或主机上。确保它在后台运行,并持续分析潜在入侵的数据。
数据采集传感器
本次实现的数据采集传感器是利用gopacket包实现的,需要采集以下几种数据包。
● TCP、UDP五元组信息。
● DNS数据包。
● HTTP数据。数据采集传感器的代码结构
● cmd包中为命令行入口。
● conf包中为程序的配置文件。
● misc包中为程序中用到的一些杂项的函数。
● models包中为HTTP、DNS等数据结构的定义。
● sensor包中为传感器抓包与向后端服务器发送数据包的功能的实现。
● settings包的作用是解析配置文件的内容。sensor/sensor.go中的Start函数为程序的入口函数,它会调用gopacket进行抓包,然后将抓取到的包传到ProcessPackets()中进行处理。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com