Contents
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 セクション
項目 | 設定値 | 備考 |
---|---|---|
services | nss, pam | SSSD が提供するサービスを指定します。本稿では nss と pam を指定しています。nss はユーザー、グループ、およびその他のシステム情報を連携します。pam は認証のプロセスを連携します。 |
domains | si1230.com | SSSD が管理するドメインを指定します。本稿では si1230.com を指定しています。この設定値は sssd.conf 内で一意であればよく、単一の設定であれば default などにするとシンプルかもしれません。 |
nss セクション
項目 | 設定値 | 備考 |
---|---|---|
filter_groups | root | Red Hat の情報によると「特定のユーザーが NSS データベースからフェッチされないように、SSSD に指示します。これは、root などのシステムアカウントに特に便利です。」と記載があります。おそらく、セキュリティ上のメリットがあると思っていますが、正確には理解できていません。 |
filter_users | root | 同上 |
domain/domain_name セクション
項目 | 設定値 | 備考 |
---|---|---|
id_provider | ldap | 連携する ID プロバイダーを指定します。本稿では LDAP を指定しています。 |
ldap_uri | ldaps://ldap.si1230.com | LDAP サーバーの URI を指定します。 |
ldap_search_base | dc=si1230,dc=com | ベース DN を指定しています。この値に含まれる全てのツリーが検索範囲となります。 |
ldap_tls_cacert | /etc/openldap/cacert/ca.crt | 信頼するルート証明書を指定します。 |
ldap_default_bind_dn | cn=readonly,dc=si1230,dc=com | バインド DN を指定します。本稿では SSSD を介して LDAP に書き込む想定が無い為、読み取り専用の DN を指定しています。 |
ldap_default_authtok | password | バインド DN のパスワードを指定します。 |
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)