网络入侵检测系统之suricata概要介绍

2022-11-15 11,461

1.简介

Suricata是一个免费、开源、成熟、快速、健壮的网络威胁检测引擎。Suricata引擎能够进行实时入侵检测(IDS)、内联入侵预防(IPS)、网络安全监控(NSM)和离线pcap处理。Suricata使用强大而广泛的规则和签名语言来检查网络流量,并提供强大的Lua脚本支持来检测复杂的威胁。使用标准的输入和输出格式(如YAML和JSON),使用现有的SIEMs、Splunk、Logstash/Elasticsearch、Kibana和其他数据库等工具进行集成将变得非常简单。Suricata项目和代码由开放信息安全基金会(OISF)拥有和支持,OISF是一个非盈利基金会,致力于确保Suricata作为一个开源项目的开发和持续成功。

下面将介绍一下如何搭建一个suricata平台以及一些suricata的基本信息,重点会说一下suricata的工作模式,这个涉及到数据包的处理流程

2.suricata安装

2.1 依赖库安装

yum install -y git epel-release make autoconf gcc-c++ automake cmake libtool pcre-devel libyaml-devel jansson-devel libpcap-devel  file-devel zlib-devel  nss-devel libcap-ng-devel libnet-devel libnetfilter_queue-devel lua-devel  epel-release lz4-devel xz-devel  json-c-devel librdkafka-devel  luajit-devel python-pip ragel

yum install -y rust cargo pcre2-devel

cargo install --force cbindgen

cp /root/.cargo/bin/cbindgen /usr/bin/

pip install pyyaml json-lines

2.2源码下载编译

  1. git clone https://github.com/OISF/suricata.git

  2. cd suricata

  3. git clone https://github.com/OISF/libhtp(下载libhtp用于http协议解析)

  4. ./autogen.sh

  5. 生成对应的makfile FLAGS=-g ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-nfqueue --enable-luajit  --enable-debug ( -g表示保留符号信息,程序出core时,可以运用上,--prefix用于设置安装、配置、日志目录,--enable-nfqueue用于开启nfq网卡多队列模式支持 --enable-luajit用于开启对luajit的支持  --enable-debug开启日志模式 )

  6. Make && make install && make install-conf (编译,安装,以及安装规则)

安装可执行程序及相关路径:

可执行程序(/usr/bin):

suricata/suricatactl/suricatasc/suricata-update

配置相关路径:

/var/log/suricata #log相关

/etc/suricata(include:classification.config/reference.config/suricata.yaml(可配置rules路径)/threshold.config) #配置信息 协议等

/var/lib/suricata/rules #规则相关

2.3 运行

suricata -c /etc/suricata/suricata.yaml -i enp0s3

1.png

这里用的是最新的版本7.0,我自己的网卡是enp0s3,把这个换成自己要监听的网卡即可

3.suricata基本信息介绍

2.png

4.suricata 工作模式分析

4.1 single模式

3.png

single只支持一个网卡设备,只有一个work线程

4.2 work模式

4.png

Work工作模式,每个网卡默认对应cpu数个工作线程(或者按照配置文件配置的线程数),每个工作线程取对应的网卡队列中数据包

4.3 autofp工作模式

5.png

autofp模式相对比较复杂,相当于共用了work线程

4.4 work线程介绍

工作模式的重点在于工作线程的处理,下面介绍一下工作线程的处理流程

数据包工作线程是按照slot的注册跑,一个slot一个走

这是个流工作线程,以afpacket的work工作模式为例,函数执行流程如下:

TmThreadsSlotPktAcqLoop-》ReceiveAFPLoop-》AFPReadFromRing-》TmThreadsSlotProcessPkt-》TmThreadsSlotVarRun-》SlotFunc(FlowWorker)

ReceiveAFPLoop就是当时注册的收包slot,

FlowWorker就是当时注册的flow work slot

6.jpeg

在多网卡收包的场景下,推荐使用work模式,该模式的性能会更好,同时可以调节收包模式,使得同一个五元组在同一个线程中处理,更有利于在攻击场景中做统计计算。

后续将再介绍一些:解包过程(比如mysql,pop3,http,dns协议的解析详细信息),日志记录,规则匹配,高性能场景性能优化的一些相关知识。


本文作者:货拉拉安全

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/191017.html

Tags:
评论  (0)
快来写下你的想法吧!

货拉拉安全

文章数:4 积分: 0

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号