Suricata简介

发布时间:2020-08-10 08:01:32 作者:leejia1989
来源:网络 阅读:1747

目录

Suricata简介
IDS/IPS简介
Suricata主要特点
Suricata基本架构
Suricata抓包性能
Suricata规则
Suricata自定义检测
Suricata http log自定义输出
Suricata单进程同时监听两个网口
问题
总结
参考

Suricata简介

Suricata是一个高性能的IDS、IPS和网络安全监控的引擎。它是开源的,由一个社区经营的非营利基金会开放信息安全基金会(OISF)开发。

安装环境建议使用centos7/redhat7版本以上的操作系统,Suricata版本建议使用4.x以上,这样方便多线程,Hypersca,pfring等功能的使用。6版本的操作系统编译环境需要花时间取升级修复,不建议使用。

IDS/IPS简介

检测系统(Intrusion detection system,简称“IDS”)是一种对网络传输进行即时监视,根据预设的策略,在发现可疑传输时发出警报。
预防系统(Intrusion prevention system,简称“IPS”)是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,一般位于防火墙和网络的设备之间,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。相对于IDS主能提供了中断防御功能。

Suricata主要特点

Suricata基本架构

运行模式

有三种运行模式,分别为single,workers,autofp。官方推荐性能最佳的运行模式为workers模式。
single模式:只有一个包处理线程,一般在开发模式下使用。
Suricata简介
workers模式:多个包处理线程,每个线程包含完整的处理逻辑。
Suricata简介
autofp模式:有多个包捕获线程,多个包处理线程。一般适用于nfqueue场景,从多个queue中消费流量来处理。
Suricata简介

四种线程模块

Suricata简介
包获取:包捕获
解码:对数据包和应用层协议解码
检测:通过规则或者自定义脚本对数据包进行检测
输出:输出检测结果和常规协议相关日志等

Suricata性能调优

抓包性能对比

调优

1,关闭网卡多队列功能
原因:一般使用流量镜像方式把流量镜像到服务器网卡,如果多队列的话,同一个tcp连接的数据有可能会被分散到不同的队列,由于时间的延迟可能导致有乱序可能。例如先收到了syn/ack,再收到syn,suricata会认为此流量无效而丢弃。如果做检测,则需要加缓冲和排序,代价较大。

插卡em4网卡的rss
# ethtool -l em4
Channel parameters for em4:
Pre-set maximums:
RX:             0
TX:             0
Other:          1
Combined:       8
Current hardware settings:
RX:             0
TX:             0
Other:          1
Combined:       8

设置rss为1
# ethtool -L  em4 combined 1

2,根据官方建议关闭网卡tso,gso,lro,gro等特性
原因:
tso/gso:网卡将普通的数据包重新组装卸载到一个大的“超级数据包”中,这样就减少了在堆栈中传递的数据包的数量,提升性能。这将导致捕获应用程序捕获到比它们的接口的MTU大得多的数据包,并可能干扰最大数据包捕获长度(snaplen),导致捕获程序丢弃这些超级数据包。
lro/gro:导致将各种较小的包合并成大的“超级包”,从而破坏suricata对tcp连接的跟踪。

插卡em4网卡的特性
# ethtool -k em4

关闭lro,gro
# ethtool -K em4 tso off gso off lro off gro off

3,使用pfring zc模式捕获包
原因:pfring+zero copy提升性能,但是zero copy需要网卡驱动支持,目前我们使用pfring模式抓包,只需要kernel支持即可。
4,调整配置文件中内存相关配置,调大flow.memcap,stream.memcap,stream.reassembly.memcap
5,使用workers运行模式
6,调整配置文件中max-pending-packets为8192
7,suricata编译需要支持luajit(用于替换原始lua),Hyperscan高性能正则库,PF_RING高性能包捕获库

Suricata规则

1,兼容snort规则,具体可参考官方文档。
2,通过规则和内置的关键字实现对数据包的过滤和处理等。
3,Suricata4.x版本之后有自带的规则管理工具

Suricata自定义检测

支持通过lua脚本对数据包进行自定义检测,例如协议识别和异常流量识别等

Suricata http log自定义输出

支持通过lua脚本脚本获取http协议request和response的相关信息,从而可以输出http协议中的所以数据,例如header,request body,response body等。

Suricata单进程同时监听两个网口

通过修改suricata.yml配置文件可以实现,以pfring捕获方式为例,如下配置文件为同时捕获两个网口流量的配置:

pfring:
  - interface: em2
    threads: auto
    cluster-id: 81
    cluster-type: cluster_flow
  - interface: em4
    threads: auto
    cluster-id: 82
    cluster-type: cluster_flow

问题

1,发现流量里面有部分vlan数据的情况下,suricata不能正常输出http和dns等应用协议的日志
解决:
关闭如下配置

vlan:
    use-for-tracking: false

2,https流量解密
不支持对https加密流量的解密,只能解码ssl/tls协议,目前看主流的tls协议(TLSv1 TLSv1.1 TLSv1.2 TLSv1.3)都能解析。解析后的日志样例如下:

{"timestamp":"2019-12-12T16:04:39.031174+0800","flow_id":1696894142547600,"in_iface":"eth2","event_type":"tls","vlan":20,"src_ip":"1.1.1.1","src_port":63198,"dest_ip":"52.114.128.43","dest_port":443,"proto":"TCP","tls":{"subject":"CN=*.events.data.microsoft.com","issuerdn":"C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT TLS CA 4","serial":"16:00:0A:BD:A3:28:8A:26:AC:EB:F1:78:5E:00:00:00:0A:BD:A3","fingerprint":"33:b3:b7:e9:da:25:f5:a0:04:e9:63:87:b6:fb:54:77:db:ed:27:eb","sni":"self.events.data.microsoft.com","version":"TLS 1.2","notbefore":"2019-10-10T21:55:38","notafter":"2021-10-10T21:55:38","ja3":{"hash":"2a26b1a62e40d25d4de3babc9d532f30","string":"771,52244-52243-52245-49200-49196-49192-49188-49172-49162-163-159-107-106-57-56-65413-196-195-136-135-129-49202-49198-49194-49190-49167-49157-157-61-53-192-132-49199-49195-49191-49187-49171-49161-162-158-103-64-51-50-190-189-69-68-49201-49197-49193-49189-49166-49156-156-60-47-186-65-49170-49160-22-19-49165-49155-10-255,0-11-10-13-13172-16-21,14-13-25-28-11-12-27-24-9-10-26-22-23-8-6-7-20-21-4-5-18-19-1-2-3-15-16-17,0-1-2"}}}

总结

目前,我们使用Suricata分析从交换机镜像过来的流量,Suricata的输出为两个:Suricata检测出来的alert异常事件和解码的所有应用协议的日志。以方便后续的存储和分析,以及告警处理。

参考

https://yq.aliyun.com/articles/576349
https://suricata-ids.org/features/all-features/
https://suricata.readthedocs.io/en/suricata-4.1.3/rules/index.html

推荐阅读:
  1. FreeRDP简介
  2. 【概念简介】Javas cript简介

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

suricata 流量镜像 流量分析

上一篇:好程序员Java教程分享:Java工程师常见面试题

下一篇:Golang中--面向对象封装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》