安全防护之路——Suricata部署与测试

admin 2023年2月10日20:37:18评论55 views字数 8380阅读27分56秒阅读模式
学习了解IDS/IPS,Suricata值得拥有

Suricata是一种网络流量识别工具,它使用社区创建的和用户定义的signatures签名集(规则)来检查和处理网络流量。当检测到可疑数据包时,Suricata 可以触发警报或者丢弃流量

默认情况下,Suricata 用作入侵检测系统 (IDS),以扫描服务器或网络上的可疑流量,生成并记录警报以供进一步调查。

同时,Suricata还可以配置为主动入侵防御系统 (IPS),可以阻断符合特定规则的网络流量。

我们也可以在网络中核心网关上部署 Suricata 来扫描来自其他主机的所有流量。下面是本节的内容概述

  • 在 Ubuntu 20.04 上安装 Suricata,并进行一些设置

  • 导入 Suricata 的签名集(规则集)

  • 测试 Suricata 配置,测试Suricata是否正常工作

配置需求:检查的流量越多,需要分配给 Suricata 的资源就越多。在生产环境中计划至少使用 2核CPU 和4~8GB 的内存,硬盘至少40G。

安装Suricata

将开放信息安全基金会 (OISF) 的软件存储库到Ubuntu 系统apt源里,运行以下命令:

sudo add-apt-repository ppa:oisf/suricata-stable

安装suricata软件包:

sudo apt install suricata

现在软件包已安装,启用suricata.service配置程序自启动

sudo systemctl enable suricata.service

如果收到如下输出,表明该服务已启用:

Outputsuricata.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable suricata

在修改 Suricata 配置之前,先停止服务systemctl

sudo systemctl stop suricata.service

配置 Suricata

OISF 存储库中的 Suricata 包附带了一个配置文件,该文件涵盖了各种用例。Suricata 的默认模式是 IDS 模式,因此不会拦截任何流量。

将 Suricata 配置并集成到真实的环境中时,可以考虑选择打开 IPS 模式。

  • 启用社区流 ID

Suricata 可以在其 JSON 输出中包含社区 ID字段,以便将单个事件记录与其他工具生成的数据集中的记录进行匹配。(类似现在的态势感知,聚合分析)

编辑/etc/suricata/suricata.yaml的第 120 行# Community Flow ID其设置true为启用设置:

# Community Flow ID
# Adds a 'community_id' field to EVE records. These are meant to give
# records a predictable flow ID that can be used to match records to
# output of other tools such as Zeek (Bro).
#
# Takes a 'seed' that needs to be same across sensors and tools
# to make the id less predictable.

# enable/disable the community id feature.
community-id: true

现在,事件将具有类似1:S+3BA2UmxxxxxFTtQ=的 ID ,可以使用它来关联不同工具中的记录。

  • 确定要使用的网卡

OISF Suricata 软件包附带的配置文件默认检查名为eth0. 如果使用不同的网卡,或者想检查多个网卡上的流量,则需要更改此值。

要确定默认网卡的设备名称,可以使用ifconfig或者ip -p -j route show default查看机器的网卡

[ {
"dst": "default",
"gateway": "192.168.xxx.254",
"dev": "eno1",
"protocol": "dhcp",
"metric": 100,
"flags": [ ]
},{
"dst": "default",
"gateway": "192.168.xxx.1",
"dev": "wlp3s0",
"protocol": "dhcp",
"metric": 600,
"flags": [ ]
} ]

可以看到我这台机器有eno1wlp3s0两块网卡。编辑 Suricata 的配置,更改网卡名称。/etc/suricata/suricata.yaml

# Linux high speed capture support
af-packet:
- interface: eth0
# Number of receive threads. "auto" uses the number of cores
#threads: auto
# Default clusterid. AF_PACKET will load balance packets based on flow.
cluster-id: 99
. . .

如果还想要检查其他接口上的流量,可以添加更多- interface: eth...YAML 对象。要添加一个新接口,将其插入到该-interface: default部分之前

#  For eBPF and XDP setup including bypass, filter and load balancing, please
# see doc/userguide/capture-hardware/ebpf-xdp.rst for more info.

- interface: enp0s1
cluster-id: 98


- interface: default
#threads: auto
#use-mmap: no
#tpacket-v3: yes
  • 配置规则实时加载

Suricata 支持实时规则重新加载,这样无需重新启动正在运行的 Suricata 进程,就可以试试生效。要启用实时重新加载选项,在配置文件的底部并添加以下行:

/etc/suricata/suricata.yaml

. . .

detect-engine:
- rule-reload: true

更新 Suricata 规则集

  • 添加初始免费规则集

如果直接启动 Suricata,可能日志中收到如下警告消息,这表明还没有加载规则:

Output<Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/suricata.rules

Suricata 包含一个名为suricata-update的工具,可以从外部获取规则集。运行sudo suricata-update为 Suricata 服务器下载最新的规则集:

19/10/2021 -- 19:31:07 - <Info> -- Testing with suricata -T.
19/10/2021 -- 19:31:32 - <Info> -- Done.

以上的回显表示suricata-update已获取免费的Open Rules,并将它们保存到 Suricata 的/var/lib/suricata/rules/suricata.rules文件中。

  • 添加规则集

suricata-update工具可以从各种免费和商业规则集提供者那里获取规则。某些规则集(例如已添加的 Open 集)可免费使用,而其他规则集则需要付费订阅。

可以使用sudo suricata-update list-sources列出默认的规则提供程序集,返回示例:

7/11/2022 -- 17:08:58 - <Info> -- Using data-directory /var/lib/suricata.
7/11/2022 -- 17:08:58 - <Info> -- Using Suricata configuration /etc/suricata/suricata.yaml
7/11/2022 -- 17:08:58 - <Info> -- Using /etc/suricata/rules for Suricata provided rules.
7/11/2022 -- 17:08:58 - <Info> -- Found Suricata version 6.0.6 at /usr/bin/suricata.
Name: et/open
Vendor: Proofpoint
Summary: Emerging Threats Open Ruleset
License: MIT
Name: et/pro
Vendor: Proofpoint
Summary: Emerging Threats Pro Ruleset
License: Commercial
Replxces: et/open
Parameters: secret-code
Subscription: https://www.proofpoint.com/us/threat-insight/et-pro-ruleset
. . .

例如,如果想包含tgreen/hunting规则集,可以使用以下命令启用源:

sudo suricata-update enable-source tgreen/hunting

然后再运行suricata-update,将新添加的规则集导入到本地。

测试 Suricata 的配置文件

Suricata 有一个内置的测试模式,它将检查配置文件和任何包含的规则的有效性。-T使用标志在测试模式下运行 Suricata验证您在上一节中所做的更改。-v标志将打印一些附加信息,-c标志告诉 Suricata 在哪里可以找到其配置文件:

sudo suricata -T -c /etc/suricata/suricata.yaml -v

测试花费的时间具体取决于分配给 Suricata 的 CPU 数量和添加的规则数量。使用默认的Open 规则集,应该会收到如下输出:

7/11/2022 -- 17:10:18 - <Info> - 1 rule files processed. 27200 rules successfully loaded, 0 rules failed
7/11/2022 -- 17:10:18 - <Info> - Threshold config parsed: 0 rule(s) found
7/11/2022 -- 17:10:18 - <Info> - 27203 signatures processed. 1280 are IP-only rules, 4612 are inspecting packet payload, 21107 inspect application layer, 108 are decoder event only
7/11/2022 -- 17:10:24 - <Notice> - Configuration provided was successfully loaded. Exiting.
7/11/2022 -- 17:10:24 - <Info> - cleaning up signature grouping structure... complete

如果配置文件中有错误,那么测试模式将生成一个特定的错误代码和消息,可以用来帮助排除故障。

Suricata 测试模式运行成功完成,就可以进入下一步,启动 Suricata。

运行 Suricata

现在 Suricata 配置和规则集都OK了,可以启动 Suricata 服务器。运行:sudo systemctl start suricata.service

可以使用sudo systemctl status suricata.service命令检查服务的状态:

如下输出:

● suricata.service - LSB: Next Generation IDS/IPS
Loaded: loaded (/etc/init.d/suricata; generated)
Active: active (running) since Tue 2022-08-30 16:27:51 CST; 2 months 8 days ago
Docs: man:systemd-sysv-generator(8)
Tasks: 22 (limit: 18766)
Memory: 2.7G
CGroup: /system.slice/suricata.service
└─35050 /usr/bin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid --af-packet -D -vvv

与测试模式命令一样,Suricata 需要一两分钟来加载和解析所有规则。现在 Suricata 正常运行了,下一步是检查 Suricata 是否检测到测试 URL 的请求并生成警报。

测试 Suricata 规则

前面下载的Open 规则集包含超过 30000 条规则。Suricata 快速入门建议使用curl发一些包,来触发2100498规则。

运行curl http://testmynids.org/uid/index.html生成一个 HTTP 请求,该请求将返回一个匹配 Suricata 警报规则的响应:

Outputuid=0(root) gid=0(root) groups=0(root)

此示例响应数据会触发警报,假装返回通过 webshell 在受感染的远程系统上运行id命令的输出。

现在可以检查 Suricata 的日志,看看有没有触发告警。默认 Suricata 配置启用了两个日志。第一个是在/var/log/suricata/fast.log,第二个是json的/var/log/suricata/eve.log

/var/log/suricata/fast.log

输入grep 2100498 /var/log/suricata/fast.log 检查报警日志

Output10/21/2021-18:35:57.247239  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 204.246.178.81:80 -> 203.0.113.1:36364

如果有以上的回显,代表suricata检查到了威胁数据包,并且生成了一条记录。2100498就是Suricata 用于识别规则标号

/var/log/suricata/eve.log

Suricata 还使用JSON记录/var/log/suricata/eve.log。Suricata 文档建议使用该jq实用程序来读取和过滤eve.log。
如果系统上没有它,使用sudo apt install jq进行安装。

输入jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json检查,输出将类似于以下内容:

Output{
"timestamp": "2022-08-03T16:34:20.041459+0800",
"flow_id": 507569354027241,
"in_iface": "wlp3s0",
"event_type": "alert",
"src_ip": "13.32.50.67",
"src_port": 80,
"dest_ip": "192.168.16.162",
"dest_port": 60706,
"proto": "TCP",
"community_id": "1:3B+LBPCM3r+Ko4G03v361IZ7grA=",

如果有以上的回显,代表suricata检查到了威胁数据包,并且生成了一条记录。
后续,我们将探讨如何将 Suricata 警报集成到到ELK来组成一个开源SIEM (安全信息事件管理系统)。

https://www.freebuf.com/articles/es/353548.html
扫码加好友,加入交流群↓↓↓ 

安全防护之路——Suricata部署与测试

Taps:




免责声明:由于传播、利用本公众号WIN哥学安全提供的文章、工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号WIN哥学安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,本号会立即删除并致歉。谢谢!

往期精彩-安全工具

Redis漏洞利用工具

红队利器 | 阿波罗自动化攻击评估系统

Windows&Linux后门生成器

Burp专业版、Xray高级版、Ladon更新合集

基于ATT&CK攻击框架整理的红队工具

Fortify 22.2-Windows&Linux&Mac 破解版

漏扫工具Invicti-Professional(原Netsparker)

三款移动应用安全分析平台推荐

ONE-FOX单兵武器库贺岁版3.0

APP信息搜集工具--AppInfoScanner

【已更新】基于Win10搭建的渗透集成环境

溯源取证工具—攻击类型检测并自动导出报告

VMware 17.0 官方版+永久激活密钥

Docker_Awvs15.x一键安装[支持版本更新]

cobalt strike 4.7 破解版 cracked(附下载)

VMware vCenter漏洞综合利用Tools(附下载)

2022 年红队工具和模拟工具包

漏洞扫描工具,684个poc,支持mac,linux,win

Vxscan:一款用于渗透测试的多功能扫描工具

OAExploit一款基于OA产品的一键扫描工具

Android渗透工具(建议收藏)

HvvInfo资产探测和基本扫描的工具

【懒人神器,批量SRC】Serein,支持网站批量漏洞检测

往期精彩-渗透测试

图文详解多种漏洞配合利用--getshell(附脚本)

对某国能源打点(上)

技术分享:红队渗透测试项目之SickOs1.2

针对某集团的一次渗透测试

围观HW报告|打穿某国企下属企业

记一次某系统的渗透测试

红队-多层内网环境渗透测试

APP漏洞挖掘(一)某下载量超101万的APP可以GetShell

记一次简单渗透

往期精彩-漏洞研究

【漏洞复现】PHPStudy Web面板RCE漏洞

【漏洞速递】Clash最新远程代码执行漏洞(附POC)

SRC漏洞挖掘思路手法

用 Goby 通过反序列化漏洞一键打入内存马【利用篇】

【漏洞速递】禅道系统权限绕过与命令执行漏洞(附POC)

Android漏洞挖掘三板斧--drozer+Inspeckage(xosed)+MobSF

【漏洞复现 | 附EXP】CVE-2022-40684 & CVE-2022-22954

【漏洞情报速递】某塔面板疑似有未知漏洞

木马程序攻击+利用Windows内核漏洞提权

Webmin 漏洞 CVE-2022-0824复现

价值1500€的逻辑漏洞挖掘思路分享

某路由产品系统万能密码绕过漏洞复现

干货分享 | VMware vCenter漏洞实战利用总结

畅捷通任意文件上传漏洞(CNVD-2022-60632)复现

ThinkPHP6.0.12LTS反序列化(getshell的poc链挖掘)

往期精彩-红蓝对抗

围观HW报告|打穿某国企下属企业

地级市HVV | 未授权访问合集

攻防演练实战之梅开二度-致远OA-rce

一次市hvv及省hvv的思路总结

记一次攻防演练实战总结
2022年蓝队初级护网总结

大师傅,我想学习钓鱼研判!

【2022HVV系列】攻防演练中攻击方的思考

【2022HVV系列】实战攻防演习中的钓鱼攻击

蓝队的逆袭-蓝队防守流程&溯源与反制

【2022HVV系列】蓝队手册更新版(建议收藏)

【2022HVV系列】任意文件上传漏洞应急响应

【2022HVV系列】溯源反制案例(建议收藏)

【2022HVV系列】一次溯源过程复盘

【2022HVV系列】1-应急响应之入侵排查

【2022HVV系列】挖矿病毒应急响应

【2022HVV系列】红蓝对抗以及护网相关工具和资料

【2022HVV系列】操作系统日志收集与分析

【2022HVV系列】一次真实应急响应复盘

往期精彩-安全运营

企业级-应急响应完整流程:启示录1

应急响应思维导图分享-mir1ce师傅

最全应急响应流程-附命令和工具【建议收藏】

干货 | 冰蝎、哥斯拉 内存马应急排查方式汇总

开源蜜罐Hfish的简单部署并接入到GrayLog

构造溯源蜜罐——伪造MySQL服务端

实战某高校的一次挖矿病毒的应急处置

网络安全风险收敛与安全加固实战经验

一款web服务日志管理、流量可视化监控工具

往期精彩-安全知识

【保姆级教学】Redis常见利用方法

干货丨渗透测试常用方法总结,大神之笔!

[ 红队知识库 ] 常见WAF拦截页面

sql server提权总结

关于webshell免杀的应用思路

【Github搬砖】网络安全学习wiki

Cobalt strike 环境搭建与基本功能

Redis未授权漏洞蜜罐模拟与捕获分析


原文始发于微信公众号(WIN哥学安全):安全防护之路——Suricata部署与测试

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月10日20:37:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安全防护之路——Suricata部署与测试https://cn-sec.com/archives/1546330.html

发表评论

匿名网友 填写信息