suricata-update规则管理
虽然可以手动下载和安装规则,但建议使用管理工具。Suricata-Update是更新和管理Suricata规则的官方方式。
Suricata-update与Suricata4.1及更高版本捆绑在一起,通常与它一起安装。它也可以与旧版本一起使用。在这种情况下,必须单独安装。
1.安装suricat-update
Suricata-Update是一个用Python编写的工具,最好与pip安装Python包的工具一起安装。可以使用pip全局安装Suricata-Update供所有用户使用,也可以安装到你指定的目录供用户使用。
(1.1)全局安装
pip install --upgrade suricata-update
(1.2)安装到您自己的主目录
pip install --user --upgrade suricata-update
安装到主目录时, suricata-update程序将安装到$ HOME / .local / bin,因此请确保此目录位于您的路径中:export PATH=$HOME/.local/bin:$PATH
2.规则管理
2.1 目录和权限
为了suricata-update正常工作,需要以下权限:
目录/etc/suricata:读访问权限
目录/var/lib/suricata/rules:读/写访问
目录/var/lib/suricata/update:读/写访问
为了获得上述权限,简单的方式是使用root用户,或者执行sudo。建议创建一个suricata组并使用该suricata组的设置上述目录权限,然后将用户添加到该suricata 组。
2.2 更新规则
(2.2.1)suricata-update
该命令将执行以下操作:
a.查找suricata路径上的程序以确定其版本。
b.查找/etc/suricata/enable.conf,/etc/suricata/disable.conf,/etc/suricata/drop.conf和/etc/suricata/modify.conf以查找要应用于下载规则的过滤器。这些文件是可选的,不需要存在。
c.下载适用于您的Suricata版本的Emerging Threats Open规则集,如果找不到则默认为4.0.0。
d.应用上面加载的启用,禁用,删除和修改过滤器。
e.写出规则/var/lib/suricata/rules/suricata.rules。
f.在测试模式下运行Suricata /var/lib/suricata/rules/suricata.rules。
(2.2.2)suricata-update [OPTIONS]
-h, --help:
显示帮助信息
-D <directory>, --data-dir <directory>:
设置备用数据目录。默认值:/var/lib/suricata
-c <filename>, --config <filename> :
suricata-update配置文件的路径。默认值:/etc/suricata/update.yaml
-q, --quiet:
安静地跑。仅显示警告和错误消息。
-v, --verbose:
提供更详细的输出
--suricata-conf :
suricata配置文件的路径。默认值:/etc/suricata/suricata.yaml
--suricata <path>:
Suricata程序的路径。如果没有提供, suricata-update将尝试在您的路径上找到Suricata。Suricata程序用于确定Suricata的版本以及提供有关Suricata配置的信息。
--suricata-version <version>:
将Suricata版本设置为特定版本,而不是检查路径上的Suricata版本。
--user-agent <string>:
为HTTP请求设置自定义用户代理字符串。
-o, --output:
要将规则输出到的目录。默认值:/var/lib/suricata/rules
--force:
强制远程规则文件下载(如果它们不是刚刚下载),或者远程校验和与缓存副本匹配。
--merged=<filename>:
写一个包含所有规则的文件。这可以作为补充--output或替代使用--output。
--no-merge:
不要将规则合并到单个规则文件中。警告:如果2个输入规则文件具有相同名称,则不会尝试解决冲突。
--yaml-fragment=<filename.yaml>:
输出包含规则文件部分的YAML片段将列出所有下载的规则文件以包含在 suricata.yaml中
--url=<url>:
从中下载规则的URL。此选项可以多次使用
--local=<filename or directory>
要包含的本地规则文件的文件名或目录的路径。如果路径是目录,则将加载以.rules结尾的所有文件。接受通配符但是为了避免shell扩展,必须引用参数.如:--local '/etc/suricata/custom-*.rules'
--sid-msg-map=<filename>
输出v1样式的sid-msg.map文件。
--sid-msg-map-2=<filename>
输出v2样式的sid-msg.map文件。
--disable-conf=<disable.conf>
指定禁用过滤器的配置文件。
--enable-conf=<enable.conf>
指定启用规则的配置文件。
--modify-conf=<modify.conf>
指定规则修改过滤器的配置文件。
--drop-conf=<drop.conf>
指定丢弃过滤器的配置文件。
--ignore=<pattern>
要忽略的文件名。这是一个与规则文件的基名匹配的模式。可以多次指定此参数。默认值:* deleted.rules。如:--ignore dnp3-events.rules --ignore deleted.rules --ignore "modbus*"
--no-ignore
禁用-ignore选项。最有用的是禁用默认忽略模式而不添加其他模式。
--etopen
下载ET / Open规则集。这是默认操作,不用--url提供任何选项或未配置任何源。除了命令行上提供的任何URL或配置中提供的源之外,还可以使用此选项启用ET / Open规则集
--dump-sample-configs
输出示例配置文件为--disable, --enable,--modify和--threshold-in命令。
--threshold-in=<threshold.conf.in>
指定threshold.conf输入模板
--threshold-out=<threshold.conf>
指定要输出的已处理threshold.conf的名称
-T <command>, --test-command <command>
指定自定义测试命令以在重新加载Suricata之前测试规则。这将覆盖默认命令,也可以在配置文件中指定test-command。
--no-test
禁用测试命令并继续进行,就像它已经通过一样。
--reload-command=<command>
更新规则后运行的命令; 如果未对输出文件进行任何更改,则不会运行。例如:--reload-command='sudo kill -USR2 $(cat /var/run/suricata.pid)'将告诉Suricata重新加载其规则。
--no-reload
禁用Suricata规则重新加载。
-V, --version
显示suricata-update的版本。
(2.3) 规则匹配
可以使用以下方法执行禁用,启用,转换为删除或修改的匹配规则:
(2.3.1)签名ID匹配
签名ID只能通过其签名ID进行匹配,例如:1034 。生成器ID还可用于与其他工具兼容,如:1:1034
(2.3.2)正则表达式匹配
正则表达式匹配将匹配完整规则上的正则表达式。例:
re:heartbleed
re:MS(0[7-9]|10)-\d+
(2.3.3)组匹配
组匹配器与加载规则的组匹配。基本上这是没有前导路径或文件扩展名的文件名。例:
group:emerging-icmp.rules
group:emerging-dos
也可以使用类似于Unix shell中使用的通配符的通配符匹配:
group:*deleted*
(2.3.4)文件名匹配
文件名匹配器与加载规则的文件名匹配,并考虑完整路径。允许使用Shell通配符模式:
filename:rules/*deleted*
filename:*/emerging-dos.rules
(2.4)修改规则
可以使用正则表达式搜索和替换来完成规则修改。规则修改说明符的基本格式是:
<match> <from> <to>
其中<match>是上面的规则匹配器之一,<from>是要替换的文本,<to>是替换文本。将所有警报规则转换为drop的示例:
re:. ^alert drop
将noalert的所有丢弃规则转换回警报的示例:
re:. "^drop(.*)noalert(.*)" "alert\\1noalert\\2"
2.3 配置suricata加载suricata-update更新的规则
Suricata-Update采用与Suricata传统方法不同的规则文件约定。最明显的区别是默认情况下存储规则在 /var/lib/suricata/rules/suricata.rules
方式一:使用 -s 选项
suricata -s /var/lib/suricata/rules/suricata.rules
方式二:修改suricata.yaml配置文件。
default-rule-path:/var/lib/suricata/rules
rule-files:
-suricata.rules
2.4 使用其他可用的规则源
(2.4.1)首先使用update-sources命令更新规则源索引:
suricata-update update-sources
(2.4.2)然后列出索引中的源:
suricata-update list-sources
(2.4.3)现在启用ptresearch/attackdetection规则集,每个规则集都有一个名称,该名称具有“供应商”前缀,后跟一个集名称。例如:
suricata-update enable-source ptresearch/attackdetection
(2.4.4)再次更新规则
suricata-update
2.5 其他的一些命令
(2.5.1)列表启用的源:
suricata-update list-enabled-sources
(2.5.2)禁用源:
suricata-update disable-source et/pro
禁用源会保留源配置但禁用。当源需要诸如您不想丢失的代码之类的参数时,这很有用,如果您删除了源代码,则会发生这种情况 。
re-enables在不提示用户输入的情况下重新启用已禁用的源。
(2.5.3)删除源
suricata-update remove-source et/pro
这将删除此源的本地配置。重新启用 et / pro将需要重新输入您的访问代码。
(2.5.4)按URL添加源
suricata-update add-source <name> <url>
2.6 控制使用哪些规则
默认情况下,suricata-update会将所有规则合并到一个文件“/var/lib/suricata/rules/suricata.rules”中。
要启用默认禁用的规则,请使用'/etc/suricata/enable.conf'.
同样,要禁用规则,请使用/etc/suricata/disable.conf.
更新这些文件后,再次重新运行suricata-update.
最后重启Suricata。