OpenLDAP&OpenSSL&OpenSSHで認証サーバを構築

構成は下図の感じで、要件は運用PCかた秘密鍵を使用してLDAPクライアントにログインすることです。またLDAPクラインとが複数サーバになってもLDAPサーバが統括して認証を行うことになります。
やってみた感想は、「Active Directoryってよくできてるよ」です。たぶんADでしたら10分の1くらいの時間でできたかと。

DNSサーバ:192.168.11.111
LDAPサーバ:192.168.11.5 Rocky Linux release 8.9 (Green Obsidian)
LDAPクラインと:192.168.11.13 Rocky Linux release 9.3 (Blue Onyx)
運用PC:192.168.11.2 Windows 11 pro
尚、太文字が入力したコマンドになります。
1.LDAPサーバ

1.1 OpensSSlであらかじめ証明書を作成します。

cd /etc/pki/tls/certs
openssl genrsa -aes128 2048 > server.key
Generating RSA private key, 2048 bit long modulus (2 primes)
............................................................................+++++
............+++++
e is 65537 (0x010001)
Enter pass phrase:
Verifying - Enter pass phrase:
※パスフレーズを設定しないと進まないので入力する(後作業で使用するので忘れない)
1.2 秘密鍵からパスフレーズを削除する

openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key
1.3 証明書の作成

openssl req -utf8 -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:TOKYO
Locality Name (eg, city) [Default City]:TOKYO
Organization Name (eg, company) [Default Company Ltd]:Test Company
Organizational Unit Name (eg, section) []:tech dept
Common Name (eg, your name or your server's hostname) []:ldap.test.local
Email Address []:admin@test.local


Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@localhost certs]#
1.4 有効期限10年の自己署名証明書にする

openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
Signature ok
subject=C = JP, ST = TOKYO, L = TOKYO, O = Test Company, OU = tech dept, CN = ldap.test.local, emailAddress = admin@test.local
Getting Private key
1.5 パーミッションを変更
chmod 600 server.key

一旦ホームディレクトリに移動した方が以降の作業はやり易い。
1.6 OpenLDAPのインストール
dnf --enablerepo=powertools -y install openldap-servers openldap-clients
Rocky Linux 8 - PowerTools                                                                                                                                                                                                                    1.8 MB/s | 2.7 MB     00:01
メタデータの期限切れの最終確認: 0:00:01 前の 2024年02月24日 06時06分29秒 に実施しました。
依存関係が解決しました。
==============================================================================================================================================================================================================================================================================
 パッケージ                                                            アーキテクチャー                                            バージョン                                                           リポジトリー                                                    サイズ
==============================================================================================================================================================================================================================================================================
インストール:
 openldap-clients                                                      x86_64                                                      2.4.46-18.el8                                                        baseos                                                          201 k
 openldap-servers                                                      x86_64                                                      2.4.46-18.el8                                                        powertools                                                      2.2 M

トランザクションの概要
==============================================================================================================================================================================================================================================================================
インストール  2 パッケージ

ダウンロードサイズの合計: 2.4 M
インストール後のサイズ: 5.4 M
パッケージのダウンロード:
(1/2): openldap-clients-2.4.46-18.el8.x86_64.rpm                                                                                                                                                                                              1.9 MB/s | 201 kB     00:00
(2/2): openldap-servers-2.4.46-18.el8.x86_64.rpm                                                                                                                                                                                              6.4 MB/s | 2.2 MB     00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                                                                                          1.9 MB/s | 2.4 MB     00:01
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                                                                                                                                                                      1/1
  scriptletの実行中: openldap-servers-2.4.46-18.el8.x86_64                                                                                                                                                                                                                1/2
  インストール中   : openldap-servers-2.4.46-18.el8.x86_64                                                                                                                                                                                                                1/2
  scriptletの実行中: openldap-servers-2.4.46-18.el8.x86_64                                                                                                                                                                                                                1/2
  インストール中   : openldap-clients-2.4.46-18.el8.x86_64                                                                                                                                                                                                                2/2
  scriptletの実行中: openldap-clients-2.4.46-18.el8.x86_64                                                                                                                                                                                                                2/2
[/usr/lib/tmpfiles.d/slapd.conf:2] Line references path below legacy directory /var/run/, updating /var/run/openldap → /run/openldap; please update the tmpfiles.d/ drop-in file accordingly.

  検証             : openldap-clients-2.4.46-18.el8.x86_64                                                                                                                                                                                                                1/2
  検証             : openldap-servers-2.4.46-18.el8.x86_64                                                                                                                                                                                                                2/2

インストール済み:
  openldap-clients-2.4.46-18.el8.x86_64                                                                                                 openldap-servers-2.4.46-18.el8.x86_64

完了しました!
1.7 テンプレートファイルを使ってOpenLDAP(slape)を起動

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
systemctl enable --now slapd
Created symlink /etc/systemd/system/openldap.service → /usr/lib/systemd/system/slapd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/slapd.service → /usr/lib/systemd/system/slapd.servic

systemctl status slapd
Created symlink /etc/systemd/system/openldap.service → /usr/lib/systemd/system/slapd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/slapd.service → /usr/lib/systemd/system/slapd.service.
[root@ldap ~]# systemctl status slapd
● slapd.service - OpenLDAP Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2024-02-24 06:08:36 EST; 12s ago
     Docs: man:slapd
           man:slapd-config
           man:slapd-hdb
           man:slapd-mdb
           file:///usr/share/doc/openldap-servers/guide.html
  Process: 49261 ExecStart=/usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:/// (code=exited, status=0/SUCCESS)
  Process: 49247 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
 Main PID: 49262 (slapd)
    Tasks: 2 (limit: 100410)
   Memory: 3.1M
   CGroup: /system.slice/slapd.service
           mq49262 /usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:///

 2月 24 06:08:36 ldap.test.local systemd[1]: Starting OpenLDAP Server Daemon...
 2月 24 06:08:36 ldap.test.local runuser[49250]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
 2月 24 06:08:36 ldap.test.local runuser[49250]: pam_unix(runuser:session): session closed for user ldap
 2月 24 06:08:36 ldap.test.local slapd[49261]: @(#) $OpenLDAP: slapd 2.4.46 (Oct 11 2021 21:12:19) $
                                                        mockbuild@ord1-prod-x86build002.svc.aws.rockylinux.org:/builddir/build/BUILD/openldap-2.4.46/openldap-2.4.46/servers/slapd
 2月 24 06:08:36 ldap.test.local slapd[49262]: slapd starting
 2月 24 06:08:36 ldap.test.local systemd[1]: Started OpenLDAP Server Daemon.
1.8 OpenLDAP 特権DNのパスワード(olcRootPW)のパスワード設定

slappasswd
New password:
Re-enter new password:
{SSHA}cVJn1+2TiPmBdvCWblQbI6sPvTRVqKsz

vi chrootpw.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}cVJn1+2TiPmBdvCWblQbI6sPvTRVqKsz

:wq!

実行します。

ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config
1.9 スキーマの追加

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"
1.10 ドメインのパスワードの変更

slappasswd
New password:
Re-enter new password:
{SSHA}uqIixXP6s2w+pYNejbneNs2lVbuGfnWQ

vi chdomain.ldif

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=test,dc=local" read by * none

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=test,dc=local

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=test,dc=local

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}uqIixXP6s2w+pYNejbneNs2lVbuGfnWQ

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=test,dc=local" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=test,dc=local" write by * read

:wq!
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"

modifying entry "olcDatabase={2}mdb,cn=config"

modifying entry "olcDatabase={2}mdb,cn=config"

modifying entry "olcDatabase={2}mdb,cn=config"

modifying entry "olcDatabase={2}mdb,cn=config"
1.11 baseドメイン用ldif作成

vi basedomain.ldif

dn: dc=test,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: Test Company
dc: test

dn: cn=Manager,dc=test,dc=local
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=test,dc=local
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=test,dc=local
objectClass: organizationalUnit
ou: Group

:wq!

取り込み実行

