
次のエラー メッセージが、firewalld ログ ファイルに繰り返し表示されます。
2019-07-19 14:18:20 ERROR: COMMAND_FAILED: Direct: '/usr/sbin/iptables-restore -w -n' failed: iptables-restore v1.4.21: Set fail2ban-ssh doesn't exist.
Error occurred at line: 2
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
このエラーを修正するためにあちこち検索しましたが、うまくいきませんでした。私は、firewalld と fail2ban を備えた Centos7 を使用しています。
問題が正確にどこにあるのかわかりません。これは fail2ban または firewalld に関連していますか?
systemctl status firewalld -l を実行すると、次のエラー メッセージが表示されます。
firewalld[703]: WARNING: '/usr/sbin/iptables-restore --wait=2 -n' failed: iptables-restore v1.4.21: Set fail2ban-sshd doesn't exist.
Error occurred at line: 2
Try 'iptables-restore -h' or 'iptables-restore --help' for more information.
firewalld[703]: ERROR: COMMAND_FAILED
fail2ban 用の jail.local の内容は次のとおりです。
[DEFAULT]
ignoreip = 127.0.0.0/8
bantime = 86400
findtime = 86400
maxretry = 5
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = firewallcmd-ipset
[sshd]
enabled = true
[ssh]
enabled = true
filter = sshd
action = %(action_)s
logpath = /var/log/secure
maxretry = 5
その他のすべての構成はシステムのデフォルトに従います。
次のようにfirewalldをインストールしました。
sudo yum install firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --remove-service=smtp
sudo systemctl enable firewalld
最後に、次のコマンドを実行します。
# firewall-cmd --direct --get-all-rules
次のような結果が得られました:
ipv4 filter INPUT 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
ipv4 filter INPUT 0 -p tcp -m multiport --dports 0:65535 -m set --match-set fail2ban-ssh src -j REJECT --reject-with icmp-port-unreachable
私はサーバーよりも開発に力を入れているので、ご協力いただければ幸いです。
これをできるだけ早く修正する必要があります。これは私の実稼働サーバー用です。
ありがとう!
答え1
/var/log/fail2ban.log または保存した場所を確認すると、おそらく次のような内容が表示されるはずです。
2019-08-01 08:16:14,509 fail2ban.utils [11727]: #39-Lev. 3ef3cd40 -- exec: ipset create f2b-apache-myadmin hash:ip timeout 2160000 firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports http,https -m set --match-set f2b-apache-myadmin src -j REJECT --reject-with icmp-port-unreachable 2019-08-01 08:16:14,510 fail2ban.utils [11727]: エラー 3ef3cd40 -- stderr: "ipset v7.2: 構文エラー: '2160000' は範囲 0-2147483 外です" 2019-08-01 08:16:14,510 fail2ban.utils [11727]: エラー3ef3cd40 -- stderr: 「エラー: COMMAND_FAILED: '/usr/sbin/iptables-restore -w -n' が失敗しました: iptables-restore v1.8.2 (レガシー): セット f2b-apache-myadmin が存在しません。」 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ERROR 3ef3cd40 -- stderr: '' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ERROR 3ef3cd40 -- stderr: 'Error occurred at line: 2' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ERROR 3ef3cd40 -- stderr: "詳細については、「iptables-restore -h」または「iptables-restore --help」を試してください。" 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ERROR 3ef3cd40 -- stderr: '' 2019-08-01 08:16:14,510 fail2ban.utils [11727]: ERROR 3ef3cd40 -- 13 が返されました 2019-08-01 08:16:14,510 fail2ban.actions [11727]: ERROR ban jail 'apache-catchall' アクション 'firewallcmd-ipset' 情報 'ActionInfo({'ip': '128.14.209.154', 'family': 'inet4', 'fid': at 0x3f24b200>, 'raw-ticket': at 0x3f24b7a0>})': アクション Jail('apache-myadmin')/firewallcmd-ipset の開始エラー 2019-08-01 08:16:14,510 fail2ban.actions [11727]: NOTICE [apache-myadmin]
ipsetの最大タイムアウトは2147483までです。ipset.netfilter.org/ipset.man.html より
タイムアウト すべてのセット タイプは、セットの作成時およびエントリの追加時にオプションのタイムアウト パラメータをサポートします。create コマンドのタイムアウト パラメータの値は、新しいエントリのデフォルトのタイムアウト値 (秒単位) を意味します。タイムアウト サポートを使用してセットを作成すると、エントリの追加時に同じタイムアウト オプションを使用して、デフォルト以外のタイムアウト値を指定できます。タイムアウト値が 0 の場合、エントリはセットに永続的に追加されます。すでに追加されている要素のタイムアウト値は、-exist オプションを使用して要素を再度追加することで変更できます。可能な最大のタイムアウト値は 2147483 (秒単位) です。
ipset を firewalld 経由で使用しているため、各 jail の jail.local ファイルで禁止時間を短縮し、デフォルトを最大 2147483 秒 (または日数で表した値) に設定する必要があります。これで問題ありません。
答え2
この質問は数年前のものですが、Centos7 を実行している古いサーバーでこの問題に遭遇しました。最終的に、/etc/firewalld/direct.xml に誤った ipset プレフィックスが残っていることが問題の原因であることが判明しました。
……--match-set fail2ban-sshd
... の代わりに ...
...--match-set f2b-sshd
direct.xml 内のこの誤ったプレフィックスを修正すると、エラーが解決しました。