web-dev-qa-db-ja.com

sshd + pam + ldapを機能させることができません(AuthorizedKeysCommand?)

私がしたこと:

  • インストール済みlibpam-ldapd

  • /etc/ldap/ldap.confを設定します

  • /etc/ssh/ldap-keys.shroot:root 0755として設定し、それが機能することを確認します(/etc/ssh/ldap_keys.sh amadanはLDAPから公開鍵を返します)。

  • /etc/nsswitch.confを設定します:passwdSudoおよびshadowcompat ldapと言い、改行sudoersldap

  • セットアップ/etc/ssh/sshd_configAuthorizedKeysCommandは上記のファイルを指し、AuthorizedKeysCommandUserは新しく作成された専用ユーザーを指します

  • /usr/share/pam-configs/mkhomedirを設定します。 pam-auth-updateを実行しました。

現在の状況では、ログインしようとすると、AuthorizedKeysCommand/etc/ssh/ldap-keys.sh)が実行されません。また、残りの構成が正しいかどうかもわかりませんが、sshdが常に「無効なユーザー」を報告しているため、まだわかりません。

Oct 17 17:22:59 xxx sshd[86244]: Invalid user amadan from yyy
Oct 17 17:22:59 xxx sshd[86244]: input_userauth_request: invalid user amadan [preauth]
Oct 17 17:23:01 xxx sshd[86244]: Connection closed by yyy [preauth]

私は自分がやっているのを知っています何か間違っています...しかし何ですか?

編集:関連するPAM設定:

# auth
auth    [success=2 default=ignore]  pam_unix.so nullok_secure debug
auth    [success=1 default=ignore]  pam_ldap.so minimum_uid=1000 use_first_pass debug
auth    requisite           pam_deny.so
auth    required            pam_permit.so
auth    optional            pam_cap.so 

# account
account [success=2 new_authtok_reqd=done default=ignore]    pam_unix.so 
account [success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad]    pam_ldap.so minimum_uid=1000
account requisite           pam_deny.so
account required            pam_permit.so

編集:straceこのsshdの抜粋:

open("/lib/x86_64-linux-gnu/security/pam_ldap.so", O_RDONLY|O_CLOEXEC) = 8
read(8, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\20\0\0\0\0\0\0"..., 832) = 832
fstat(8, {st_mode=S_IFREG|0644, st_size=26544, ...}) = 0
mmap(NULL, 2121744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x7f58df52b000
mprotect(0x7f58df531000, 2093056, PROT_NONE) = 0
mmap(0x7f58df730000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0x5000) = 0x7f58df730000
close(8)                                = 0
mprotect(0x7f58df730000, 4096, PROT_READ) = 0
open("/lib/x86_64-linux-gnu/security/pam_deny.so", O_RDONLY|O_CLOEXEC) = 8

動作中のsshd(別のサーバー上)からのStraceの抜粋:

open("/lib/x86_64-linux-gnu/security/pam_ldap.so", O_RDONLY|O_CLOEXEC) = 8
read(8, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\37\0\0\0\0\0\0"..., 832) = 832
fstat(8, {st_mode=S_IFREG|0644, st_size=47792, ...}) = 0
mmap(NULL, 2142888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x7f8ef8a3c000
mprotect(0x7f8ef8a46000, 2097152, PROT_NONE) = 0
mmap(0x7f8ef8c46000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0xa000) = 0x
close(8)                                = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 8
fstat(8, {st_mode=S_IFREG|0644, st_size=152262, ...}) = 0
mmap(NULL, 152262, PROT_READ, MAP_PRIVATE, 8, 0) = 0x7f8efcee1000
close(8)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2", O_RDONLY|O_CLOEXEC) = 8

作業中のsshdでは、pam_ldap.solibldap_r-2.4.so.2を呼び出します。これでは、そうではありません。何もせずに終了し、すぐに次のPAMモジュールに進みます。何故かはわからない。

3
Amadan

Name Service Caching Daemonによって維持されているキャッシュが古くなっているか、新しいLDAP設定を反映するように更新されていないように見えます。

Sudo /etc/init.d/nscd restart

サービスを再起動し、キャッシュを更新する必要があります。

1
Matt