Advantages
-
Snort插件
Snort采用了模块化设计,其主要特点就是利用插件,这样有几个好处,一是用户可以自主选择使用哪些功能,并支持热插拔;二是依据设计需求对Snort扩展,即根据template.c设计第三方插件
目前插件按功能分成三类,数据流预处理插件,检测功能插件,输出日志信息插件;插件的管理统一采用链表指针的方式
-
跨平台性
Snort支持Linux,OpenBSD,FreeBSD,Solaris,HP-UX ,MacOS,Windows等
-
规则语言简单
发现新攻击后,可以很快找到特征码,写出新的规则文件,迅速建立规则表
-
轻量级,在部署方面具有高度灵活性,使其成为网络安全体系的有机组成部分。
-
具有实时流量分析和记录IP网络数据包的能力
Disadvantages
-
编写新规则后无法即时生效,需要重启Snort
-
吞吐量不高约为100Mbps,因为数据抓包方式仅采用libpcap
-
规则组织采用链表,匹配时会沿着链表一一匹配,效率低。
Snort2.x版本重新优化了规则匹配的数据结构,对规则进行了再分类,匹配性能有一定提升,详见:Snort快速规则匹配模块剖析
System Indicators
-
吞吐量及内存消耗(Snort VS Snort+Hyperscan)
Snort原始性能由于严重依赖操作系统的libpcap,所以性能瓶颈在100Mbps左右,集成Hyperscan后性能约为500Mbps,但离商用的20Gbps仍有距离
Snort作为轻量级快部署的入侵检测系统,内存消耗方面表现优秀,约为60MB,集成Hyperscan后可降低为5.5MB
-
可扩展性
- 可自定义开发集成插件(snortsam),即检测算法替换或扩展,报文预处理,日志显示等,插件替换灵活,支持热插拔
- 可集成**Hyperscan**;
- daq模块可集成DPDK(https://github.com/NachtZ/daq_dpdk),性能可达到10.00Gbps,但只能针对单向流量,无法处理类似tcp协议的双向流量
-
准确率及误报率与规则配置文件强相关,而且当网络流量高于100Mbps时,误报率会急剧上升
Product Comparison
项目 | Snort | Suricata |
---|---|---|
开发公司 | Sourcefire,Inc。 | 开放信息安全基金会(OISF) |
可用性 | 自1998年以来 | 自2009年以来 |
编程语言 | C | C |
操作系统 | 跨平台 | 跨平台 |
稳定版本 | 3.0(2018年8月29) | 4.05(2018年7月18日) |
线程 | 多线程 | 多线程 |
IPv6支持 | 支持 | 支持 |
Snort(VRT)规则支持 | 支持 | 支持 |
新兴威胁规则支持 | 支持 | 支持 |
记录格式 | Unified2 | Unified2 |
Aanval兼容性 | 支持 | 支持 |
抓包方式 | PF_RING,netmap等 | 仅为libpcap |
TestCase评测,详见:https://www.aldeid.com/wiki/Suricata-vs-snort
Test Group | Priority | # of tests | Suricata score | Snort score |
---|---|---|---|---|
测试规则支持 | 3 | 8 | 6 | 8 |
网络拥塞情况 | 2 | 4 | 1 | 1 |
分片数据包 | 2 | 2 | 1 | 3 |
多次失败登录 | 3 | 1 | 1 | 0 |
绕过技巧 | 2 | 15 | 21 | 29 |
恶意软件&病毒 | 3 | 14 | 9 | 7 |
Shellcodes | 3 | 11 | 12 | 7 |
拒绝服务(DoS) | 3 | 3 | 3 | 3 |
客户端攻击 | 3 | 257 | 127 | 157 |
性能 | 3 | 0 | 2 | 1 |
内生安全能力 Inline/Prevention capabilities | 2 | 0 | 1 | 1 |
TOTAL (unweighted sum) | 315 | 184 | 217 | |
TOTAL (weighted sum) | 315 | 528 | 617 |