构建基于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警报
安装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
构建基于Suricata+Splunk的IDS入侵检测系统的更多相关文章
- IDS入侵检测系统
目录 IDS入侵检测系统 入侵检测系统的作用 入侵检测系统功能 入侵检测系统的分类 入侵检测系统的架构 入侵检测工作过程 数据检测技术 误用检测 异常检测 IDS的部署 基于网络的IDS 基于主机的I ...
- [IDS]CentOS6.6下搭建基于snort+barnyard2+base的入侵检测系统,超详细!!!
最详细的CentOS6.6下搭建基于snort+barnyard2+base的入侵检测系统免责声明一.如果因为使用本文档照成损失(系统崩溃.数据丢失等),作者不承担任何责任.二.本文档只是个人使用本文 ...
- Graylog2进阶 打造基于Nginx日志的Web入侵检测分析系统
对于大多数互联网公司,基于日志分析的WEB入侵检测分析是不可或缺的. 那么今天我就给大家讲一讲如何用graylog的extractor来实现这一功能. 首先要找一些能够识别的带有攻击行为的关键字作为匹 ...
- 搭建开源入侵检测系统Snort并实现与防火墙联动
Snort作为一款优秀的开源主机入侵检测系统,在windows和Linux平台上均可安装运行.BT5作为曾经的一款经典的渗透神器,基于 Ubuntu,里面已经预装很多的应用,比如Mysql.Apach ...
- 开源入侵检测系统OSSEC搭建之一:服务端安装
OSSEC是一款开源的多平台的入侵检测系统,可以运行于Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS等操作系统中.主要功能有日志分析.完整性检查.rootkit检测 ...
- Snort 入侵检测系统
Snort 入侵检测系统 一.实验目的 1.掌握snort IDS工作原理 2.应用snort 三种方式工作 二.实验环境 系统环境:Windows环境, kali环境 三.实验原理 1.snort ...
- 开源入侵检测系统OSSEC搭建之二:客户端安装
上一篇文章中已经将OSSEC服务端的安装以及客户端的Key导出操作做了解说,接下来在另一台虚拟机中安装客户端,与安装服务端类似同样需要安装ossec,步骤如下. 一.下载ossec-hids-2.8. ...
- 机器学习在入侵检测方面的应用 - 基于ADFA-LD训练集训练入侵检测判别模型
1. ADFA-LD数据集简介 ADFA-LD数据集是澳大利亚国防学院对外发布的一套主机级入侵检测数据集合,包括Linux和Windows,是一个包含了入侵事件的系统调用syscall序列的数据集(以 ...
- SNORT入侵检测系统
SNORT入侵检测系统 YxWa · 2015/10/09 10:38 0x00 一条简单的规则 alert tcp 202.110.8.1 any -> 122.111.90.8 80 (ms ...
随机推荐
- MUI + Spring MVC 实现多图片上传
后台代码,主要是SpringMVC 接收多文件上传,不是用的MutilFiles 方式,主要是因为MUI 5+ 不支持文件上传的Key是同一个名字 private String saveFile(Mu ...
- [LOJ6469]Magic
[LOJ6469]Magic 题目大意: 有\(n(n\le10^5)\)个物品,每个物品有一个权值\(w_i(w_i\le10^{18})\).求所有\(n\choose 2\)对物品\((i,j) ...
- redis安装,第一天
1.直接官网下载 2.进入redis安装目录 : cd /redis-4.0.11 make install 3.启动:redis-server /myredis/redis.conf //复制 ...
- 解决VS Code开发Python3语言自动补全功能不带括号的问题
Visual Studio Code(以下简称VS Code)用来开发Python3,还是很便利的,本身这个IDE就是轻量级的,才几十兆大小,通过安装插件的方式支持各种语言的开发.界面也美美哒,可以在 ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习1
#include <iostream>using namespace std;int main(){ int min,max; cout<<"Enter the mi ...
- ip+掩码
pattern="/^(((?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)) ...
- python之组合与重用性
1 组合 组合的概念:软件重用的重要方式除了继承之外还有另外一种方式,即:组合 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合 >>> class Equip: ...
- insert /*+append*/为什么会提高性能
在上一篇的blog中 做了下使用,在归档和非归档下,做数据插入http://blog.csdn.net/guogang83/article/details/9219479.结论是在非归档模式下表设置为 ...
- Cenos7 部署asp.net core站点
系统版本 rpm -q centos-release --- centos-release--5.1804.el7.centos.x86_64 安装libicu yum install libunwi ...
- 咏南ISAPI中间件
咏南ISAPI中间件 只支持WINDOWS服务器部署,中间件作为IIS的ISAPI插件部署. 基于WINDOWS的IIS,使用HTTP.SYS通讯,不依赖任何三方控件. 可以基于IIS HTTPS. ...