构建基于Suricata+Splunk的IDS入侵检测系统

一.什么是IDS和IPS?

IDS(Intrusion Detection Systems):入侵检测系统,是一种网络安全设备或应用软件,可以依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,并发出安全警报。

IPS(Intrusion Prevention System):入侵防御系统,除了具有IDS的监控检测功能之外,可以深度感知检测数据流量,对恶意报文进行丢弃,以阻止这些异常的或是具有伤害性的网络行为。

NSM:网络安全监控系统,用于收集、检测和分析网络安全数据,通常IDS是其组成部分之一。

IPS入侵防御系统,是在IDS入侵检测系统的基础上,增加了事件处理以及安全防护功能,能够主动对安全事件进行响应。

二.IDS/IPS的功能及分类

1.IDS根据两种方法进行分类:按照数据来源、按照入侵检测策略。

按照数据来源分类

  • 基于网络的入侵检测系统(NIDS)
  • 基于主机的入侵监测系统(HIDS)
  • 分布式入侵检测系统(DIDS)

按照入侵检测策略分类

  • 滥用检测
  • 异常检测
  • 完整性分析

2.IPS从功能上具有以下几个组成部分:

  • 数据采集:采集和捕获流量数据
  • 入侵检测:分析流量和日志数据,发现安全异常行为并发出警报,常见的有Snort、Suricata、Bro
  • 结果展示:用于分析IDS警报并进行友好展示,常见的IDS警报分析工具有Snorby、Sguil、Base等
  • 安全防御:主动响应安全事件,采取丢弃数据包等等措施来阻止异常网络行为,比如与iptables联用

三.IDS检测方法

IDS根据入侵检测的行为分为:异常检测和误用检测。

1、异常检测方法

  • 统计异常检测方法
  • 特征选择异常检测方法
  • 基于贝叶斯推理异常检测方法
  • 基于贝叶斯网络异常检测方法
  • 基于模式预测异常检测方法

2、误用检测方法

  • 基于条件的概率误用检测方法
  • 基于专家系统误用检测方法
  • 基于状态迁移分析误用检测方法
  • 基于键盘监控误用检测方法
  • 基于模型误用检测方法

四.构建基于Suricata+Splunk的IDS入侵检测系统

Suricata

随着越来越多的服务器将网卡升级到10GB/40GB以太网,对线路上的硬件进行计算密集型的入侵检测越来越困难。suircata是一款支持IDS和IPS的多线程入侵检测系统,与传统snort相比,suricata的多线程和模块化设计上使其在效率和性能上超过了原有snort,它将 CPU 密集型的深度包检测工作并行地分配给多个并发任务来完成。这样的并行检测可以充分利用多核硬件的优势来提升入侵检测系统的吞吐量,在数据包的深度检测上效果优越。并且suricata可以兼容现有的Snort规则签名,还增加了对ipv6的支持,已经逐渐成为传统snort入侵检测系统的代替方案。

参数 Snort Suricata
安装方式 源码安装、安装包安装 源码安装
协议 TCP,UDP,ICMP,IP TCP,UDP,ICMP,IP,HTTP,FTP,TLS(SSL),SMB,DNS
规则 Snort规则,EmergingThreats规则 Snort规则,EmergingThreats规则,VRT::Snort 规则
线程 单线程 多线程
IPS支持 与iptables等联用实现 支持自动处理
IPv6支持 少数支持 全面支持
抓包方式 libpcap PF_RING, cua,netmap,af-packet
帮助资料 官网及网络上大量资料 Suricata wiki

Splunk

splunk是一款数据分析系统。它在快速收集、搜索、分析、实时获取数据方面的能力较为突出,效率高,能够处理PB级数据,并且它支持对数据源进行实时监控。支持自定义过滤规则。splunk使用简单,通过用户图形界面进行各种统计分析操作, 能够对数据进行可视化展示,形象直观。本实验中利用splunk实时监控IDS的警报日志文件fast.log。

1.安装Suricata

suricatawiki参考文档

1.安装suricata依赖

apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config

安装libhtp库

git clone  https://github.com/OISF/libhtp.git
cd libhtp/
./autogen.sh
./configure
make && sudo make install

2.下载suricata

去官网下载suricata并解压

3.编译suricata

默认模式下,Suricata以IDS模式运行,编译命令:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var

如果需要 Suricata 同时运行 IDS 和 IPS,需要安装额外依赖并使用如下命令进行编译

sudo apt-get -y install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var

4.安装suricata

make && sudo make install
sudo make install-conf # 安装默认配置
sudo make install-rules # 安装默认规则
sudo ldconfig # 让系统共享动态链接库  

配置并使用Suricata监控安全事件

编辑配置文件

如果我们安装时使用下面的命令,会进行默认配置,我们只需要修改相关配置文件中的参数即可。如果已经使用了默认配置,请直接跳到步骤4。

sudo make install-conf  # 安装默认配置
sudo make install-rules # 安装默认规则 

