regex - fail2ban-regex 与 alert_json 格式的 snort 日志文件不匹配
问题描述
我尝试将 fail2ban-regex 与 alert_json 格式的 snort3 日志文件匹配。
日志文件中的示例 alert_json 输出:
{ "timestamp" : "21/03/22-12:23:56.370262", "seconds" : 1616412236, "action" : "allow", "class" : "none", "b64_data" : "lVAAFpTzAXEAAAAAoAJyELUuAAACBAW0BAIICikv9agAAAAAAQMDBw==", "dir" : "C2S", "dst_addr" : "6.7.8.9", "dst_ap" : "6.7.8.9:0", "eth_dst" : "00:11:22:33:44:55", "eth_len" : 102, "eth_src" : "11:11:22:33:44:55", "eth_type" : "0x800", "gid" : 1, "icmp_code" : 3, "icmp_id" : 0, "icmp_seq" : 0, "icmp_type" : 3, "iface" : "eth0", "ip_id" : 5814, "ip_len" : 68, "msg" : "ICMP Traffic Detected", "mpls" : 0, "pkt_gen" : "raw", "pkt_len" : 88, "pkt_num" : 2270045, "priority" : 0, "proto" : "ICMP", "rev" : 0, "rule" : "1:10000001:0", "service" : "unknown", "sid" : 10000001, "src_addr" : "1.2.3.4", "src_ap" : "1.2.3.4:0", "tos" : 192, "ttl" : 64, "vlan" : 0 }
我的 fail2ban-regex 不匹配:
^\{.*\"src_addr\"\ :\ \"<HOST>\".*\}$
我在 regexr.com 上试过这个,它匹配。我已经发现时间戳可能有问题,但我不知道是哪个?
有人可以帮忙吗?谢谢
解决方案
它可能取决于fail2ban版本,例如最新的fail2ban >= 0.10.6/0.11.2 不再需要时间戳(它会模拟“现在”),所以它向我显示IP和当前时间(当我执行它):
$ fail2ban-regex -v /tmp/log '^\{.*\"src_addr\"\ :\ \"<HOST>\".*\}$'
...
Lines: 1 lines, 0 ignored, 1 matched, 0 missed
要指定自己的datepattern
,您必须在过滤器中设置它(或使用-d
参数提供给 fail2ban-regex),所以这将起作用:
# either for timestamp tag:
$ fail2ban-regex -v -d ^\{\s*"timestamp"\s*:\s*"%y/%m/%d-%H:%M:%S\.%f" /tmp/log \"src_addr\"\ :\ \"<HOST>\"
# or for posix seconds (probably better because don't need conversion):
$ fail2ban-regex -v -d '"seconds"\s*:\s*{EPOCH}\s*,\s*' /tmp/log '\"src_addr\"\ :\ \"<HOST>\"'
请注意,在 fail2ban 配置中,由于 python ini-configs 替换规则,您必须转义 every %
as 。
另请注意,fail2ban 在应用 pref- 或之前会删除部分消息匹配日期模式。%%
failregex
另请注意,您的 RE 有点脆弱,请参阅https://github.com/fail2ban/fail2ban/issues/2932#issuecomment-777320874以获得更好的示例。
推荐阅读
- ios - 如何使用 Swift 5 从 URL 获取 HTML 代码
- ios - Firebase - 如何在创建新用户之前检查电话身份验证中是否存在电话号码
- python - 为什么在 python 中导入模块时出现“ModuleNotFoundError: No module named 'YEETER'”?
- c++ - 计算二维图像的垂直梯度会导致奇怪的输出
- excel - 为什么我在以下代码中不断收到“Else without If”错误?
- nexus - 我应该将哪种存储库格式与 Sonatype Nexus 一起用于非通用构建输出?
- c - CSFML顶点数组和绘图
- python - 返回字符串“hi”出现在给定字符串中任意位置的次数——Python codingbat问题
- angular - 组件构造函数中的依赖注入
- python - 如何解决“找不到命令错误”。在 cmd 提示符下给出 spyder3 命令时