なんらかの理由で理解できないため、Fail2Banはipset/firewalldにIPアドレスを追加することを拒否します。
私は中国のIPアドレスによってブルートフォースされていますが、Fail2Banは実際にそれを禁止しようとしているようです(少なくともfail2ban-client status sshdコマンドで表示されます)が、サーバーのブルートフォーシングを実際に停止することはありません。 ipset/iptables/firewalldには表示されません。
fail2ban-client status sshd:
[root@GITserver alex]# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 2
| |- Total failed: 93613
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 2
|- Total banned: 1003
`- Banned IP list: 61.177.172.17 95.103.88.106
ipset/firewalld:
[root@GITserver alex]# ipset list
[root@GITserver alex]# firewall-cmd --direct --get-all-rules
[root@GITserver alex]#
何か案は?リクエストに応じてさらにログを追加できます
編集、まだ解決策はなく、ブルートフォースとDDoSが行われていますが、/ var/log/fail2ban.logが完全なものである場合に役立ちます https://paste.fedoraproject.org/paste/Y5aPF8~WY~fpuhaZBDo7Ml5M1UNdIGYhyRLivL9gydE =/raw (警告:11MB)
提案は非常に多くの評価を受けます。まだ攻撃を受けています。
Edit2:ログを見ると、/ etc/fail2ban/jail.d/00-firewalld.confでbanaction = firewallcmd-ipsetが定義されていても、iptablesを使用しているように見えました。メインのjail.confを編集してこれを修正しましたが、何も変わりませんでした。上記のログでリロード後の出力を確認できます。
Firewallcmd-ipsetが実際にシステムに存在することを確認してください。 CentOS 7.3以降には存在しません。
これは firewalldベースの回避策 firewallcmd-ipsetを再作成します。私のシステムに実装しようとしています。
同じ問題があり、fail2banには修正が必要なバグがいくつかあると思います。たとえば、00-firewalld.confは完全に無視されているようです。
それを解決するにはsshdフィルターセクションで目的のアクションを設定します。私のsshd刑務所は次のようになります(/etc/fail2ban/jail.d/sshd.local)
[sshd]
enabled = true
port = ssh
# set the action explicitly or the default iptables-allports will be used
# ==============================
action = firewallcmd-ipset
# ==============================
logpath = %(sshd_log)s
findtime = 600
maxretry = 3
bantime = 86400
今問題はあなたの刑務所での禁止時間が無視され、/ etc/fail2ban/action.d/firewalld-ipset.confで定義されたものが優先されることです。そのアクション設定ファイルを編集して、新しい禁止時間を含めます
...
bantime=86400
...
そして最後の問題は、恒久的な禁止のbantime = -1が機能しないように見えることです。開発者 fixed これはfail2ban +0.9ですが、fail2ban-0.9.7-1.el7を使用していますが、私には機能しません。
あなたの商品について私が正確に行ったのは、firewallcmd-ipset.confをfirewalldcmd-ipset-custom.confにコピーし、そこでbantimeを編集することでした。最後に、sshd jail定義でアクションをaction = firewallcmd-ipset-customに設定します
変更後、fail2banサービスを再起動します。
一部の出力:
# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-default src -j REJECT --reject-with icmp-port-unreachable
# iptables -L -n | grep fail2ban
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22 match-set fail2ban-default src reject-with icmp-port-unreachable
# ipset list | head
Name: fail2ban-default
Type: hash:ip
Revision: 1
Header: family inet hashsize 1024 maxelem 65536 timeout 86400
Size in memory: 53520
References: 1
Members:
x.x.x.x timeout 78498
y.y.y.y timeout 78506
z.z.z.z timeout 78454
それでもまだ得られないのは、ipsetがfail2ban-sshdではなくfail2ban-defaultと呼ばれる理由です。おそらく何か設定が間違っていますが、ここで説明する手順は機能しており、IPがセットからブロックされており、 +1000個のルールがiptablesに追加されました。
VirtualMinを介してインストールされたfail2banを備えたVPS(CentOS Linux 7.6.1810)でこれを機能させるために、私は絶対的な年齢を過ごしました。
私の状況では、Fail2Banはログから正しく機能していました
tail -f /var/log/fail2ban.log
そして、禁止する決定を正しく記録しましたが、これらはファイアウォールルールに処理されていませんでした。 Mosheによって投稿された回答のコメントのallを読み、そこで3つの解決策を試してもうまくいかなかったので、 Geraden07による解決策 がそのフォーラム投稿からリンクされたGitHubディスカッションはCentosで機能しました。
1。新しいアクションルールを作成します(/etc/fail2ban/action.d/custom-firewalld.conf)
[INCLUDES]
before =
[Definition]
actionstart =
actionstop =
actioncheck =
actionflush = sed -i '/<source address=/d' /etc/firewalld/zones/drop.xml
actionban = firewall-cmd --change-source=<ip> --zone=drop && firewall-cmd --change-source=<ip> --zone=drop --permanent
actionunban = firewall-cmd --remove-source=<ip> --zone=drop && firewall-cmd --remove-source=<ip> --zone=drop --permanent || echo 0
[Init]
2。この新しいルールをデフォルトとして使用するようにjail configを作成/更新します(/etc/fail2ban/jail.local)
[DEFAULT]
banaction = custom-firewalld
3。必要に応じて新しいルールを使用するようにデフォルトをオーバーライドするすべての刑務所を更新します
私はこれを禁止および禁止解除についてテストしました、そしてそれは私のために働いた唯一のものです。