手当たり次第に書くんだ

飽きっぽいのは本能

CentOS 8 SSSD Linux クライアントの LDAP 認証

目次に戻る

Overview

SSSD を使用して Linux 認証に LDAP を使用します。

前提条件

  • OS: CentOS Stream 8を使用します。
  • SELinux: 有効です。無効にする場合はこちらを参照して下さい。
  • Firewalld: 無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。

インストール

下記をインストールします。環境によってはインストール済みかもしれません。

[root@centos ~]# dnf install sssd sssd-tools sssd-ldap authselect

ルート証明書の配置

SELinux が有効の状態では、SSSD が読み込むルート証明書の場所は /etc/openldap/cacert となります。このディレクトリが存在しなければ作成して下さい。配置場所が適切でない場合、SSSD の起動時に Could not start TLS encryption. unknown error と出力され、LDAPS で接続ができません。尚、SELinux で許可、または SELinux 自体を無効化すればどの場所でも問題ありません。

[root@centos ~]# mkdir /etc/openldap/cacert
[root@centos ~]# cp ca.crt /etc/openldap/cacert

/etc/sssd/sssd.conf

新規に /etc/sssd/sssd.conf を作成します。このファイルは他の設定ファイルと異なり、元のファイルが存在しないため、ゼロから作成する必要があります。インターネット上の設定例では、以下に示されている以外の設定項目が多く見られますが、本稿の環境では以下が必要最小限の設定項目でした。

[sssd]
services = nss, pam
domains = si1230.com

[nss]
filter_groups = root
filter_users = root

[domain/si1230.com]
id_provider = ldap
ldap_uri = ldaps://ldap.si1230.com
ldap_search_base = dc=si1230,dc=com
ldap_tls_cacert = /etc/openldap/cacert/ca.crt
ldap_default_bind_dn = cn=readonly,dc=si1230,dc=com
ldap_default_authtok = password

各設定値の説明は以下の通りです。NSS との連携部分について理解しきれておらず、きちんと言語化できるように今後の課題とします。

sssd セクション

項目設定値備考
servicesnss, pamSSSD が提供するサービスを指定します。本稿では nss と pam を指定しています。nss はユーザー、グループ、およびその他のシステム情報を連携します。pam は認証のプロセスを連携します。
domainssi1230.comSSSD が管理するドメインを指定します。本稿では si1230.com を指定しています。この設定値は sssd.conf 内で一意であればよく、単一の設定であれば default などにするとシンプルかもしれません。
sssd.conf sssd セクション

nss セクション

項目設定値備考
filter_groupsrootRed Hat の情報によると「特定のユーザーが NSS データベースからフェッチされないように、SSSD に指示します。これは、root などのシステムアカウントに特に便利です。」と記載があります。おそらく、セキュリティ上のメリットがあると思っていますが、正確には理解できていません。
filter_usersroot同上
sssd.conf nss セクション

domain/domain_name セクション

項目設定値備考
id_providerldap連携する ID プロバイダーを指定します。本稿では LDAP を指定しています。
ldap_urildaps://ldap.si1230.comLDAP サーバーの URI を指定します。
ldap_search_basedc=si1230,dc=comベース DN を指定しています。この値に含まれる全てのツリーが検索範囲となります。
ldap_tls_cacert/etc/openldap/cacert/ca.crt信頼するルート証明書を指定します。
ldap_default_bind_dncn=readonly,dc=si1230,dc=comバインド DN を指定します。本稿では SSSD を介して LDAP に書き込む想定が無い為、読み取り専用の DN を指定しています。
ldap_default_authtokpasswordバインド DN のパスワードを指定します。
sssd.conf domain/domain_name セクション

LDAP のパスワードは平文で設定する必要がある為、sssd.conf のパーミッションを変更します。これは SSSD の仕様のため必須です。

[root@centos ~]# chmod 600 /etc/sssd/sssd.conf

authselect

authselect コマンドを使用して、Linux 認証を SSSD に切り替えます。CentOS 7 で使用していた authconfig は削除されています。

[root@centos ~]# authselect select sssd --force
バックアップは /var/lib/authselect/backups/2021-05-04-02-18-19.XQAf17 に保存されました
プロファイル "sssd" が設定されました。
以下の nsswitch マップはプロファイルで上書きされます:
- passwd
- group
- netgroup
- automount
- services

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

サービス起動設定

SSSD を起動します。

[root@centos ~]# systemctl enable --now sssd.service && systemctl status sssd.service

正常性確認

ここまでの設定に問題が無ければ下記のように LDAP 上のユーザー情報を取得できることが確認できます。SSH で user1 を指定してログインも可能なはずです。尚、ホームディレクトリは自動で作成されない為、必要に応じて作成して下さい。

[root@centos ~]# id user1
uid=3000(user1) gid=3000(group1) groups=3000(group1)

目次に戻る

CentOS 8 SSSD Linux クライアントの LDAP 認証

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る