SSHをインターネット上で開いたままにしないでくださいと何度も聞いています。なぜこれがそんなに悪いのですか?
パスワードがブルートフォースされる可能性があることを理解していますが、パスワードを解読するのに何年もかかる非常に強力なパスワードである場合はどうなりますか?
ただブルートフォース以外に考慮すべきことはありますか、それとも他に何か不足していますか?
なぜこれがそんなに悪いのですか?
開いているポートをWebでスキャンしてログインしようとするボットはたくさんあるため、スキャナーボットが開いているSSHポートを見つけると、別のボット(またはボットネット)がパスワードをブルートフォースにしようとするキューに入る場合があります。ここでのリスクの1つは、最終的にはパスワードを理解し、サーバーを制御することに成功する可能性があることです。
パスワードがブルートフォースされる可能性があることを理解していますが、パスワードを解読するのに何年もかかる非常に強力なパスワードである場合はどうなりますか?
長いパスワードは緩和技術ですが、ブルートフォース攻撃のリソース(帯域幅、ログやCPUに使用されるディスク領域など)の消費も損害を与える可能性があります。
SSHへのブルートフォース攻撃を緩和するためのいくつかのテクニック:
主なリスクは、最初の接続が中間者によって傍受される可能性があるため、攻撃者がパスワードを取得できることです。
ユーザーが初めて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の警告メッセージに関連する部分である この回答 も参照してください。公開鍵認証を使用した場合でも、継続するリスクがあります。
SSHをインターネット上で開いたままにしないでくださいと何度も聞いています。なぜこれがそんなに悪いのですか?
パスワードがブルートフォースされる可能性があることを理解していますが、パスワードを解読するのに何年もかかる非常に強力なパスワードである場合はどうなりますか?
パスワードSSHログインを無効にすることの非常に強力な利点は、弱いパスワードを使用するデフォルトのアカウントまたは弱いパスワードを選択するユーザーがブルートフォースされるのを実際に防ぐことです。現時点では、弱いパスワードのないアカウントがいくつかあるかもしれませんが、そうでない場合、将来的に何かがインストールされる可能性があります。時間が経つにつれてシステムが複雑になったり複雑になったりするほど、そのリスクは高くなります。
事例:私の知人はサーバー(およびそのすべて)を失いました。なぜなら彼は友達にchangemeというパスワードのアカウントを変更しなかったためです。リモートバックアップも作成されなかったため、すべてを失いました。
デフォルトでは、SSHキーは劇的に安全です。 キー生成が壊れている でない限り、最低レベルの侵害では、ユーザーキーを取得する必要があります。一方、パスワードでは、誰かが弱いパスワードを公開したときにレベルが推測されるだけです。それは、将来の人間の失敗を防ぐことを確実にすることです。
考慮すべきもう1つのことは、sshdデーモン自体に脆弱性が存在する可能性があることです(ただし、しばらくの間またはゼロデイとして知られています)。これは、攻撃者によって悪用される可能性があります。これを軽減するには、信頼できる既知のIPから、または可能であればVPNを介して作業しているユーザーに対してのみsshdを開くことをお勧めします。
パスワード認証ではなく公開鍵認証を使用する方が安全な理由はいくつかあります。
パスワード認証を使用しないことをお勧めしますが、以下の理由により、sshサーバーでパスワード認証を有効のままにしないこともお勧めします。
私が理解しているように、キーはパスワードとそれほど変わらない。はるかに長く、したがってクラックが発生しにくいのです。さらに、上部にパスワードが必要です。
ただし、特定のIPアドレスのみがSSHポートに接続することも許可するのが理にかなっていることも指摘しておきます。これによりログファイルが減少し、必要に応じてサービスへのアクセス(ログインではなく)のみを許可することをお勧めします。したがって、たとえば、会社のIPアドレス範囲 [〜#〜] vpn [〜#〜] に変更します。しかし、それだけに依存することはありません。
SSHポートの移動が推奨されることもありますが、そのメリットはほとんどありません。
また(トピック外):rootにSSHログインを許可しないでください。