URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

LDAPユーザーでLinuxにログイン

 前回はLDAPサーバにユーザーを作成したので、このユーザーで別のLinuxへログインする所です。
 今回の内容は389-dsというよりLDAP全般の話かな。

 サーバ環境は前回までと同じですが、今回はもう一つ別のLinux環境を用意します。
 とりあえずOSは同じくRHEL 9.2にしました。

ホスト名FQDNIPアドレス備考
ds-1ds-1.example.com172.16.11.51LDAPサーバ
ds-2ds-2.example.com172.16.11.52LDAPサーバ
stgstg.example.com172.16.11.55クライアント(今回の作業対象)

LDAPクライアント設定

 新しいLinux環境を準備したら、当然ですが2台のLDAPサーバと通信可能にしておきます。
 また、LDAPクライアントとして動作させるために最低限必要なパッケージをインストールします。

# dnf -y install openldap-clients sssd-ldap oddjob-mkhomedir

 以降の作業も、特に記載がない限りクライアント側の作業です。
 とりあえずOpenLDAPクライアントの設定をしておきます。
 "/etc/openldap/ldap.conf"に以下の内容を追記します。

BASE dc=example,dc=com URI ldaps://ds-1.example.com:636 ldaps://ds-2.example.com:636 TLS_CACERTDIR /etc/openldap/certs TLS_REQCERT never

 "URI"にはスペース区切りで2台のLDAPサーバへの接続を記述しておきます。基本的にLDAPクライアントはDNS等と同様、前から順に1台目に接続できなかった場合は2台目に接続を試みます。
 セキュリティ事情を考慮して、プロトコルはLDAPSにしています。

SSSDの設定

 RHELではLDAPやActive Directoryとの認証連携にSystem Security Services Daemon(SSSD)を使います。
 今回はLDAPと連携するための設定を入れていきます。
 設定ファイル"/etc/sssd/sssd.conf"はデフォルトでは存在しないと思うので、新規作成して次の内容を記述します。

[sssd] config_file_version = 2 services = nss, pam, autofs domains = default [nss] filter_groups = root filter_users = root homedir_substring = /home [pam] [domain/default] id_provider = ldap autofs_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldaps://ds-1.example.com:636,ldaps://ds-2.example.com:636 ldap_chpass_uri = ldaps://ds-1.example.com:636,ldaps://ds-2.example.com:636 ldap_search_base = dc=example,dc=com ldap_id_use_start_tls = False ldap_tls_cacertdir = /etc/openldap/certs cache_credentials = True ldap_tls_reqcert = never entry_cache_timeout = 600 ldap_network_timeout = 3 ldap_connection_expire_timeout = 60 ldap_default_bind_dn = cn=readonly,dc=example,dc=com ldap_default_authtok_type = password ldap_default_authtok = password

 "ldap_uri"には先程と同様に2台分の接続を記述しますが、"sssd.conf"の区切り文字は",(カンマ)"であることに注意してください。
 "ldap_tls_reqcert=never"は証明書の検証を無視する設定で、ちゃんとした証明書を使っている環境であれば"demand"にして検証をするようにします。
 "ldap_default_bind_dn"の値は前回作成した読み取り専用オブジェクトのDNで、"ldap_default_authtok"はそのパスワードです。

 設定ファイルの作成と記述が終わったら、パーミッションを変更します。
 "sssd.conf"のパーミッションが"600"でないと"sssd"起動時の設定読み込みでエラーになります。

# chmod 0600 /etc/sssd/sssd.conf

 SSSDのサービス再起動と併せて関連サービスも起動しておきます。"oddjobd"はLDAPユーザーでログインした時にホームディレクトリを自動的に作成するためのサービスです。

# systemctl enable oddjobd.service
# systemctl start oddjobd.service
# systemctl restart sssd.service

 最後に"authselect"コマンドで認証ソースを"SSSD"に変更します。

# authselect select sssd with-mkhomedir --force

 これでLDAPと認証連携できるようになったはずです。
 "id"コマンド等で前回作成したLDAPユーザーを確認できます。

# id test
uid=10001(test) gid=10001(ldapusers) groups=10001(ldapusers)

 これでクライアント側の設定は完了です。

動作確認

 あとは実際にLDAPユーザーでログインしてみるだけです。

# ssh test@stg.example.com
test@stg.example.com's password:
Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Sat Apr 20 20:07:25 2024 from 172.16.11.251
[test@stg ~]$ pwd
/home/test
[test@stg ~]$ passwd
Changing password for user test.
Current Password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

 "test"ユーザーでログインし、パスワードが変更できました。

 今回はここまで。次はNFSとの連携かな。