如果没有安装默认配置和规则,我们需要手动进行配置。参考步骤1、2、3。

创建Suricata配置目录和日志目录
sudo mkdir /var/log/suricata
sudo mkdir /etc/suricata
把规则文件拷贝到Suricata配置目录下
wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxvf emerging.rules.tar.gz
sudo cp -R rules/ /etc/suricata/
把Suricata安装源文件中的suricata.yaml、classification.config、reference.config文件拷贝到Suricata的配置目录下
cd suricata
sudo cp suricata.yaml classification.config reference.config /etc/suricata/
编辑配置文件

suricata的配置文件路径是:/etc/suricata/suricata.yaml

sudo vim /etc/suricata/suricata.yaml

我们需要注意一下几个关键参数

HOME_NET: 它指定了Suricata 监控的本地网络,根据自己的网络情况进行修改

HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"

EXTERNAL_NET 变量的 !$HOME_NET 代表除本地网络之外的其他网络。

default-log-dir:日志文件存储路径,默认是/var/log/suricata。

outputs:outputs选项下有很多可以输出的配置选项,包括警告、检测的数据包、产生的结果等,可以根据自己的需求进行配置。

  • fast.log:默认的警告输出文件。
  • unified2.alert:数据包输出文件,将整个数据包以二进制的方式存储到文件中。
  • http.log:HTTP日志,包含了http请求、HOST字段、URI字段和User-Agent字段。
  • Syslog:这个选项决定了是否将suricata的警告输出到syslog文件中。
  • Drop.log:当suricata工作在IPS模式下的时候,可以使用drop操作规则,这些drop掉的数据包信息就会存储在drop.log文件中

max-pending-packets: 设置suricata能同时处理的数据包数量,最少为1,最大值取决于内存的大小,更大的内存可以设置更大的值并拥有更好的性能,默认值是1024。

default-packet-size:对处理的每个数据包的大小进行限制。默认值是1514,也是TCP数据包的最大长度(当数据超过这个长度便会使用TCP报文重组技术)。

编辑测试规则

针对suricata的安全规则的配置,可以参考suricata配置文档

修改/etc/suricata/suricata.yaml文件,设置我们的测试规则文件my.rules

default-rule-path: /etc/suricata/rules
rule-files:
 - my.rules

然后我们去/etc/suricata/rules目录下创建我们的自定义规则文件my.rules

在该文件中,我们写下自己的测试规则

alert icmp $HOME_NET any -> $EXTERNAL_NET any (msg:"TEST :ICMP PING"; itype:8; sid:20000; rev:3;)
alert tcp any any -> any 80 (msg:"http test";)
alert http any any -> any any (msg:"Filemagic jgp(1)"; flow:established; filemagic:"JPEG image data"; filestore; sid:10; rev:1;)

运行suricata进行测试

Suricata有不同的运行模式,我们可以使用如下命令查看

sudo suricata --list-runmodes

启动Suricata之前,强烈建议先关闭网卡的LRO/GRO功能(即网卡收包时将同一流的小包合并成大包)。这会导致Suricata处理时很容易出现丢包问题,传输速度慢。解决方法,关闭LRO/GRO功能,命令:

ethtool -k eth0 #查看LRO/GRO当前是否打开
ethtool -K eth0 lro off #关闭LRO
ethtool -K eth0 gro off #关闭GRO

如果看到下列警示信息,可以忽视。它说明你的网卡不支持LRO。

Cannot change large-receive-offload

然后我们启动suricata

sudo suricata -c /etc/suricata/suricata.yaml -i eth0

此时,suricata会开始监听我们的流量,如果触发了规则,会在默认日志路径/var/log/suricata/下产生警报文件fast.log

使用Suricata监控网络攻击

模拟网络攻击:mysql暴力破解

IDS检测规则

alert tcp $EXTERNAL_NET any -> $HOME_NET 3306 (msg:"MySQL Login Attack"; sid:11619; gid:3; rev:6; classtype:attempted-admin; reference:cve,2006-1518; metadata: engine shared, soid 3|11619, service mysql;)

此规则可以检测出尝试枚举mysql管理员密码的暴力破解攻击。

使用Splunk分析展示IDS警报

下载splunklight版

安装web环境:php+apache2

sudo apt-get install php7.0 libapache2-mod-php7.0 apache2

运行splunk服务

cd splunk\bin./splunk start

然后访问本机8080端口即可。我们可以动态监控警报文件/var/log/suricata/fast.log

时间: 2024-11-17 23:04:10

构建基于Suricata+Splunk的IDS入侵检测系统的相关文章

[入侵检测系统][IDS]CentOS6.6搭建基于snort+barnyard2+base的入侵检测系统

