1.什么是Suricate

Suricata引擎能够进行实时入侵检测(IDS)、内联入侵预防(IPS)、网络安全监控(NSM)和离线pcap处理。

是一款开源、快速、高度稳定的网络入侵检测系统

Suricata引擎能够实时入侵检测,内联入侵防御和网络安全监控。Suricata由几个模块组成,如捕捉、采集、解码、检测和输出。

Suricata使用强大而广泛的规则和签名语言来检查网络流量,并提供强大的Lua脚本支持来检测复杂的威胁。使用标准的输入和输出格式(如YAML和JSON),使用现有的SIEMs、Splunk、Logstash/Elasticsearch、Kibana和其他数据库等工具进行集成将变得非常简单。

2.规则分析

suricate包含以下3个部分

  • action:决定当规则匹配的时候会发生什么。

  • header:定义了协议,IP地址,端口和规则的位置等包头信息。

  • rule options:定义规则的细节。

例如这条规则将提取HTTP流量中的后缀为txt的文件,并进行告警

alert http any any → any any (msg:"File txt save";fileext:"txt";filestore;sid:2;rev:1;)

action-header---------------- rule options----------------------------------------
 

2.1 action

action包括

pass: 如果匹配到规则,suricate会停止扫描并

Drop:如果程序匹配到了这类规则,这个数据包被阻断将不会被发送到目标。

Reject:不同于 Drop 直接丢弃数据包,Reject 在匹配到规则时会主动进行拒绝数据包。当数据包为TCP时,会返回一个 RST 数据包重置连接。

Alert:当匹配到规则时,Suricata 不会对数据包进行任何操作,会像对正常数据包一样进行放行,除了会记录一条只有管理员能够看到的警报。

以上四种操作也是有优先级的,默认的优先级为:Pass > Drop > Reject > Alert。也就是规则在匹配时会优先考虑包含 Pass 的规则,其次才是 Drop,再然后是 Reject,最后再考虑包含 Alert 的规则。

2.2 Header

头部中包含如下几项:

协议(Protocol):这个字段用来告诉 Suricata 当前规则所包含的协议。其取值可以为:tcp,udp,icmp,ip,http,ftp,tls(包含ssl),smb,dns等等。

源/目的地址(Source and destination):源/目的地址可以设置为 IP 地址或者在配置文件(Suricata.yaml)里定义的变量。

端口号(Ports):不同的协议使用不同的端口号,例如 HTTP 使用 80 端口,而 HTTPS则使用 443。通常情况下端口号会设置为 any,这样会影响所有的协议。

流向(Direction):流向告诉规则匹配哪些流量数据,是匹配从外部网络进来的,还是匹配从内部网络出去的,亦或者两种同时匹配。其中,每条规则都必须有一个向右的箭头如示:→

2.3 Rule options

规则的每一条都遵循固定的格式:name: settings;

每条规则也包含如下设置:

元信息(meta-information)包括:msg (message),Sid (signature id),Rev(Revision),Gid (group id),Classtype,Reference,Priority,metadata信息。

头部(Header-Keyword)包括:ttl,ipopts,sameip,ip_proto,id,geoip,TCP关键字,ICMP关键字等等

有效载荷(payloads)包括:content,pcre,nocase,depth,offset,distance,within,isdataat,dsize等。

流信息关键字包括:flow, stream_size信息。

文件关键字:filename,fileext,filemagic,filestore,filesize等。

阈值

具体的规则内容比较复杂,详见官方手册。从中可以看出每条规则的编写都是非常复杂的,而且还包括很多流量协议底层相关的知识
 

3.所有特性(suricata完整功能列表)

(1)引擎

a、网络入侵检测系统(NIDS)引擎

b、网络入侵防御系统(NIPS)引擎

c、网络安全监控(NSM)引擎

d、离线分析PCAP文件

e、使用pcap记录器记录流量

f、Unix套接字模式

g,用于自动PCAP文件处理

h、与Linux Netfilter防火墙的高级集成

(2)操作系统支持

Linux、FreeBSD、OpenBSD、macOS/Mac OS X、Windows

