Fail2ban
fail2ban 日誌充滿“無法執行禁令監獄‘recidive’操作‘iptables-multiport’”
我的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