完全に更新されたCentOS 7を実行しており、Fail2Banを動作させようとして問題が発生しました。
特に無差別SSH攻撃を防止しようとしています。私はすべてが正しく設定されていると確信しています。 sshdは刑務所で有効化され、無効化タスクjail.local
として使用され、firewallcmd-ipset
SELinuxではなく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 -r
。3.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
その後、再起動してください。