suricata-update规则管理

2019-06-19  本文已影响0人  lx_jian

虽然可以手动下载和安装规则,但建议使用管理工具。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。

上一篇下一篇

猜你喜欢

热点阅读