Ubuntu 14.04サーバーで実行されています。
だから私はfail2banを正しく設定して/var/log/auth.log
SSHログイン試行。
3回失敗すると、fail2banログにこれが表示されます。
2014-11-19 15:22:56,822 fail2ban.actions: WARNING [ssh] Ban BANNED_IP_ADDY
iptables -L
はこのチェーンを示しています。
Chain fail2ban-ssh (1 references)
target prot opt source destination
REJECT all -- BANNED_IP_ADDY anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere
それでも、そのIPからSSH経由で問題なくログインできます。
同じことがすべてのfail2ban刑務所に当てはまります。たとえば、Apacheでは、fail2banがログを正しく検出し、IPを禁止していると主張しています。 IPは最終的にiptablesチェーンになりますが、IPは実際には拒否されていません。
これらのケースでは、SSHが標準ポートにないためだと感じています。別のポートにあります。
したがって、ssh jailルールで新しいポートを使用するように強制すると、次のようになります。
[ssh]
enabled = true
port = 32323
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
次に、このエラーが表示されます。
2014-11-19 15:30:06,775 fail2ban.actions.action: ERROR iptables -D INPUT -p tcp -m multiport --dports 32323 -j fail2ban-ssh
iptables -F fail2ban-ssh
iptables -X fail2ban-ssh returned 400
2014-11-19 15:30:06,778 fail2ban.actions.action: ERROR iptables -N fail2ban-ssh
iptables -A fail2ban-ssh -j RETURN
iptables -I INPUT -p tcp -m multiport --dports 32323 -j fail2ban-ssh returned 400
2014-11-19 15:30:06,779 fail2ban.actions.action: ERROR iptables -n -L INPUT | grep -q 'fail2ban-ssh[ \t]' returned 100
2014-11-19 15:30:06,780 fail2ban.actions.action: CRITICAL Unable to restore environment
そのままにしておくと
port = ssh
次に、それは正しくiptablesに入りますが、チェーンはREJECT
トラフィックに対して機能していません(前述のとおり)。
変更した場合:
banaction = iptables-multiport
に:
banaction = iptables-allports
その後、動作するように見えます。この変更の影響は何ですか?
fail2ban
SSHのためにIPを禁止するには、このallports
はそのIPのすべてのポートを禁止しました。 sshログインが繰り返し失敗するため、故意に禁止されました。また、他のすべてのサービスで禁止されました。
Fail2banチェーンがINPUTおよびOUTPUTチェーンに正しくリンクされていません。質問を編集して、以下の出力を提供してください:
iptables -n -L INPUT
iptables -n -L OUTPUT
そして、すべてのfail2banチェーンもまた、より正確にできるようになります。
INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh