Fail2ban

fail2ban 日誌充滿“無法執行禁令監獄‘recidive’操作‘iptables-multiport’”

  • April 1, 2019

我的fail2ban.log中有很多這樣的錯誤

fail2ban.actions        [13370]: ERROR   Failed to execute ban jail 'recidive' action 'iptables-multiport' info 'CallingMap({'ip': '164.132.49.140', 'matches': '2019-04-01 08:30:14,100 fail2ban.actions        [1415]: NOTICE  [sshd] Ban 164.132.49.140\n2019-04-01 23:08:43,345 fail2ban.actions        [26861]: NOTICE  [sshd] Ban 164.132.49.140\n2019-04-01 08:30:14,100 fail2ban.actions        [1415]: NOTICE  [sshd] Ban 164.132.49.140\n2019-04-01 23:08:43,345 fail2ban.actions        [26861]: NOTICE  [sshd] Ban 164.132.49.140', 'ipmatches': <function Actions.__checkBan.<locals>.<lambda> at 0x7fa4a8366598>, 'time': 1554154478.985568, 'ipjailfailures': <function Actions.__checkBan.<locals>.<lambda> at 0x7fa4a8366510>, 'ipfailures': <function Actions.__checkBan.<locals>.<lambda> at 0x7fa4a8366488>, 'failures': 4, 'ipjailmatches': <function Actions.__checkBan.<locals>.<lambda> at 0x7fa4a8366400>})': Error starting action

我看到這是一個單行錯誤,但在我看來,模式匹配存在錯誤或日誌中的其他內容導致了循環,因為模式現在甚至匹配錯誤行。

編輯我在日誌中發現這些行可能與錯誤有關

2019-04-01 23:44:35,895 fail2ban.action         [19570]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-recidive[ \t]' -- stdout: b''
2019-04-01 23:44:35,896 fail2ban.action         [19570]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-recidive[ \t]' -- stderr: b''
2019-04-01 23:44:35,897 fail2ban.action         [19570]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-recidive[ \t]' -- returned 1
2019-04-01 23:44:35,898 fail2ban.CommandAction  [19570]: ERROR   Invariant check failed. Trying to restore a sane environment
2019-04-01 23:44:36,114 fail2ban.action         [19570]: ERROR   iptables -w -N f2b-recidive
iptables -w -A f2b-recidive -j RETURN
iptables -w -I INPUT -p all -m multiport --dports 0:65535 -j f2b-recidive -- stdout: b''

這是我在 jail.local 中的累犯定義

[recidive]

enabled  = true
logpath  = /var/log/fail2ban.log
filter   = recidive
findtime = 86400
maxretry = 2
bantime  = 648000
protocol = all

我的 filter.d/recidive.conf 有這一行

failregex = ^(%(__prefix_line)s| %(_daemon)s%(__pid_re)s?:\s+)NOTICE\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$

這都是我所知道的。

如果有用的話,我在 ubuntu 16.04 上。

問題是:如何調試配置錯誤,甚至如何恢復預設工作配置。我只有另一個自定義過濾器(pihole),我知道如何恢復它,但我不知道是否有類似 fail2ban 配置的重置

這實際上是我的解決方案。只有接下來的幾個小時才會告訴我這是否真的是解決方案。

我停止了fail2ban

systemctl停止fail2ban

然後清空它的日誌

echo > /var/log/fail2ban.log

然後action在我的 reciive 配置中添加了一個

action   = iptables-allports[name=recidive, protocol=all]

然後重啟failban服務

systemctl start fail2ban

引用自:https://serverfault.com/questions/961007