Fail2ban:获取mac地址没有ip

时间:2017-01-18 10:29:46

标签: centos iptables fail2ban

是否可以使用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

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

结果为1.2.3.4。然后,任何fail2ban action都可以使用<ip>变量。

我想做什么:检测MAC地址

是否可以做类似的事情?

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

结果给出00:00:00:00:00:00:00:00:00:00:00:00:00:00。然后,任何fail2ban action都可以使用<mac>变量作为示例。

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

2 个答案:

答案 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)

来自fail2ban manual website

  

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

我明白有可能使用自定义正则表达式,但如何?关于这一点的文章很多......