web-dev-qa-db-ja.com

sshd構成でのPasswordAuthenticationを理解する

パスワード認証のみをサポートするOpenSSHサーバーがあります。

[martin@ ~]$ ssh -v 10.10.1.183 -l root
OpenSSH_5.2p1 FreeBSD-20090522, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to 10.10.1.183 [10.10.1.183] port 22.
debug1: Connection established.
debug1: identity file /home/martin/.ssh/identity type 0
debug1: identity file /home/martin/.ssh/id_rsa type -1
debug1: identity file /home/martin/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1 Debian-5
debug1: match: OpenSSH_6.7p1 Debian-5 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2p1 FreeBSD-20090522
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<2048<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '10.10.1.183' is known and matches the RSA Host key.
debug1: Found key in /home/martin/.ssh/known_hosts:3
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password
debug1: Next authentication method: password
[email protected]'s password: 

つまり、サーバーsshd_configファイルのPasswordAuthenticationのみがyesに設定されます。

RFC 4252 セクション8によるとIt is up to the server how to interpret the password and validate it against the password database. Linuxでは、sshd構成のUsePAMが無効になっている場合、sshd/etc/passwdファイルと/etc/shadowファイルを直接チェックすることを意味します。 ?

5
Martin

Linuxでは、sshd構成のUsePAMが無効になっている場合、sshdが/ etc/passwdファイルと/ etc/shadowファイルを直接チェックすることを意味しますか?

はい。しかし、今日のシステムのセッションはますます複雑になっているため、現在、ほとんどのディストリビューションはpamを使用してログインを処理しています。 OpenSSHは、<shadow.h>ヘッダーファイルとそこで定義されている関数を使用してシャドウと通信できます。

詳細については、これはソースコードファイルauth.cおよびauth-shadow.cにあります。

1
Jakuje

ソースをざっと見てみると、auth-passwd.cには<pwd.h>が含まれており、auth-shadow.cには<shadow.h>が含まれていることがわかります。深く掘り下げることなく、sshdはシステムコールを使用してパスワードをチェックしているようです。 sshdが必須であり、期限切れのパスワードのパスワード変更を行うことを許可するコードもありました。

2
ss333