/etc/ssh/sshd_config
PAMはDebian 10でデフォルトで有効になっています。
UsePAM yes
パスワードやKerberosログインを許可せずにSSHキー認証のみを許可する状況でPAM
sshdでこれを有効にすると、どのような利点がありますか?それともUsePAM
「いいえ」に設定すると、プロセスが簡素化され、潜在的に安全になりますか?
SSHDでPAMを無効にすると、実際の影響は何ですか?違いがわかりますか?
答え1
マニュアルページ(および他の答え)が主張するのとは対照的にUsePAM yes
、許可するroot 以外のユーザーとして sshd を実行しますが、root 以外のユーザーとして sshd を実行して実行することもできます。パスワード認証(同じユーザーが実行している場合)setuid/sbin/unix_chkpwd
プログラムを介して。
後者はまったく予期しないことです。
user$ /usr/sbin/sshd -f /dev/null -p 9009 -h ~/.ssh/id_rsa
user$ /usr/sbin/sshd -f /dev/null -o UsePAM=yes -p 7007 -h ~/.ssh/id_rsa
user$ ssh -p 7007 localhost
The authenticity of host '[localhost]:7007 ([::1]:7007)' can't be established.
...
Password: <correct password>
Linux deb11 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64
...
user$ <I'm logged in!>
user$ ^D
Connection to localhost closed.
user$ ssh -p 9009 localhost
The authenticity of host '[localhost]:9009 ([::1]:9009)' can't be established.
...
user@localhost's password:
Permission denied, please try again.
user@localhost's password:
Permission denied, please try again.
user@localhost's password:
user@localhost: Permission denied (publickey,password,keyboard-interactive).
user$
答え2
これマンページ解釈はUsePAM
認証だけでなくセッション処理も提供します。たくさんありますPAMモジュール自動キーリングのロック解除、ファイルシステムのマウント、個人データの復号化、オプションでログインを許可するなど、さまざまな機能を提供します。
以前はUsePAM
「yes」に設定すると、sshdにroot権限が必要でした。ユースケースに応じて、root以外のユーザーとして実行すると、セキュリティや設定に役立ちます。
状況によっては、これが役に立つと想像できます。たとえば、gitはsshをトランスポートプロトコルとして使用します。 Gitサーバーを設定したいかもしれませんが、PAMを介してGitユーザーを管理したくありません。
答え3
そのためにOpenSSHのソースを調べました。
auth-pam.c
行378-382で見つけたコメントによると、UsePAMを使用すると間接的にも直接的にも環境が流出する可能性があります(ここにリンク):
/*
* XXX this possibly leaks env because it is not documented
* what pam_putenv() does with it. Does it copy it? Does it
* take ownweship? We don't know, so it's safest just to leak.
*/
また、同じソースコードで次の興味深いコンテンツを見つけました。
/*
* Some silly PAM modules (e.g. pam_time) require a TTY to operate.
* sshd doesn't set the tty until too late in the auth process and
* may not even set one (for tty-less connections)
*/
また、1351行でPAMを介してパスワード認証が試みられ、このコードではバックタイミング攻撃の軽減が使用されているようです。
if句で定義されているため、このauth-pam.c
コードは実行されません。セキュリティ設定が許可されている場合はnoに設定します。
だから私はそれを「いいえ」に設定し、それのために眠ることができないのをやめる方が良いと思います。
その他のコメント
こういう見方もあります。https://askubuntu.com/questions/1259848/
設定が正しく設定されていないと、SSH公開鍵認証が失敗する可能性があります。 https://serverfault.com/questions/475880
また、このセクションの最後にある結論も読んでくださいConfiguring accounts
。