Linux

永久禁止IP時fail2ban的奇怪行為

  • August 11, 2019

根據文件,將監獄禁令時間設置為負值應該會導致永久禁令。但是,一旦完成,與將 bantime 設置為正整數時相比,以下行為會發生變化:

1)ipset list不顯示fail2ban-sshd 雜湊表

2)firewall-cmd --direct --get-all-rules為空

3)/var/log/fail2ban.log變成單行。有趣的條目

sshd

$$ 25772 $$:來自 93.174.89.88 埠 37477 的無效使用者 ubuntu,“ip”:“93.174.89.88”,“ipmatches”:在 0x7f4588f9dc08>,“ipfailures”:在 0x7f4588f9daa0>,“時間”:1536301842.0844,“失敗”:18076 ‘ipjailfailures’: at 0x7f4588f9dd70>})’: 錯誤禁止 93.174.89.88

4)/var/log/messages有以下

防火牆

$$ 916 $$:警告:’/usr/sbin/iptables-restore –wait=2 -n’失敗:iptables-restore v1.4.21:設置fail2ban-sshd不存在。#012#012錯誤發生在行:2#012Try’ iptables-restore -h’ 或 ‘iptables-restore –help’ 以獲取更多資訊。防火牆$$ 916 $$: 錯誤: COMMAND_FAILED

唯一按預期工作的命令是fail2ban-client status sshd,但是顯示被禁止的 IP 仍然嘗試連接。我認為所有問題的根源在於,一旦整數為負,無論出於何種原因都不會創建 ipset。

有任何想法嗎?此外,該命令是否與應用新配置時fail2ban-client reload具有相同的影響?systemctl restart fail2ban.service

就我而言, /etc/fail2ban/jail.d/local.conf

[sshd]
enabled = true
bantime = -1
findtime = 3600
maxretry = 5
action = %(action_)s

這是舊版本的fail2ban 中的一個錯誤。此後它已被修復,但如果您的 Linux 發行版仍然提供舊版本,您可能還需要一種解決方法。

解釋問題和修復的GitHub 問題還包括一個解決方法:

這在較新的版本中已修復。對於 0.9,您可以簡單地覆蓋監獄內的 bantime (timeout) 參數(ipset 持久規則的參數超時為 0)。

[sshd]
bantime = -1
action = %(banaction)s[name=%(__name__)s, bantime=0, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]

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