CentOS6.6搭建基于snort+barnyard2+base的入侵检测系统 由于网上对于linux下搭建基于snort的入侵检测系统不是很详细,这里我写个文档给大家参考参考: 本文档主要使用的软件已上传至百度云:http://pan.baidu.com/s/1qWui0c0 密码:y80f,其他软件可以根据文档中的命令在线下载安装: 文档中的命令大多可以直接使用(除非时间太久导致系统/软件/链接失去支持等),顺利的话,可以在2小时内搭建完毕: 如果安装报错,请检查步骤是否正确,然后百度/g

如何在CentOS上配置基于主机的入侵检测系统?

任何系统管理员想要在其生产服务器上最先部署的安全措施之一就是检测文件篡改的机制――不法分子篡改的不仅仅是文件内容,还有文件属性. AIDE(全称“高级入侵检测环境”)是一种基于主机的开源入侵检测系统.AIDE通过检查许多文件属性的不一致性来检查系统二进制文件和基本配 置文件的完整性,这些文件属性包括权限.文件类型.索引节点(inode).链接数量.链接名称.用户.用户组.文件大小.块计数.修改时间.访问时间. 创建时间.访问控制列表(acl).SELinux安全上下文.xattrs以及md5/s

IDS入侵检测

IDS是英文"Intrusion Detection Systems"的缩写,中文意思是"入侵检测系统". 做一个形象的比喻:假如防火墙是一幢大楼的门锁,那么IDS就是这幢大楼里的监视系统.一旦小偷爬窗进入大楼,或内部人员有越界行为,只有实时监视系统才能发现情况并发出警告.

基于网络(NIDS)的入侵检测系统

入侵(Instruction)是个 广义的概念,不仅包括被发起攻击的人取得超出合法权限的系统的控制权,也包括搜集漏洞信息,造成拒绝访问(Denial of service)等对计算机系统造成危害的行为. 通过被动地监测网络上传输的原始流量,对获取的网络数据进行处理,从中提取有用的信息,再通过与已知攻击特征相匹配或与正常网络行为原型相比较来识别攻击事件.此类检测系统不依赖操作系统作为检测资源,可应用于不同的操作系统平台:配置简单,不需要任何特殊的审计和登录机制:可检测协议攻击.特定环境的攻击等多种

Graylog2进阶 打造基于Nginx日志的Web入侵检测分析系统

对于大多数互联网公司,基于日志分析的WEB入侵检测分析是不可或缺的. 那么今天我就给大家讲一讲如何用graylog的extractor来实现这一功能. 首先要找一些能够识别的带有攻击行为的关键字作为匹配的规则. 由于我不是专门搞安全的,所以在网上找了一些软waf的规则脚本. 剩下来的工作就可以交给Graylog的extractor实现了. 这次介绍一下extractor的Copy input用法. (1)waf规则脚本如下: \.\./ select.+(from|limit) (?:(unio

搭建开源入侵检测系统Snort并实现与防火墙联动

Snort作为一款优秀的开源主机入侵检测系统,在windows和Linux平台上均可安装运行.BT5作为曾经的一款经典的渗透神器,基于 Ubuntu,里面已经预装很多的应用,比如Mysql.Apache.Snort等等.Guardian是snort的插件,通过读取snort报警日 志将入侵IP加入到Iptables中.Iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统. 本文详细介绍了BT5中安装snrot NIDS并实现与iptables防火墙联动的过程.

基于主机入侵检测系统

一般主要使用操作系统的审计.跟踪日志作为数据源,某些也会主动与主机系统进行交互以获得不存在于系统日志中的信息以检测入侵.这种类型的检测系统不需要额外的硬件.对网络流量不敏感,效率高,能准确定位入侵并及时进行反应,但是占用主机资源,依赖于主机的可靠性,所能检测的攻击类型受限.不能检测网络攻击. 1.1操作系统的审计 审计是指收集有关系统资源使用情况的数据.审计数据提供安全相关的系统事件的记录.以后便可以使用此数据来指定系统上执行的操作的职责.成功的审计应包括识别和验证. 通常审计服务的操作: (1

SNORT入侵检测系统

0x00 一条简单的规则 alert tcp 202.110.8.1 any -> 122.111.90.8 80 (msg:"Web Access"; sid:1) alert:表示如果此条规则被触发则告警 tcp:协议类型 ip地址:源/目的IP地址 any/80:端口号 ->:方向操作符,还有<>双向. msg:在告警和包日志中打印消息 sid:Snort规则id - 这条规则看字面意思就很容易理解.Snort就是利用规则来匹配数据包进行实时流量分析,网络

十一、入侵检测系统

简介 入侵检测系统(intrusion detection system,简称IDS) 是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备.它与其他网络安全设备的不同之处便在于,IDS是一种积极主动的安全防护技术. 依照一定的安全策略,通过软.硬件,对网络.系统的运行状况进行监视,尽可能发现各种攻击企图.攻击行为或者攻击结果,以保证网络系统资源的机密性.完整性和可用性. IDS组成 一个入侵检测系统分为四个组件. 事件产生器(Event generators