web-dev-qa-db-ja.com

SSHのパスワードログインを無効にすることは、すべてのユーザーのパスワードを削除することと同じですか?

Rootユーザーのみのクラウドサーバーがあります。 RSAキーのみを使用してSSH接続します。安全性を高めるために、パスワード機能を無効にしたいと思いました。これは、/etc/ssh/sshd_configファイルを編集し、PermitRootLogin yesPermitRootLogin without-passwordに変更することで実行できることを知っています。 passwd -d rootを介してrootパスワードを削除するだけで同等かどうか疑問に思っていました(ユーザーを追加しないか、新しいユーザーのパスワードも削除されていると想定しています)。あるアプローチと他のアプローチの間にセキュリティ上の問題はありますか?

7
Arsham Skrenes

公開鍵認証を使用すると、他の認証方法がバイパスされるため、PermitRootLogin without-passwordを使用する必要はありません。誰かがrootとしてログインしようとし、公開鍵の提示を強制されない場合は危険です。

Sshdでパスワード認証を無効にして必要なことを行うには、PasswordAuthentication nosshd_configを使用します。

この設定は、ユーザーのパスワードが保存されている/etc/shadowの内容に影響しますnot。別のアプリケーションがパスワード(CUPSなど)を介して認証する場合でも、これは機能します。

これを無効にしたい場合、上記のコマンドでユーザーのパスワードを削除しても機能しません。特定のユーザーにpassword-lessログインを許可します。これは、明らかにセキュリティを強化するものではありません。

passwd -l <user>を発行すると、意図したとおりの結果が得られます。ただし、ssh以外のアプリは、デフォルトの設定(Sudo、su、CUPSなど)でパスワード認証を期待しているため、問題がある可能性があることに注意してください。

man passwdからの引用:

-l, --lock
           Lock the password of the named account. This option disables a password by changing it to a value which matches no possible encrypted value (it adds a ´!´ at the beginning of the password).

           Note that this does not disable the account. The user may still be able to login using another authentication token (e.g. an SSH key). To disable the account, administrators should use usermod
           --expiredate 1 (this set the account's expire date to Jan 2, 1970).

           Users with a locked password are not allowed to change their password.
11
fuero

絶対にそうではありません。rootパスワードを削除することは大きなセキュリティリスクになります。rootパスワードを変更したい場合は、rootユーザーに強力なランダムパスワードを設定することをお勧めします。でも/etc/shadow

これで、rootユーザーがSSHキーへのSSHアクセスのみにロックダウンされました。次のステップは、他のユーザーがシェルアクセスを持っていることを確認し、不要な場合はそれを削除し、作成して保持する追加のユーザーアカウントについても同じことを行うことです。 rootユーザーのみへのSSHアクセス。

ユーザーのパスワードを削除する場合は、シェルを/etc/passwdに設定することにより、/sbin/nologinでシェルアクセスも削除する必要があります。

別のアプローチは、すべてのユーザーに対してSSHのパスワードログインを無効にし、公開鍵認証のみを許可することです。

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

また、公開鍵認証が/etc/ssh/sshd_configで許可されていることを確認します。

PubkeyAuthentication yes

2
Tabiko