0

是否可以使用 fail2ban 正则表达式检测 MAC 地址?

我能做什么:检测源IP地址

从日志文件

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 = \[DROP\]IN=.* OUT= MAC=.* SRC=<HOST>*

结果给1.2.3.4。然后,任何fail2banaction都可以使用该<ip>变量。

我想做的:检测MAC地址

有可能做这样的事情吗?

failregex = \[DROP\]IN=.* OUT= MAC=<MAC> *

结果应该给00:00:00:00:00:00:00:00:00:00:00:00:00:00。然后,任何fail2banaction都可以使用<mac>变量来举例。

有人有答案或任何文件吗?我没有找到有关 fail2ban 正则表达式或检测可能性的信息。

4

2 回答 2

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>.

我不能保证这一点,因为正如我所说,我现在没有 fail2ban 可以测试,所以是“疯狂的事情”......但我可以冒险提出这样的建议:

failregex = \[DROP\].*MAC=<MAC>

我希望它有所帮助。

于 2017-01-19T08:32:24.703 回答
0

来自fail2ban手册网站

为方便起见,您可以在正则表达式中使用预定义的实体。是 (?:::f{4,6}:)?(?P\S+) 的别名,它匹配主机名或 IPv4 地址(可能嵌入在 IPv6 地址中)。

我知道可以使用自定义正则表达式,但是如何?这方面的文章不多。。

于 2017-01-19T17:57:54.240 回答