(3)配置文件

a、YAML-人和机器可读

b、具有良好的注释和文档

c、支持包括其他配置文件

(4)TCP/IP引擎

a、可扩展的流引擎

b、完整的IPv6支持

c、隧道解码:Teredo、IP-IP、IP6-IP4、IP4-IP6、GRE

(5)TCP流引擎

a、跟踪会话

b、流重新组装

c、基于目标的流重新组装

(6)IP整理磁盘碎片引擎

基于目标的重新组装

(7)协议解析器

a、支持数据包解码:IPv4, IPv6, TCP, UDP, SCTP, ICMPv4, ICMPv6, GRE;Ethernet, PPP, PPPoE, Raw, SLL, VLAN, QINQ, MPLS, ERSPAN

b、应用层解码:HTTP, SSL, TLS, SMB, DCERPC, SMTP, FTP, SSH, DNS, Modbus, ENIP/CIP, DNP3, NFS, NTP, DHCP, TFTP, KRB5, IKEv2;

使用Rust语言开发的新协议,用于安全快速的解码

(8)HTTP 引擎

a、基于libhtp的有状态HTTP解析器

b、HTTP请求记录器

c、支持文件识别、提取和日志记录

d、支持每个服务器设置-限制,个性等

e、匹配(规范化)缓冲区的关键字:uri和原始uri、headers and raw headers、cookie、user-agent、request body and response body、method, status and status code、host、request and response lines、decompress flash files等等

(9)检测引擎

a、支持协议的关键字

b、支持每个vlan或捕获设备的多租户

c、xbits -流位扩展

d、PCRE支持:用于登录EVE的子字符串捕获

e、快速模式和预过滤器支持

f、规则分析

g、文件匹配:magic文件、文件大小、文件名和扩展名、文件MD5/SHA1/SHA256校验和——可扩展到数百万个校验和

h、可以选择的多种模式匹配算法

i、具有广泛的调优选项

j、实时规则重载-使用新的规则重新启动Suricata

k、延迟初始化规则

l、用于自定义检测逻辑的Lua脚本

m、支持Hyperscan集成

(10)输出

a、支持Eve日志,所有JSON警告和事件输出

b、用于生成自己的输出格式的Lua输出脚本

c、支持redis支持

e、HTTP请求日志

f、TLS握手日志

g、Unified2输出-兼容Barnyard2

h、快速警报日志

i、警告调试日志—用于规则编写器

j、使用pcap记录器记录流量

k、Prelude 支持

l、drop log - netfilter样式的日志,用于在IPS模式下丢弃数据包

m、syslog -警告syslog

n、stats-引擎统计在固定的时间间隔

o、文件日志,包括JSON格式的MD5校验和

p、提取的文件存储到磁盘,使用v2格式的重复数据删除

q、DNS请求/回复日志程序,包括TXT数据

r、基于信号的日志循环

s、流日志

(11)报警/事件过滤

a、每个规则警告过滤和阈值

b、全局警报过滤和阈值设置

c、每个主机/子网阈值和速率限制设置

(12)包收集

a、高性能捕获:

            AF_PACKET:实验性的eBPF和XDP模式可用

            PF_RING

            NETMAP

b、标准捕获:

            PCAP

            NFLOG (netfilter集成)

c、IPS模式

            基于Linux的Netfilter (nfqueue):不开放的支持

            基于FreeBSD和NetBSD的ipfw

            基于linux的AF_PACKET 

            NETMAP

d、捕获卡和专用设备:

              Endace

             Napatech

               Tilera

(13)多线程

a、完全可配置线程——从单线程到几十个线程

b、 预先“runmodes”

c、可选cpu关联设置

d、使用细粒度锁定和原子操作获得最佳性能

e、可选锁分析

(14)IP声誉

a、加载大量基于主机的信誉数据

b、使用“iprep”关键字在规则语言中匹配声誉数据

c、支持live重装

d、支持CIDR 范围

(15)Tools

a、suricata -update 易于规则更新管理的更新

b、Suricata-Verify开发过程中对QA进行开发

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