可能性のある複製:
失敗したログイン試行をブロックするのに努力する価値はありますか
1日に数百回の侵入の試みが行われるのは正常ですか?
私はさまざまなデータセンターで完全に異なる多数のルートサーバーを管理していますが、それらのほとんどで、SSHログインの試みが非常に多く失敗しています。これは過去3日間のスナップショットです。
定期的なパターンはありませんが、通常は1日に数百回の試行を記録します。私にとって、これは、ボットネットが外部サーバーに侵入しようとしているだけのようです。安全なパスワードを使用していますが、それでも心配する必要がありますか?
おそらく、SSHポートを変更することをお勧めしますが、すべてのケースでそれが可能であるとは限りません。
とにかく、これは正常ですか?
注意:PublicKeyログインは期待通りです。
できること:
Iptablesルールを設定してssh攻撃をブロックすることができます。これらのルールは、任意のホストから1分あたり最大3つの接続を許可し、この速度を超えると、ホストをさらに1分間ブロックします。
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m latest --set --name SSH -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m latest --update-秒60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force" iptables -A INPUT -p tcp --dport 22 -m latest --update --seconds 60 --hitcount 4- -rttl --name SSH -j DROP
Syslog経由でブロック
2.1 sshdfilter :iptablesを使用してブロックします(つまり、特定の攻撃者をブロックするカスタムファイアウォールルールを動的に追加します)。
2.2 Fail2Ban :は、攻撃者をブロックするカスタムファイアウォールルールを追加するPythonスクリプトです。
2.3 DenyHosts :ファイアウォールルールを使用して攻撃をブロックしません。むしろ、ブロックルールを/etc/hosts.denyに書き込みます。
ポートノッキングを使用(- knockd など)
最善の解決策は、RSA AUTHENTICATIONを使用することです。
パスワードを使用せず、認証にRSAキーのみを使用する場合、有効なパスワードのブルートフォース検索は明らかに役に立たなくなります。
注:これらのヒントのいくつかを組み合わせることができますが、単純なRsa auth +ポートノッキングは堅実なソリューションです。
これらの試みを阻止する素晴らしい方法は、 ポートノッキング を設定することです。
これを行ういくつかのツールは knockd (C)、 fwknop (C)、 KnockKnock (Python)および KnockKnockServer ( Java)、いくつか例を挙げると。
ポートノックカンは、「シークレットノック」またはシングルパケット認証が受信されるまで、SSHポートを外部に閉じたままにします。
サーバーが秘密のノックを取得した後、ファイアウォールは新しいSSH接続を数秒間許可し、接続を確立できるようにします。
少し不便になる可能性がありますが、ボットネットからのログイン試行が失敗することはありません。
画像クレジット: cipherdyne.org
心配して、サーバーを強化する手順を実行する必要があります。
Cop1152の回答のフォローアップ:
ポートを変更するだけでなく、ログインを試行して何度も失敗するIPを禁止するルールもあります。さらに、特定のIPからのログインのみを許可し、ルートログインは許可しないことを検討してください。ユーザーが何かを行うには管理者に昇格する必要があることを確認してください。
そして、おそらく「かなり安全なパスワード」よりも良いことができます。 Google検索では、SSH接続をより安全にするかなり簡単な方法がいくつか表示されます。
問題はありませんが、これらのサーバーの管理に責任がある場合は、これらのことをすでに知っているはずです。ダウンロード用の特定のパッケージについては触れていませんが、簡単に見つけることができます。
デフォルトのsshポートとパブリックIPで実行され、おそらく誰からの接続にも開放されます。はい、これらは定期的です。安全で強力なパスワードを使用する場合、ある程度安全である可能性がありますが、これもわかりません。
いくつかのことを行うでしょう:
あなたができる/すべきいくつかのこと:
インターネットにアクセスできるサーバーがあるときはいつでも、これに遭遇します。それらのほとんどは、いくつかのコンボを試すスクリプトです。このコマンドをMOTDに入れて追跡します。
echo -ne "Total failed attempts: $(grep 'Failed password' /var/log/auth.log* | wc -l) failed attempts"