Fail2BanはCentOS 7で起動しません。

Fail2BanはCentOS 7で起動しません。

完全に更新されたCentOS 7を実行しており、Fail2Banを動作させようとして問題が発生しました。

特に無差別SSH攻撃を防止しようとしています。私はすべてが正しく設定されていると確信しています。 sshdは刑務所で有効化され、無効化タスクjail.localとして使用され、firewallcmd-ipsetSELinuxではなくFirewalldを使用します。

ただし、Fail2Banを実行すると、次のように表示されます/var/log/fail2ban.log

2017-06-21 06:11:44,186 fail2ban.server         [3357]: INFO    Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.6
2017-06-21 06:11:44,186 fail2ban.database       [3357]: INFO    Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2017-06-21 06:11:44,188 fail2ban.jail           [3357]: INFO    Creating new jail 'sshd'
2017-06-21 06:11:44,206 fail2ban.jail           [3357]: INFO    Jail 'sshd' uses systemd {}
2017-06-21 06:11:44,230 fail2ban.jail           [3357]: INFO    Initiated 'systemd' backend
2017-06-21 06:11:44,232 fail2ban.filter         [3357]: INFO    Set maxRetry = 3
2017-06-21 06:11:44,232 fail2ban.filter         [3357]: INFO    Set jail log file encoding to UTF-8
2017-06-21 06:11:44,233 fail2ban.actions        [3357]: INFO    Set banTime = 86400
2017-06-21 06:11:44,233 fail2ban.filter         [3357]: INFO    Set findtime = 3600
2017-06-21 06:11:44,234 fail2ban.filter         [3357]: INFO    Set maxlines = 10
2017-06-21 06:11:44,320 fail2ban.filtersystemd  [3357]: INFO    Added journal match for: '_SYSTEMD_UNIT=sshd.service + _COMM=sshd'
2017-06-21 06:11:44,335 fail2ban.jail           [3357]: INFO    Jail 'sshd' started
2017-06-21 06:11:44,864 fail2ban.action         [3357]: ERROR   ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- stdout: ''
2017-06-21 06:11:44,865 fail2ban.action         [3357]: ERROR   ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- stderr: '\x1b[91mError: COMMAND_FAILED\x1b[00m\n'
2017-06-21 06:11:44,865 fail2ban.action         [3357]: ERROR   ipset create fail2ban-sshd hash:ip timeout 86400
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable -- returned 13
2017-06-21 06:11:44,865 fail2ban.actions        [3357]: ERROR   Failed to start jail 'sshd' action 'firewallcmd-ipset': Error starting action

ご覧のとおり、firewall-cmd試してみるまで、すべてが順調に進みます。実行するコマンドは次のとおりです。

ipset create fail2ban-sshd hash:ip timeout 86400

続いて

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p all -m multiport --dports 44 -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable

このコマンドを直接実行しようとすると、ipsetコマンドは正常に機能しますがfirewall-cmdコマンドが返されますError: COMMAND_FAILED。したがって、Fail2Banが送信しようとしているコマンドに問題があるようですfirewall-cmd。しかし、Firewalldについて十分にはわかりません。それを解決するために。

(ああ、そしてSSHはポート44にあります。なぜなら、ドライブバイ攻撃を大幅に減らすからです。したがって、長所と短所については扱いません!

また、systemctl status fail2ban報告された問題なしにすべてがスムーズに実行されるようです。私はログイン時にのみこれを知り、ポートが変更されたため、ログイン試行に失敗したことがよくありました。

返されたので、これはOpenVZの問題ではないと確信しています。この問題の原因は他の場所で述べたものですuname -r3.10.0-229.14.1.el7.centos.plus.x86_64)

答え1

faqforge.comから:https://www.faqforge.com/linux/how-to-use-iptables-on-centos-7/

Centos 7はFirewalldサービスを使用して、既存のIPTables Linuxカーネルファイアウォールを置き換えます。 IPTableを使用する必要があるスクリプトがまだたくさんあります。一般的な例はソフトウェアFail2banです。

したがって、Firewalld( systemctl stop firewalld) を停止し、 iptables( yum install iptables-services) とsystemctl start iptables

次に、次のように禁止を設定しますjail.local

banaction = iptables-multiport
banaction_allports = iptables-allports

その後、再起動してください。

関連情報