web-dev-qa-db-ja.com

fail2banはIPをipsetに追加しません(ファイアウォール)

なんらかの理由で理解できないため、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を再作成します。私のシステムに実装しようとしています。

2
Moshe Yudkowsky

同じ問題があり、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に追加されました。

1
ibai

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。必要に応じて新しいルールを使用するようにデフォルトをオーバーライドするすべての刑務所を更新します

私はこれを禁止および禁止解除についてテストしました、そしてそれは私のために働いた唯一のものです。

1
Rory