ldapadd -x -D cn=Manager,dc=test,dc=local -W -f basedomain.ldif
Enter LDAP Password:
adding new entry "dc=test,dc=local"

adding new entry "cn=Manager,dc=test,dc=local"

adding new entry "ou=People,dc=test,dc=local"

adding new entry "ou=Group,dc=test,dc=local"
1.12 SlapdのTLS設定

cp /etc/pki/tls/certs/server.key /etc/pki/tls/certs/server.crt /etc/pki/tls/certs/ca-bundle.crt /etc/openldap/certs/

chown ldap. /etc/openldap/certs/server.key /etc/openldap/certs/server.crt /etc/openldap/certs/ca-bundle.crt

TLS用ldifの作成
vi mod_ssl.ldif

dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/openldap/certs/ca-bundle.crt
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/server.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/server.key

:wq!

TLS用ldifの実行
ldapmodify -Y EXTERNAL -H ldapi:/// -f mod_ssl.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

Slapdの再起動
systemctl restart slapd

Firewallの許可
firewall-cmd --add-service={ldap,ldaps}
success
firewall-cmd --runtime-to-permanent
success
1.13 ldapsのエラーを解消。
自己証明書にシンボリックリンクを設定します。
ln -s /etc/openldap/certs/server.crt /etc/openldap/certs/`openssl x509 -noout -hash -in /etc/openldap/certs/server.crt`.0

/etc/openldap/ldap.confにしたの一行を追加します。
TLS_CACERTDIR /etc/openldap/certs/

Slapdの再起動
systemctl restart slapd

LDAPを検索してディレクトリの戻り値が帰ってくることを確認します。
ldapsearch -x -D "cn=Manager,dc=test,dc=local" -W -b "dc=test,dc=local" -H ldaps:///
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=test,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# test.local
dn: dc=test,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: Test Company
dc: test

# Manager, test.local
dn: cn=Manager,dc=test,dc=local
objectClass: organizationalRole
cn: Manager
description: Directory Manager

# People, test.local
dn: ou=People,dc=test,dc=local
objectClass: organizationalUnit
ou: People

# Group, test.local
dn: ou=Group,dc=test,dc=local
objectClass: organizationalUnit
ou: Group

# search result
search: 2
result: 0 Success

# numResponses: 5
# numEntries:

1.14 オブジェクトクラス「ldapPublicKey」スキーマ登録します。

yum install openssh-ldap
メタデータの期限切れの最終確認:	18:07:54	前の	2024年02月24日	08時18分40秒	に実施しました。
依存関係が解決しました。
======================================================================================================================================================
	パッケージ	アーキテクチャー	バージョン	リポジトリー	サイズ
======================================================================================================================================================
インストール:
	openssh-ldap	x86_64	8.0p1-19.el8_9.2	baseos	133	k

トランザクションの概要
======================================================================================================================================================
インストール	1	パッケージ

ダウンロードサイズの合計:	133	k
インストール後のサイズ:	101	k
これでよろしいですか?	[y/N]:	y
パッケージのダウンロード:
openssh-ldap-8.0p1-19.el8_9.2.x86_64.rpm	4.9	kB/s	|	133	kB	00:27
------------------------------------------------------------------------------------------------------------------------------------------------------
合計	4.8	kB/s	|	133	kB	00:27
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
	準備	:	1/1
	インストール中	:	openssh-ldap-8.0p1-19.el8_9.2.x86_64	1/1
	scriptletの実行中:	openssh-ldap-8.0p1-19.el8_9.2.x86_64	1/1
	検証	:	openssh-ldap-8.0p1-19.el8_9.2.x86_64	1/1

インストール済み:
	openssh-ldap-8.0p1-19.el8_9.2.x86_64

完了しました!

openssh-lpk-openldap.ldifの場所を確認してください。
OSやバージョンによって保存場所がことなるため、特定しておきます。
 ls -la /usr/share/doc/openssh-ldap/openssh-lpk-openldap.ldif
-rw-r--r--. 1 root root 693  1月 30 12:04 /usr/share/doc/openssh-ldap/openssh-lpk-openldap.ldif
この環境では/usr/share/doc/openssh-ldap/配下にopenssh-lpk-openldap.ldifはありました。

