web-dev-qa-db-ja.com

SSHログイン試行が何度も失敗しました-心配する必要がありますか?

可能性のある複製:
失敗したログイン試行をブロックするのに努力する価値はありますか
1日に数百回の侵入の試みが行われるのは正常ですか?

私はさまざまなデータセンターで完全に異なる多数のルートサーバーを管理していますが、それらのほとんどで、SSHログインの試みが非常に多く失敗しています。これは過去3日間のスナップショットです。

SSHD login attempts graph

定期的なパターンはありませんが、通常は1日に数百回の試行を記録します。私にとって、これは、ボットネットが外部サーバーに侵入しようとしているだけのようです。安全なパスワードを使用していますが、それでも心配する必要がありますか?

おそらく、SSHポートを変更することをお勧めしますが、すべてのケースでそれが可能であるとは限りません。

とにかく、これは正常ですか

注意:PublicKeyログインは期待通りです。

7
Udo G

できること:

  1. 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

  2. Syslog経由でブロック

    2.1 sshdfilter :iptablesを使用してブロックします(つまり、特定の攻撃者をブロックするカスタムファイアウォールルールを動的に追加します)。

    2.2 Fail2Ban :は、攻撃者をブロックするカスタムファイアウォールルールを追加するPythonスクリプトです。

    2.3 DenyHosts :ファイアウォールルールを使用して攻撃をブロックしません。むしろ、ブロックルールを/etc/hosts.denyに書き込みます。

  3. ポートノッキングを使用(- knockd など)

  4. 最善の解決策は、RSA AUTHENTICATIONを使用することです。

    パスワードを使用せず、認証にRSAキーのみを使用する場合、有効なパスワードのブルートフォース検索は明らかに役に立たなくなります。

注:これらのヒントのいくつかを組み合わせることができますが、単純なRsa auth +ポートノッキングは堅実なソリューションです。

13
Adrien P.

これらの試みを阻止する素晴らしい方法は、 ポートノッキング を設定することです。
これを行ういくつかのツールは knockd (C)、 fwknop (C)、 KnockKnock (Python)および KnockKnockServer ( Java)、いくつか例を挙げると。

ポートノックカンは、「シークレットノック」またはシングルパケット認証が受信されるまで、SSHポートを外部に閉じたままにします。

サーバーが秘密のノックを取得した後、ファイアウォールは新しいSSH接続を数秒間許可し、接続を確立できるようにします。

port knocking image

少し不便になる可能性がありますが、ボットネットからのログイン試行が失敗することはありません。

画像クレジット: cipherdyne.org

5

心配して、サーバーを強化する手順を実行する必要があります。

Cop1152の回答のフォローアップ:

  1. ポートを変更できます。ただし、sshを定期的に使用するクライアントがあり、デフォルトのポートが必要な場合、これはオプションではありません。
  2. fail2banhttp://www.fail2ban.org/ )などのパッケージを使用して、短時間で何度か失敗したログインを試みます。
  3. クライアントのログイン元のIPがわかっている場合は、fail2banを使用して、既知のIP以外のすべてのIPをブロックできます(別名ホワイトリスト: http://www.fail2ban.org/wiki/index.php/Whitelist )。
5
Stoney

ポートを変更するだけでなく、ログインを試行して何度も失敗するIPを禁止するルールもあります。さらに、特定のIPからのログインのみを許可し、ルートログインは許可しないことを検討してください。ユーザーが何かを行うには管理者に昇格する必要があることを確認してください。

そして、おそらく「かなり安全なパスワード」よりも良いことができます。 Google検索では、SSH接続をより安全にするかなり簡単な方法がいくつか表示されます。

問題はありませんが、これらのサーバーの管理に責任がある場合は、これらのことをすでに知っているはずです。ダウンロード用の特定のパッケージについては触れていませんが、簡単に見つけることができます。

2
cop1152

デフォルトのsshポートとパブリックIPで実行され、おそらく誰からの接続にも開放されます。はい、これらは定期的です。安全で強力なパスワードを使用する場合、ある程度安全である可能性がありますが、これもわかりません。

いくつかのことを行うでしょう:

  1. 公開鍵ベースの認証を使用し、可能であればパスワードベースの認証を無効にします。
  2. Rootログインを無効にします。
  3. sshポートをランダムに変更します。すべてのサーバーで変更する場合は、それらを記憶するためのメカニズムを備えています。
  4. fail2banまたは他の同様のパッケージを使用して、そのような侵入IPのいくつかの自動ブロックを使用します。
  5. RAS server(OpenVPN))をデプロイし、これにsshのみを許可するRASサーバーをそれらのサーバーに許可します。常に実行できるとは限りませんが、プローブされる可能性は低くなります。
2
Gaumire

あなたができる/すべきいくつかのこと:

  • ポートを変更する
  • Tigthen iptables(最大接続数/分、選択したIPなど)
  • ルートsshログインを無効にする
  • 平文パスワードを無効にする
  • キー認証を使用する
  • ポートノッキングを使用する(おそらく少し上に)

インターネットにアクセスできるサーバーがあるときはいつでも、これに遭遇します。それらのほとんどは、いくつかのコンボを試すスクリプトです。このコマンドをMOTDに入れて追跡します。

echo -ne "Total failed attempts: $(grep 'Failed password' /var/log/auth.log* | wc -l) failed attempts"
1
Bart De Vos