Suricata规则管理2

2,401 阅读5分钟

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”。 image.png ,目前开源免费的就是et/open、pt规则、sslbl规则,其余的需要授权码才能更新

ptresearch/attackdetection规则是来自github github.com/ptresearch/… 的开源规则,里面包含了近几年常见cve漏洞的检测,更新十分及时。

image.png

sslbl/ssl-fp-blacklist 列表里面提供了有关恶意软件与僵尸网络的ssl证书列表,根据证书特征来匹配流量中的威胁

image.png 第三步确定好,要加入的规则后,使用下面的命令,加入规则并更新

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 上面文件将位于日志输出目录中,该目录由以下两种方法之一设置:
  1. Suricata配置文件:目录名见default-log-dir
  2. 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