web-dev-qa-db-ja.com

パスワード付きのSSHをインターネット経由で残しておくのはなぜそんなに悪いのですか?

SSHをインターネット上で開いたままにしないでくださいと何度も聞いています。なぜこれがそんなに悪いのですか?

パスワードがブルートフォースされる可能性があることを理解していますが、パスワードを解読するのに何年もかかる非常に強力なパスワードである場合はどうなりますか?

ただブルートフォース以外に考慮すべきことはありますか、それとも他に何か不足していますか?

56
Ethereal

なぜこれがそんなに悪いのですか?

開いているポートをWebでスキャンしてログインしようとするボットはたくさんあるため、スキャナーボットが開いているSSHポートを見つけると、別のボット(またはボットネット)がパスワードをブルートフォースにしようとするキューに入る場合があります。ここでのリスクの1つは、最終的にはパスワードを理解し、サーバーを制御することに成功する可能性があることです。

パスワードがブルートフォースされる可能性があることを理解していますが、パスワードを解読するのに何年もかかる非常に強力なパスワードである場合はどうなりますか?

長いパスワードは緩和技術ですが、ブルートフォース攻撃のリソース(帯域幅、ログやCPUに使用されるディスク領域など)の消費も損害を与える可能性があります。

緩和

SSHへのブルートフォース攻撃を緩和するためのいくつかのテクニック:

68
Purefan

主なリスクは、最初の接続が中間者によって傍受される可能性があるため、攻撃者がパスワードを取得できることです。

ユーザーが初めてSSHサーバーに接続するとき、次のようなものが表示されます。

$ ssh scanme.nmap.org
The authenticity of Host 'scanme.nmap.org (45.33.32.156)' can't be established.
ECDSA key fingerprint is SHA256:8iz5L6iZxKJ6YONmad4oMbC+m/+vI9vx5C5f+qTTGDc.
Are you sure you want to continue connecting (yes/no)?

ここで、すべてのユーザーがそのフィンガープリントを確認してサーバーであることを確認しない限り、接続が傍受されているリスクがあります(たとえば、ネットワーク上のMITMがトラフィックを直接傍受している、またはある種のDNSハイジャック)。

これは、SSHが「最初の使用時の信頼」であるためです。以前にそのホストに接続したことがあり、キーが突然変わった場合は、代わりに次のメッセージが表示され、ユーザーに警告します。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE Host IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA Host key has just been changed.
The fingerprint for the RSA key sent by the remote Host is
5c:9b:16:56:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:1c.
Please contact your system administrator.
Add correct Host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA Host key for ras.mydomain.com has changed and you have requested strict checking.
Host key verification failed.

警告は、その特定のクライアントからすでに接続しているユーザーに対するこの攻撃を緩和します。

その他、SSHをインターネット上で開くことの重要性の低いリスクは、そのようなサーバーに対してログインを検出および試行するボットが多数存在することです。すべてのアカウントに強力なパスワードがある場合、侵害のリスクは非常に低くなります(強力とは、攻撃者が使用または作成する可能性のあるWordリストに含まれないものを意味します)。通常のルールが適用されます-たとえば、パスワードの再利用、安全に保存されたパスワードなど。欠点は、受信したすべての認証試行でログファイルがすぐに蓄積されることです。

どの認証モードのSSH自体についても、これは別のサービスであるため、このようなボットによって自動的に悪用される可能性のある脆弱性が発見される可能性があります。ただし、このリスクは、WebサーバーまたはWebアプリケーションが悪用されるリスクと同じです。公共サービスを備えた他のサーバーと同様に、優れた脆弱性管理戦略が推奨されます。

SSHの警告メッセージに関連する部分である この回答 も参照してください。公開鍵認証を使用した場合でも、継続するリスクがあります。

27
SilverlightFox

SSHをインターネット上で開いたままにしないでくださいと何度も聞いています。なぜこれがそんなに悪いのですか?

パスワードがブルートフォースされる可能性があることを理解していますが、パスワードを解読するのに何年もかかる非常に強力なパスワードである場合はどうなりますか?

