疑问:
1. H3C特征库好像不是基于完全的sort语句写的特征库?
2. T1060存在授权的情况下,依然只能导入一条自定义特征库,再次上传新的自定义特征库会覆盖之前的自定义特征库。
3. 如果DNS请求里需要匹配丢弃多条域名的特征库该如何写?
比如,我需要在DNS里规避 *.***.*** 和 *.***.*** 两个域名,该如何写?目前写了单条如下,已生效。
drop udp any any -> any 53 (msg:"DNS Query for *.***.***"; content:"|04|oray|03|com"; pcre:"/[\x01-\x40][a-zA-Z0-9\-]{1,64}\x04oray\x03com/i"; classtype:bad-unknown; sid:1000001; rev:1;)
参考案例V7防火墙IPS自定义特征库的写作规则 - 知了社区
PS自定义特征库的写作
按照这种模版写进去,后面如果有新的域名客户就可以自己添加了。
例子:|11|代表 advainvienvaiebai 是17个字符,|02|代表 md 是2个字符,采用16进制;sid:1计数,相当于编写一个ID(和原本库的ID不一样),自定义中不能有重复的
advainvienvaiebai.md
丢弃类:
drop udp any any -> any any (msg:"DNS Query for advainvienvaiebai.md"; content:"|11|advainvienvaiebai|02|md"; classtype:bad-unknown; sid:101; rev:1;)
告警类:
alert udp any any -> any any (msg:"DNS Query for aefobfboabobfaoua.name"; content:"|11| aefobfboabobfaoua |04|name"; classtype:bad-unknown; sid:102; rev:1;)
上述的放在一个txt,然后命名后缀改成.rules
暂无评论
一、问题 1:H3C 自定义特征是否完全兼容标准 Snort/Suricata 规则?
核心结论
不完全兼容标准 Snort sort/pcre 全量语法,做了裁剪与适配,存在差异
基础字段通用:content、pcre、msg、sid、rev、classtype、drop/alert/pass、端口协议匹配段(udp/tcp any any -> any 53)和标准 Snort 一致;
不支持 / 限制的标准 Snort 语法:
不支持sort排序关键字、flowbits复杂流状态联动、byte_test深度字节运算、reference、metadata扩展字段;
pcre 正则存在长度限制,无法写超长正则;
不支持多规则文件分开导入,整机仅单文件存储全部自定义特征;
适配差异:
H3C 防火墙 IPS 底层检测引擎自研,仅保留基础匹配能力,复杂 Snort 高级扩展语法直接丢弃不生效,仅保留载荷字符串 content、正则 pcre两大核心匹配字段。
二、问题 2:导入多条自定义规则会覆盖原有规则,只能存一份
根本原因
T1060 的自定义特征存储机制:整机仅维护 1 个自定义特征文件分区,上传新 txt 规则文件时,设备会清空原有全部自定义规则,再加载新文件,不是追加模式。
解决办法(唯一方案)
所有自定义 DNS 域名拦截规则,全部写在同一个 txt 规则文件内,多条规则并列,一次性上传
不能分开多次上传,每次新增域名拦截,需要把旧规则 + 新规则合并到同一个文档,重新上传覆盖。
授权不影响该机制,无论 IPS 特征库授权是否齐全,自定义特征分区容量固定,仅支持单文件批量导入。
三、问题 3:多条 DNS 泛域名拦截规则写法(两个域名批量丢弃,同文件多条规则)
需求
拦截两类 DNS 查询:
*.***.***
*.shturl.(示例替换为你的第二个域名)
规范完整规则文件写法(一个 txt 里放 2 条 sid 不重复规则)
关键约束:每条自定义规则sid必须唯一,不能重复,推荐从 1000001 依次递增
snort
# 规则1:拦截 *.***.*** DNS查询
drop udp any any -> any 53 (
msg:"DNS Drop *.***.*** domain query";
content:"|04|oray|03|com";
pcre:"/[\x01-\x40][a-zA-Z0-9\-]{1,64}\x04oray\x03com/i";
classtype:bad-unknown;
sid:1000001;
rev:1;
)
# 规则2:拦截 *.shturl. DNS查询(替换为你第二个目标域名)
drop udp any any -> any 53 (
msg:"DNS Drop *.shturl. domain query";
content:"|03|xxx|03|com";
pcre:"/[\x01-\x40][a-zA-Z0-9\-]{1,64}\x03xxx\x03com/i";
classtype:bad-unknown;
sid:1000002;
rev:1;
)
关键细节说明
content 前置匹配优化
先固定匹配域名根段|04|oray|03|com,引擎先快速过滤无匹配报文,再执行 pcre 正则,降低设备性能消耗;
泛域名正则解析
[\x01-\x40][a-zA-Z0-9\-]{1,64} 匹配任意长度子域名(字母、数字、横杠),完美实现*.域名.com泛匹配;
多域名扩展方法
新增第三个域名,直接在文件末尾追加第三条规则,sid 改为 1000003,依次递增,全部写完后一次性上传设备。
四、补充优化方案:单条 pcre 匹配多个域名(精简写法,减少规则数量)
如果域名较多,可合并 pcre 正则,单条规则拦截多个域名,减少规则条目:
snort
drop udp any any -> any 53 (
msg:"DNS Drop multi domain ***.*** / shturl.";
content:"com";
pcre:"/[\x01-\x40][a-zA-Z0-9\-]{1,64}(\x04oray|\x03xxx)\x03com/i";
classtype:bad-unknown;
sid:1000001;
rev:1;
)
(\x04oray|\x03xxx) 使用正则或逻辑,同时匹配两个域名根段;
优点:只用 1 条规则实现多域名拦截;缺点:正则复杂,高并发 DNS 场景轻微占用 CPU,域名数量少推荐使用。
五、上传 & 校验操作步骤
新建 txt 文本,把所有 DNS 拦截规则全部写入,sid 不重复;
T1060 Web 页面:【IPS】→【自定义特征库】→导入文件,确认上传成功;
校验规则加载:
bash
运行
display ips custom-signature
能看到两条 sid=1000001、1000002 规则即生效;
4. 流量测试:客户端发起对应域名 DNS 解析,设备会话日志拦截报文,产生对应 msg 告警。
六、避坑要点
每次新增域名,必须合并所有旧规则到同一个 txt,再上传,否则原有规则被覆盖丢失;
sid 全局唯一,重复 sid 会导致规则加载失败,设备直接丢弃冲突规则;
pcre 正则不要过长,超过 256 字符会解析失效;
仅 UDP 53 覆盖普通 DNS,若存在 TCP DNS(大包解析),补充一套 tcp any any -> any 53 的同款规则。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论