#author("2025-10-15T05:22:23+00:00","default:iseki","iseki") #author("2025-10-15T05:30:02+00:00","default:iseki","iseki") ** LDAP [#j9e120af] *** Lightweight Directory Access Protocol [#n96cf17c] - [[OpenLDAP]] - [[389 Directory Server]] (NSLで使用 with [[phpLDAPadmin]]) ** ユーザ認証での使用 [#je56c17a] *** Server [#s3d4fc77] **** Port 番号 [#x29cc0e8] - 389 - over TLS: 636 #br **** Unix/Linux の場合 [#id89d737] - 以下のオブジェクトを使用する -- posixAccount --- account または inetOrgPerson と共に用いる -- posixGroup #br **** ログイン時の homeディレクトリの自走生成 [#n8cb4070] - [[oddjob-mkhomedir>oddjobd]] *** Client [#aa30e8dd] **** [[PAM]] [#p72bc515] - [[pam_ldap]] - pam_ldap は設定ファイルを見て,直接 LDAPサーバに接続する. - システムへのログインなどでは,別途ユーザ情報(getent passwd)を取得する必要がある. -- 通常はNSS nsswitch.conf と [[nslcd]] を使用 -- /etc/passwd にエントリだけ書いてもOK - CentOS の場合はソースコンパイルする(/lib/security/pam_ldap.so) - 設定ファイルは /etc/[[ldap.conf>./ldap.conf]] と/etc/openldap/ldap.conf の両方を見ているみたい. -- /etc/ldap.conf, /etc/openldap/ldap.conf は同じ内容でOK. #br **** [[PAM]] + NSS([[nslcd]])(+ [[nscd]]) [#oa7924cd] - ログインなどの場合,ユーザ情報は nss(nsswitch.conf)+nslcd が取得. - 面倒なので,[[pam_ldap]] を [[nslcd]] 経由で[[LDAP]]に繋がるようにする.(設定ファイルが減る) -- /etc/nslcd.conf と /etc/ldap.conf の内容はほぼ同じ - [[pam_ldap]] + [[nss_ldap]] -- pam : /etc/pam.d/sshd, su, system-auth など -- nsswitch : /etc/nsswitch.conf -- nslcd : /etc/nslcd.conf -- CentOS7 の pam_ldap.so(nslcd経由)はなんだか挙動が変. - [[nscd]] はキャッシュデーモン #br **** [[SSSD>sssd]] [#gce9aa6a] - 単体で認証可能.キャッシュ一体型.お手軽. - ログインなどの場合ユーザを別途取得する必要が''ない'' #br *** ObjectClass [#x6abb9a7] **** account [#kcee9ca5] - 必須属性 : uid - 任意属性 : description, host, l, o, ou, seeAlso #br **** inetOrgPerson [#s3dfe6db] - 任意属性 : audio, businessCategory, carLicense, departmentNumber, employeeNumber, employeeType, givenName, homePhone, homePostalAddress, initials, jpegPhoto, labeledURI, mail, manager, mobile, pager, photo, preferredLanguage, roomNumber, secretary, uid, userCertificate, userSMIMECertificate, x500uniqueIdentifier #br **** posixAccount (補助オブジェクトクラス) [#ceade594] - 必須属性 : cn, uid, uidNumber, gidNumber, homeDirectory - 任意属性 : description, gecos, loginShell, userPassword #br **** posixGroup [#zefc1e1b] - 必須属性 : cn, gidNumber - 任意属性 : description, memberUid, userPassword #br **** shadowAccount (補助オブジェクトクラス) [#g394e58c] - 必須属性 : uid - 任意属性 : description, shadowLastChange, shadowMax, shadowMin, shadowWarning, shadowInactive, shadowExpire, shadowFlag, userPassword #br *** Hack [#ge965592] - [[通信解析>./protocol]] *** ASN.1 ([[FeServer]]) - [[ASN.1 of LDAP>FeServer/ANS.1]] ** Operation *** 匿名BIND **** ルートDSEからドメイン名を取得 ldapsearch -x -H ldap://202.26.xxx.xxx:389 -s base -b "" defaultNamingContext **** 接続確認 ldapwhoami -x -H ldap://202.26.xxx.xxx:389 -D "iseki@edutuis.local" -W **** 検索 ldapsearch -x -H ldap://202.26.xxx.xxx:389 -D "iseki@edutuis.local" -W -b "dc=edutuis,dc=local" "(sAMAccountName=iseki)" dn cn mail userPrincipalName ldapsearch -x -H ldap://202.26.xxx.xxx:389 -D "iseki@edutuis.local" -W -b "dc=edutuis,dc=local" "(sAMAccountName=iseki)" memberOf **** 管理者(Manager)パスワードあり ldapsearch -x -H ldap://ds.nsl.tuis.ac.jp -D cn=Manager -W -b dc=nsl,dc=tuis,dc=ac,dc=jp ldapsearch -x -H ldap://ds.nsl.tuis.ac.jp -D cn=Manager -W -b dc=nsl,dc=tuis,dc=ac,dc=jp 'uid=iseki' #br