openssh-lpk-openldap.ldifの内容を登録します。

ldapadd -Y EXTERNAL -H ldapi:/// -f  /usr/share/doc/openssh-ldap/openssh-lpk-openldap.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=openssh-lpk,cn=schema,cn=config"

以下のコマンドで、「sshPublicKey」と「ldapPublicKey」が登録されたか確認してください。

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'cn=config' '(objectClass=olcSchemaConfig)'

中略

dn: cn={4}openssh-lpk,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {4}openssh-lpk
olcAttributeTypes: {0}( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' DES
 C 'MANDATORY: OpenSSH Public key' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.
 1.1466.115.121.1.40 )
olcObjectClasses: {0}( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' DESC
  'MANDATORY: OpenSSH LPK objectclass' SUP top AUXILIARY MUST ( sshPublicKey $
  uid ) )
1.15 LDAPユーザの追加
slappasswd
New password:
Re-enter new password:
{SSHA}ve1LCT3CjT5/nrx72FCBj4I0sNa+p64h

vi user01.ldif

dn: uid=user01,ou=People,dc=test,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Rocky
sn: UNIX
userPassword: {SSHA}ve1LCT3CjT5/nrx72FCBj4I0sNa+p64h
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user01

dn: cn=user01,ou=Group,dc=test,dc=local
objectClass: posixGroup
cn: Rocky
gidNumber: 1001
memberUid: uid1001

:wq!

idifを実行して登録。
ldapadd -x -D "cn=Manager,dc=test,dc=local" -W -f user01.ldif
Enter LDAP Password:
adding new entry "uid=user01,ou=People,dc=test,dc=local"
adding new entry "cn=user01,ou=Group,dc=test,dc=local"

結果を検索。

ldapsearch -x -D "uid=user01,ou=People,dc=test,dc=local" -W -b "d
c=test,dc=local" "uid=user01"
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=test,dc=local> with scope subtree
# filter: uid=user01
# requesting: ALL
#

# user01, People, test.local
dn: uid=user01,ou=People,dc=test,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Rocky
sn: UNIX
userPassword:: e1NTSEF9dmUxTENUM0NqVDUvbnJ4NzJGQ0JqNEkwc05hK3A2NGg=
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user01
uid: user01

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
1.16 ssh-keygenコマンドでssh公開鍵/秘密鍵の生成
※TeraTermはバージョンによりうまくいかなかったため、LDAPサーバでの作成を推奨
  ssh-keygen -f /home/user01
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user01.
Your public key has been saved in /home/user01.pub.
The key fingerprint is:
SHA256:JQyK2Nsc+ZtvVJrxwFu0s33OHE7Qzb0KIvYdG+MtwvI root@ldap.test.local
The key's randomart image is:
+---[RSA 3072]----+
|      .          |
| o . o o  .      |
|. o +  .o... . o.|
|   + o  +o= . . +|
|  . o . SX + .  .|
|       ==.o=. +. |
|      +.+ + BB.. |
|       o.+ = o=  |
|       .+E. .    |
+----[SHA256]-----+
※暗号会をed25519でパスフレーズを使用したい場合、 ssh-keygen -t ed25519 -f /tmp/id_ed25519 -N "パスフレーズ"としてください。サンプルはrsa鍵が作成されます。

公開鍵を見る
 cat /tmp/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH9lVlP/I9XHFY/Ifiom9aqX7qKjWUJC9VKN2InfNV6D root@ldap.test.local
公開鍵の情報をLDAPに登録する。
 vi ldapusermod.ldif

dn: uid=user01,ou=People,dc=test,dc=local
changetype: modify
add: objectClass
objectClass: ldapPublicKey
-
add: sshPublicKey
sshPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDPHQPN0MFtE6xMhmr/3R1TdJVdjgbIOi/JcNZJ4a3BfPzkCrbjE+KVugF+zqKopNt/xmkanCW6RZBe+80lqs2LD8+v5Nwf+jbyfpo6HVN+5KVMvYEX7tR9G8HKXb6/Y1snz3IriaDyEzBKSw7DC8TJqK7db5xJ9xTYY257AprKNyJw8Ht3nm8Xy06vUse5UiAtMDGAyJMYzpHoF5mrtdxV3tZ85duCgBr10GVd7PFtYbwXhtjRRq28w5fE/SLaZatH9tMIcRgxYInnywEfnaO7oiD6HegybnflsdUOlktikpjNi5CXwbc+eoxDNGrEySMu+5c4PFUMkElDF3u1214jQT40gZYHB+oVN/EJADccU4Ugs2K5vk1TWrJ6oPvYuZZ/OynVUbR9G5+2iJLD4Y5UfyjpQdoKarrfLqvRR4bYtWmnlqt3qqueosrarmDOuqJwCh7adHNRmz64hxKfuRM+W3ZGB1+hXrZ+/u8RZ6XQeugEum2fqV6EpjRebp7XzT0=

:wq!

ldapadd -x -D "cn=Manager,dc=test,dc=local" -W -f ldapusermod.ldif
Enter LDAP Password:
modifying entry "uid=user01,ou=People,dc=test,dc=local"

検索してldappublickeyが更新されているか確認。

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'dc=test,dc=local' 'uid=user01'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: uid=user01,ou=People,dc=test,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: ldapPublicKey
cn: Rocky
sn: UNIX
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user01
uid: user01
sshPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDPHQPN0MFtE6xMhmr/3R1TdJVd
 jgbIOi/JcNZJ4a3BfPzkCrbjE+KVugF+zqKopNt/xmkanCW6RZBe+80lqs2LD8+v5Nwf+jbyfpo6H
 VN+5KVMvYEX7tR9G8HKXb6/Y1snz3IriaDyEzBKSw7DC8TJqK7db5xJ9xTYY257AprKNyJw8Ht3nm
 8Xy06vUse5UiAtMDGAyJMYzpHoF5mrtdxV3tZ85duCgBr10GVd7PFtYbwXhtjRRq28w5fE/SLaZat
 H9tMIcRgxYInnywEfnaO7oiD6HegybnflsdUOlktikpjNi5CXwbc+eoxDNGrEySMu+5c4PFUMkElD
 F3u1214jQT40gZYHB+oVN/EJADccU4Ugs2K5vk1TWrJ6oPvYuZZ/OynVUbR9G5+2iJLD4Y5UfyjpQ
 doKarrfLqvRR4bYtWmnlqt3qqueosrarmDOuqJwCh7adHNRmz64hxKfuRM+W3ZGB1+hXrZ+/u8RZ6
 XQeugEum2fqV6EpjRebp7XzT0=

/home/user01/.sshを作成して公開鍵をauthorizedkeysにリネームして保存
.sshのパーミッションは700・authorizedkeysは600にしてください。

2.LDAPクライアント

2.1 LDAPクラインとをインストール

yum -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir
メタデータの期限切れの最終確認: 1:02:43 前の 2024年02月25日 14時25分18秒 に実施しました。
パッケージ sssd-2.9.1-4.el9_3.5.x86_64 は既にインストールされています。
パッケージ sssd-ldap-2.9.1-4.el9_3.5.x86_64 は既にインストールされています。
依存関係が解決しました。
=====================================================================================================
 パッケージ                  アーキテクチャー  バージョン                 リポジトリー         サイズ
=====================================================================================================
インストール:
 oddjob-mkhomedir            x86_64            0.34.7-7.el9               appstream             26 k
 openldap-clients            x86_64            2.6.3-1.el9                baseos               172 k
依存関係のインストール:
 oddjob                      x86_64            0.34.7-7.el9               appstream             63 k

トランザクションの概要
=====================================================================================================
インストール  3 パッケージ

ダウンロードサイズの合計: 261 k
インストール後のサイズ: 846 k
パッケージのダウンロード:
(1/3): openldap-clients-2.6.3-1.el9.x86_64.rpm                       2.5 MB/s | 172 kB     00:00
(2/3): oddjob-mkhomedir-0.34.7-7.el9.x86_64.rpm                      281 kB/s |  26 kB     00:00
(3/3): oddjob-0.34.7-7.el9.x86_64.rpm                                563 kB/s |  63 kB     00:00
-----------------------------------------------------------------------------------------------------
合計                                                                 223 kB/s | 261 kB     00:01
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                             1/1
  インストール中   : oddjob-0.34.7-7.el9.x86_64                                                  1/3
  scriptletの実行中: oddjob-0.34.7-7.el9.x86_64                                                  1/3
  インストール中   : oddjob-mkhomedir-0.34.7-7.el9.x86_64                                        2/3
  scriptletの実行中: oddjob-mkhomedir-0.34.7-7.el9.x86_64                                        2/3
  インストール中   : openldap-clients-2.6.3-1.el9.x86_64                                         3/3
  scriptletの実行中: openldap-clients-2.6.3-1.el9.x86_64                                         3/3
  検証             : openldap-clients-2.6.3-1.el9.x86_64                                         1/3
  検証             : oddjob-mkhomedir-0.34.7-7.el9.x86_64                                        2/3
  検証             : oddjob-0.34.7-7.el9.x86_64                                                  3/3

インストール済み:
  oddjob-0.34.7-7.el9.x86_64                       oddjob-mkhomedir-0.34.7-7.el9.x86_64
  openldap-clients-2.6.3-1.el9.x86_64

2.2 LDAPクライアントの認証をsssdにします。
SSSD(System Security Services Daemon)は認証クライアントで、Linux上で外部のディレクトリサービスへのアクセスや認証機能の利用を可能にする.

authselect select sssd with-mkhomedir --force
バックアップは /var/lib/authselect/backups/2024-02-25-06-29-48.WphC4S に保存されました
プロファイル "sssd" が設定されました。
以下の nsswitch マップはプロファイルで上書きされます:
- passwd
- group
- netgroup
- automount
- services

Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.

- with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module
  is present and oddjobd service is enabled and active
  - systemctl enable --now oddjobd.servic

LDAPクライアントの/etc/openldap/ldap.confに以下の2行のエントリを追加します。
URI ldap://192.168.11.5
BASE dc=test,dc=local

SSSDの設定ファイルを作成します。
vi /etc/sssd/sssd.conf

[sssd]
debug_level = 0
config_file_version = 2
services = nss, sudo, pam, ssh
domains = default

[domain/default]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
sudo_provider = ldap
ldap_uri = ldap://192.168.11.4
ldap_search_base = dc=test,dc=local
ldap_id_use_start_tls = False
ldap_search_timeout = 3
ldap_network_timeout = 3
ldap_opt_timeout = 3
ldap_enumeration_search_timeout = 60
ldap_enumeration_refresh_timeout = 300
ldap_connection_expire_timeout = 600
ldap_sudo_smart_refresh_interval = 600
ldap_sudo_full_refresh_interval = 10800
entry_cache_timeout = 1200
cache_credentials = True
ldap_tls_reqcert = never

[nss]
homedir_substring = /home
entry_negative_timeout = 20
entry_cache_nowait_percentage = 50

[pam]

[sudo]

[autofs]

[ssh]

[pac]

sssh.confに指定のパーミッションを設定する。
chmod 600 /etc/sssd/sssd.conf

sssdサービスを再起動
systemctl restart sssd oddjobd

sssdサービスをOS起動時に自動起動
systemctl enable sssd oddjobd
Created symlink /etc/systemd/system/multi-user.target.wants/oddjobd.service → /usr/lib/systemd/system/oddjobd.service.

2.3 ssh_configの変更
/etc/ssh/sshd_configファイルで以下の3点を変更(初期値は♯コメントアウトの値)
PubkeyAuthentication yes
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser root

3.クライアントPC

TeraTerm5.1を使用(4バージョンだと仕様のため失敗します)してLDAPクライアントにsshでアクセスする。
以下の感じでLDAPクライアントにログインできれば成功です。

ご参考まで

関連記事

TOP