是否可以使用fail2ban正则表达式检测MAC地址?
来自日志文件
Jan 18 11:15:14 server kernel: [DROP]IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=1.2.3.4 DST=4.5.6.7 LEN=40 TOS=0x00 PREC=0x00 TTL=239
Fail2ban failregex
failregex = \[DROP\]IN=.* OUT= MAC=.* SRC=<HOST>*
结果为1.2.3.4
。然后,任何fail2ban action
都可以使用<ip>
变量。
是否可以做类似的事情?
failregex = \[DROP\]IN=.* OUT= MAC=<MAC> *
结果给出00:00:00:00:00:00:00:00:00:00:00:00:00:00
。然后,任何fail2ban action
都可以使用<mac>
变量作为示例。
有人有答案或任何文件吗?我没有找到有关fail2ban正则表达式或检测可能性的信息。
答案 0 :(得分:0)
不确定如何在Fail2Ban配置上执行此操作,我现在没有人可以测试。我做了一个小的bash脚本来测试这个,也许你可以从这里提取正则表达式。
#!/bin/bash
str="Jan 18 11:15:14 server kernel: [DROP]IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=1.2.3.4 DST=4.5.6.7 LEN=40 TOS=0x00 PREC=0x00 TTL=239"
[[ ${str} =~ \[DROP\].*MAC=([0-9:]+) ]] && test_output="${BASH_REMATCH[1]}"
echo $test_output
它提供输出:00:00:00:00:00:00:00:00:00:00:00:00:00:00
我在组内(在括号之间)捕获mac并将其与var进行对齐。也许可能就像你的<MAC>
。
我无法保证这一点,因为正如我所说的那样,我现在没有失败的情况下进行测试,所以这是一个非常狂野的事情......但是我可以冒昧地建议像这样的东西:
failregex = \[DROP\].*MAC=<MAC>
我希望它有所帮助。
答案 1 :(得分:0)
为方便起见,您可以在正则表达式中使用预定义的实体。是(?::: f {4,6}:)?(?P \ S +)的别名,它匹配主机名或IPv4地址(可能嵌入在IPv6地址中)。
我明白有可能使用自定义正则表达式,但如何?关于这一点的文章很多......