私は最近、いくつかのセキュリティ保守を行うことにしました。ログを確認したところ、SSHサーバーに対していくつかの試みがありました。最初に、SSHポートをデフォルトの22から移動しました。その後、 Fail2ban 、 BlockHosts および DenyHosts について読みました。
最初に見てみました。設定は簡単で、すべてが理解可能です。しかし、「その保護を調査」しようとすると、テストが失敗します。すべてが良いようですが、サーバーにアクセスできます。
IPtablesもテストしました:# iptables -I INPUT -j DROP
-その後、SSH接続が失われました(つまり、私が望んでいたものです)。次に# iptables -I INPUT -s 84.x.y.z -j DROP
、それもうまくいきました。
しかし、Fail2banはどのようなルールを実行しましたか、それは機能しません:($ Sudo iptables -L
)
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-Apache tcp -- anywhere anywhere multiport dports www,https
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
fail2ban-ssh-ddos tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-Apache (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain fail2ban-ssh (1 references)
target prot opt source destination
DROP all -- 84.x.y.z anywhere
RETURN all -- anywhere anywhere
Chain fail2ban-ssh-ddos (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
ロードされたカーネルモジュール:($ lsmod | grep ip
)
iptable_nat 4680 0
nf_nat 15576 1 iptable_nat
nf_conntrack_ipv4 12268 3 iptable_nat,nf_nat
nf_conntrack 55540 4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport 2816 2
iptable_filter 2624 1
ip_tables 10160 2 iptable_nat,iptable_filter
x_tables 13284 5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6 235396 24
バージョン:
openssh-server
1:5.1p1-5テスト#1ステップバイステップ:
iptables -L
は上記のように私を示しました。禁止がアクティブだったので、接続したときにサーバーに命令しました。テスト#2ステップバイステップ:
at
スクリプトを作成して、下記の禁止ルールを将来的に削除します。 (iptables -D INPUT 1
)iptables -I INPUT 1 -s 84.x.y.z -j DROP
at
スクリプトの後、サーバーにアクセスできます。解決策が表示されません。IPtablesの禁止(Fail2banによって作成)を機能させるにはどうすればよいですか?
Fail2banをインストールする前に、問題を発見しました。申し訳ありません。
セキュリティ上の理由から、sshdをポート22から別のポートに移動しました。 iptables
の参照は、ポート22のみを参照しています。私はそれは変数であり、常に現在のsshdポートを参照するものだと思いました。しかし[〜#〜]ない[〜#〜]。
正確な解決策(デーモンを元のポートから移動した場合):
port
セクションをallに修正します。例:port = all
banaction
行をポート行の後に追加または編集し、値iptables-allportsを指定します。例:banaction = iptables-allports
。# service fail2ban restart
。変更の解決策が見つかりませんでしたport ssh
ディレクティブ、またはそこに数字を書きます。すべてのポート以外のソリューションがある場合は、それを聞いてみます!
Sshサーバーを非標準ポート12345に移動した後、fail2banが禁止されないという同じ問題がありました(たとえば、)。
Fail2banが何度も失敗した認証試行の後に正しいルールを生成するように、私は/etc/fail2ban/jail.conf
を編集しました。
port = ssh
に
port = 12345
標準以外のポートで他のサービスに対しても同様のアプローチが機能すると思います。
Fail2banの設定は/etc/fail2ban/jail.local
にあります。デフォルトのインストールでは、そこにあるかどうかわかりません。次に、jail.conf
をjail.local
にコピーして、両方のファイルを/etc/fail2ban/
にコピーします。 jail.local
を編集し、[ssh]
を含む行に移動して、次のように有効にします。
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
その後、fail2banを再起動します。
Sudo /etc/init.d/fail2ban restart
今はうまくいく可能性があります。私はそのように設定し、うまくいきました。
「Fail2ban 0.8.3-2sid1」がインストールされていると記載されています。これはサポートされていない構成です。 Sidパッケージは安定した環境にインストールしないでください。
LennyからアップグレードしたDebian 6(Squeeze)をVM特に自宅のSSHサーバーとして実行しています。fail2banも使用しています。テスト#1を実行し、すべてが次のように機能しました。最大試行回数でログインに失敗し、ログイン要求が60秒間ドロップされました。
私のバージョンリスト: