Suricata规则管理
Suricata官方文档
这样一章本来是在规则的后面的,但是我把它提前啦,因为个人认为先管理会更好一点。
官网推荐使用suricata-update的工具方式去管理规则。并且suricata-update是跟suricata一起安装的,可以在官网查看手动安装的方法。
需要注意版本的问题:suricata-update 与 Suricata 4.1 及更高版本捆绑在一起。它也可以与旧版本一起使用。在这种情况下,它必须单独安装。
输入suricata-update 会自动进行规则更新,显示当前已经更新与启用了多少规则,需要注意的是系统自带et/open 规则,第一次当运行suricata-update命令的时候,会更新et/open规则,当添加新的规则的时候,使用suricata-update命令可以更新,官网推荐经常更新规则。
sudo suricata-update
更新别人的规则
运行下面的命令就可以更新所以规则,官网建议经常更新规则,这会将规则集下载到 /var/lib/suricata/rules/目录下,
sudo suricata-update
下面这个是suricata.ymal配置文件,关于规则的路径和启用的规则文件,
default-rule-path: /var/lib/suricata/rules
rule-files:
- suricata.rules
使用其他的规则
要想获取其他的规则的信息,第一次使用或者很久未使用需要更新/获取源主机资源的索引,如下:
sudo suricata-update update-sources
第二要获取规则的信息,命令如下,
sudo suricata-update list-sources
资源实例图,每个规则集都有一个名称,该名称带有一个“vendor”前缀,后跟一个集合名称。例如,OISF 的流量 ID 规则(OISF’s traffic id ruleset)称为“oisf/trafficid”。
,目前开源免费的就是et/open、pt规则、sslbl规则,其余的需要授权码才能更新
ptresearch/attackdetection规则是来自github github.com/ptresearch/… 的开源规则,里面包含了近几年常见cve漏洞的检测,更新十分及时。
sslbl/ssl-fp-blacklist 列表里面提供了有关恶意软件与僵尸网络的ssl证书列表,根据证书特征来匹配流量中的威胁
第三步确定好,要加入的规则后,使用下面的命令,加入规则并更新
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update
使用下面的命令可以获得当前活跃的规则,
sudo suricata-updat list-enabled-sources
控制规则启用和禁用
默认情况下,suricata-update 会将所有规则合并到一个文件“/var/lib/suricata/rules/suricata.rules”中。 要启用默认禁用的规则,请使用 /etc/suricata/enable.conf
2019401 # enable signature with this sid
group:emerging-icmp.rules # enable this rulefile
re:trojan # enable all rules with this string
同样,要禁用规则,请使用 /etc/suricata/disable.conf:
2019401 # disable signature with this sid
group:emerging-info.rules # disable this rulefile
re:heartbleed # disable all rules with this string
更新这些文件后,再次重新运行 suricata-update(这一步是合并到大的suricata.rules中),Finally restart Suricata.
sudo suricata-update
添加自己的规则
第一步编辑规则
sudo vim local.rules
第二步修改配置文件
sudo vim /etc/suricata/suricata.yaml
并确保您的 local.rules 文件已添加到规则列表中:
default-rule-path: /usr/local/etc/suricata/rules
rule-files:
- suricata.rules
- /path/to/local.rules
现在,运行 Suricata 并查看您的规则是否正在加载。
suricata -c /etc/suricata/suricata.yaml -i wlan0
如果规则加载失败,当 Suricata 认为规则不可加载时,它会显示尽可能多的信息。特别注意细节:查找特殊字符、空格、大写字符等错误。 接下来,检查您的日志文件是否在 Suricata 配置文件 suricata.yaml 中启用。如果您看到您的规则已成功加载,您可以通过执行一些应该触发它的操作来仔细检查您的规则。默认情况下,Suricata 会将警报记录到两个地方。
- eve.json
- fast.log 上面文件将位于日志输出目录中,该目录由以下两种方法之一设置:
- Suricata配置文件:目录名见default-log-dir
- Suricata 命令行:使用 -l /path/to/log-dir 在指定目录中创建日志文件。 以下示例假设日志目录名为 /var/log/suricata(配置文件中默认输出目录)
tail -f /var/log/suricata/fast.log
规则重新加载
上面所用的方式,是需要重新启动一个suricata,来使用规则,怎么加入到我们已经启动的服务中,可以用以下方法: Suricata 无需重新启动即可重新加载规则。通过这种方式,服务中断的可能性最小。通过向 Suricata 发送信号或使用 unix 套接字来实现。当 Suricata 被告知重新加载规则时,这些是它需要的基本步骤:
- 加载新配置以更新规则变量和值。
- 加载新规则
- 构建新的检测引擎
- 交换新旧检测引擎
- 确保所有线程都已更新
- 释放的旧检测引擎 在此过程中,Suricata 将继续正常处理数据包。但请记住,系统应该为两个检测引擎提供足够的内存。 第一种方法:
ps -ef|grep suricata 查找suricata程序的pid
kill -USR2 1111 通过kill命令发送usr2信号来重新加载suricata规则
使用 Unix 套接字时有两种方法可用。
阻止重新加载
suricatasc -c reload-rules
非阻塞重载
suricatasc -c ruleset-reload-nonblocking