技术干货 | 网络入侵检测系统之suricata概要介绍

一、简介

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


Suricata项目和代码由开放信息安全基金会(OISF)拥有和支持,OISF是一个非盈利基金会,致力于确保Suricata作为一个开源项目的开发和持续成功。


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


二、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 ragelyum install -y rust cargo pcre2-develcargo install --force cbindgencp /root/.cargo/bin/cbindgen /usr/bin/pip install pyyaml json-lines



2.2源码下载编译

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

  • cd suricata

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

  • ./autogen.sh

  • 生成对应的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开启日志模式 )

  • 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


技术干货 | 网络入侵检测系统之suricata概要介绍


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


三、suricata基本信息介绍


技术干货 | 网络入侵检测系统之suricata概要介绍

技术干货 | 网络入侵检测系统之suricata概要介绍


四、suricata 工作模式分析

4.1 single模式


技术干货 | 网络入侵检测系统之suricata概要介绍


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


4.2 work模式


技术干货 | 网络入侵检测系统之suricata概要介绍


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


4.3 autofp工作模式


技术干货 | 网络入侵检测系统之suricata概要介绍


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


4.4 work线程介绍


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


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

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

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


ReceiveAFPLoop就是当时注册的收包slot

FlowWorker就是当时注册的flow work slot


技术干货 | 网络入侵检测系统之suricata概要介绍


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


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


货拉拉安全应急响应中心

技术干货 | 网络入侵检测系统之suricata概要介绍

扫描二维码关注我们

公众号 | lalasrc

邮箱 | llsrc@huolala.cn

官网 | https://llsrc.huolala.cn

原文始发于微信公众号(货拉拉安全应急响应中心):技术干货 | 网络入侵检测系统之suricata概要介绍

版权声明:admin 发表于 2022年11月15日 上午11:00。
转载请注明:技术干货 | 网络入侵检测系统之suricata概要介绍 | CTF导航

相关文章

暂无评论

暂无评论...