Suricata自定义规则无法加载至suricata.rules的排查求助
排查Suricata自定义规则未触发告警问题
环境信息
- 系统:Ubuntu 20.04.5 LTS(Focal Fossa)
- Suricata运行模式:IDS(af-packet)
- 执行用户:root
系统版本验证输出:
NAME="Ubuntu" VERSION="20.04.5 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.5 LTS" VERSION_ID="20.04"
自定义规则配置
已添加SSH非标准端口告警规则,使用自定义规则段起始SID 1000000,规则内容:
########### Test Rules ############# alert ssh any any -> xxx.xxx.60.6 !22 (msg:"SSH TRAFFIC on non-SSH port"; flow:to_client, not_established; classtype: misc-attack; target: dest_ip; sid:1000000;)
文件权限验证
规则文件权限与系统默认规则一致,均为root所有:
ls -halt /var/lib/suricata/rules/ total 22M -rw-r--r-- 1 root root 3.2K Oct 17 00:00 classification.config drwxr-x--- 2 root root 4.0K Oct 17 00:00 . -rw-r--r-- 1 root root 22M Oct 17 00:00 suricata.rules -rw-r--r-- 1 root root 210 Oct 13 21:45 local.rules
配置文件规则加载验证
已在suricata.yaml中配置加载自定义规则文件,且已重启服务:
cat /etc/suricata/suricata.yaml | grep "rule-files" -A 5 -B 5 ## #default-rule-path: /var/lib/suricata/rules default-rule-path: /etc/suricata/rules rule-files: - suricata.rules - /var/lib/suricata/rules/local.rules - /etc/suricata/rules/*.rules
问题现象
- 执行
cat /var/lib/suricata/rules/suricata.rules | grep sid:1000000未匹配到规则(注:自定义规则实际存放在local.rules而非suricata.rules) - 通过tcpdump确认存在符合规则匹配条件的流量,但
fast.log中无该规则的告警记录(其他规则可正常生成日志) - Suricata服务启动无报错:
systemctl status suricata.service ● suricata.service - LSB: Next Generation IDS/IPS Loaded: loaded (/etc/init.d/suricata; generated) Active: active (running) since Mon 2022-10-17 13:11:39 UTC; 8h ago Docs: man:systemd-sysv-generator(8) Process: 2184275 ExecStart=/etc/init.d/suricata start (code=exited, status=0/SUCCESS) Tasks: 78 (limit: 618963) Memory: 25.2G CGroup: /system.slice/suricata.service └─2184295 /usr/bin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid --af-packet -D -v> Oct 17 13:11:39 sec3 systemd[1]: Starting LSB: Next Generation IDS/IPS... Oct 17 13:11:39 sec3 suricata[2184275]: Starting suricata in IDS (af-packet) mode... done. Oct 17 13:11:39 sec3 systemd[1]: Started LSB: Next Generation IDS/IPS.
排查步骤建议
验证规则是否被正确加载
执行规则检查命令,查看规则解析状态:suricata -c /etc/suricata/suricata.yaml -T重点查看输出中是否包含sid:1000000的规则,以及是否存在语法错误提示。
修正规则逻辑问题
当前规则的flow:to_client, not_established条件存在逻辑矛盾:- SSH初始连接请求是从客户端发往服务器(对应
to_server方向),而规则指定to_client(服务器到客户端),导致无法匹配初始流量 - 建议修改规则的flow条件,或先移除flow条件测试:
alert ssh any any -> xxx.xxx.60.6 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
- SSH初始连接请求是从客户端发往服务器(对应
确认规则文件加载状态
查看Suricata启动日志/var/log/suricata/suricata.log,确认是否成功加载/var/lib/suricata/rules/local.rules文件。直接指定规则文件测试
临时修改启动方式,仅加载自定义规则文件测试:systemctl stop suricata suricata -c /etc/suricata/suricata.yaml --af-packet -v -S /var/lib/suricata/rules/local.rules触发测试流量后,查看是否生成告警。
检查日志过滤配置
确认suricata.yaml中fast.log的配置,未排除misc-attack类别告警,且sid:1000000规则未被全局禁用。
内容的提问来源于stack exchange,提问作者GangGreenTemperTatum
相关产品推荐
相关产品推荐

