一.什么是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

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

  1. IDS入侵检测系统

    目录 IDS入侵检测系统 入侵检测系统的作用 入侵检测系统功能 入侵检测系统的分类 入侵检测系统的架构 入侵检测工作过程 数据检测技术 误用检测 异常检测 IDS的部署 基于网络的IDS 基于主机的I ...

  2. [IDS]CentOS6.6下搭建基于snort+barnyard2+base的入侵检测系统,超详细!!!

    最详细的CentOS6.6下搭建基于snort+barnyard2+base的入侵检测系统免责声明一.如果因为使用本文档照成损失(系统崩溃.数据丢失等),作者不承担任何责任.二.本文档只是个人使用本文 ...

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

    对于大多数互联网公司,基于日志分析的WEB入侵检测分析是不可或缺的. 那么今天我就给大家讲一讲如何用graylog的extractor来实现这一功能. 首先要找一些能够识别的带有攻击行为的关键字作为匹 ...

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

    Snort作为一款优秀的开源主机入侵检测系统,在windows和Linux平台上均可安装运行.BT5作为曾经的一款经典的渗透神器,基于 Ubuntu,里面已经预装很多的应用,比如Mysql.Apach ...

  5. 开源入侵检测系统OSSEC搭建之一:服务端安装

    OSSEC是一款开源的多平台的入侵检测系统,可以运行于Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS等操作系统中.主要功能有日志分析.完整性检查.rootkit检测 ...

  6. Snort 入侵检测系统

    Snort 入侵检测系统 一.实验目的 1.掌握snort IDS工作原理 2.应用snort 三种方式工作 二.实验环境 系统环境:Windows环境, kali环境 三.实验原理 1.snort ...

  7. 开源入侵检测系统OSSEC搭建之二:客户端安装

    上一篇文章中已经将OSSEC服务端的安装以及客户端的Key导出操作做了解说,接下来在另一台虚拟机中安装客户端,与安装服务端类似同样需要安装ossec,步骤如下. 一.下载ossec-hids-2.8. ...

  8. 机器学习在入侵检测方面的应用 - 基于ADFA-LD训练集训练入侵检测判别模型

    1. ADFA-LD数据集简介 ADFA-LD数据集是澳大利亚国防学院对外发布的一套主机级入侵检测数据集合,包括Linux和Windows,是一个包含了入侵事件的系统调用syscall序列的数据集(以 ...

  9. SNORT入侵检测系统

    SNORT入侵检测系统 YxWa · 2015/10/09 10:38 0x00 一条简单的规则 alert tcp 202.110.8.1 any -> 122.111.90.8 80 (ms ...

随机推荐

  1. JS实现缓动动画效果

    原理如下: 假设要从数值A变化到数值B,如果是线性运动,则每次移动距离是一样:如果是缓动,每次移动距离不一样.那如何才能不一样呢?很简单,按比例移动就可以. 例如:每次移动剩余距离的一半. 对吧,超容 ...

  2. NEO区块链-DAPP开发直通车-第零篇

    什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称.   NEL将为开发DAPP提供全面的服务 ...

  3. IDEA安装使用Lombok插件

    项目中经常使用bean,entity等类,绝大部分数据类类中都需要get.set.toString.equals和hashCode方法,虽然IDEA开发环境下都有自动生成的快捷方式,但自动生成这些代码 ...

  4. windows安装channels报错的解决方案

    windows作为开发机真是让人又爱又恨,总是会遇到各种各样的问题 报错 以安装channels为例:如: pip install channels   时出现: error: Microsoft V ...

  5. linux上安装mysql,亲试成功

    安装mysql参考 网址https://blog.csdn.net/a774630093/article/details/79270080 本文更加详细. 1.先检查系统是否装有mysql rpm - ...

  6. chardet查看字符串的编码(非常好用)

    chardet不是python自带的包需要手动安装 chardet安装命令(dos下): pip install chardet 或: pip.exe install chardet 案例: > ...

  7. Map不同具体实现类的比较和应用场景的分析

    1.Map的概括总结 (01) Map 是“键值对”映射的抽象接口.(02) AbstractMap 实现了Map中的绝大部分函数接口.它减少了“Map的实现类”的重复编码.(03) SortedMa ...

  8. Java中的RASP实现

    RSAP RASP是Gartner公司提出的一个概念,称:程序不应该依赖于外部组件进行运行时保护,而应该自身拥有运行时环境保护机制: RASP就是运行时应用自我保护(Runtime applicati ...

  9. 【二维树状数组】计数问题 @JSOI2009/upcexam5911

    时间限制: 1 Sec 内存限制: 128 MB 题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入 ...

  10. 虚拟串口VSPD破解版 亲测win10 64可用

    虚拟串口VSPD破解版 亲测win10 64可用 点击下载