パスワードSSHログインを無効にすることの非常に強力な利点は、弱いパスワードを使用するデフォルトのアカウントまたは弱いパスワードを選択するユーザーがブルートフォースされるのを実際に防ぐことです。現時点では、弱いパスワードのないアカウントがいくつかあるかもしれませんが、そうでない場合、将来的に何かがインストールされる可能性があります。時間が経つにつれてシステムが複雑になったり複雑になったりするほど、そのリスクは高くなります。

事例:私の知人はサーバー(およびそのすべて)を失いました。なぜなら彼は友達にchangemeというパスワードのアカウントを変更しなかったためです。リモートバックアップも作成されなかったため、すべてを失いました。

デフォルトでは、SSHキーは劇的に安全です。 キー生成が壊れている でない限り、最低レベルの侵害では、ユーザーキーを取得する必要があります。一方、パスワードでは、誰かが弱いパスワードを公開したときにレベルが推測されるだけです。それは、将来の人間の失敗を防ぐことを確実にすることです。

12
Jeff Ferland

考慮すべきもう1つのことは、sshdデーモン自体に脆弱性が存在する可能性があることです(ただし、しばらくの間またはゼロデイとして知られています)。これは、攻撃者によって悪用される可能性があります。これを軽減するには、信頼できる既知のIPから、または可能であればVPNを介して作業しているユーザーに対してのみsshdを開くことをお勧めします。

3
mti2935

パスワード認証ではなく公開鍵認証を使用する方が安全な理由はいくつかあります。

  • 秘密鍵はクライアントマシンから出ることはないため、パスワードよりも秘密鍵を傍受することは困難です。これは、ホストキーが以前に知られていない最初の接続に対して攻撃者がミット攻撃を行う場合に重要です。また、サーバーが攻撃者によって侵害された場合にも重要です。
  • 公開鍵認証を使用すると、完全なミット攻撃から保護されます。攻撃者が最初の接続に対してミット攻撃を実行した場合、ホストキーを確認できない可能性があります。ただし、公開キー認証を使用して認証する場合、認証はsshセッションIDに関連付けられているため、攻撃者が同じ認証を使用して接続を正規のサーバーに渡すことはできません。これにより、完全なミットアタックから接続のインターセプトのみへの攻撃が軽減されます。これにより、ユーザーが気づきやすくなります。 (たとえば、ユーザーが実サーバー上にあることがわかっているが、攻撃者にはわからないファイルを探す場合、ユーザーは何かが正しくないことに気づくでしょう。)

パスワード認証を使用しないことをお勧めしますが、以下の理由により、sshサーバーでパスワード認証を有効のままにしないこともお勧めします。

  • 攻撃者はパスワードの総当たり攻撃を試みます。脆弱なパスワードを持つシステム上のユーザーがいる場合、そのような攻撃が成功する可能性があります。
  • システム上のすべてのユーザーが強力なパスワードを持っている場合でも、攻撃者はパスワードを総当たり攻撃しようとします。これはサーバー上のリソースを消費します。時々、そのようなブルー​​トフォース攻撃が非常に攻撃的であり、サーバーが過負荷になっているために正当なログインが失敗するのを見ました。
  • Sshサーバーがパスワードを受け入れないことに慣れている場合、攻撃者がいつかミット攻撃を仕掛けてパスワードプロンプトを提示しようとした場合に気付く可能性が高くなります。
2
kasperd

私が理解しているように、キーはパスワードとそれほど変わらない。はるかに長く、したがってクラックが発生しにくいのです。さらに、上部にパスワードが必要です。

ただし、特定のIPアドレスのみがSSHポートに接続することも許可するのが理にかなっていることも指摘しておきます。これによりログファイルが減少し、必要に応じてサービスへのアクセス(ログインではなく)のみを許可することをお勧めします。したがって、たとえば、会社のIPアドレス範囲 [〜#〜] vpn [〜#〜] に変更します。しかし、それだけに依存することはありません。

SSHポートの移動が推奨されることもありますが、そのメリットはほとんどありません。

また(トピック外):rootにSSHログインを許可しないでください。

0