手当たり次第に書くんだ

飽きっぽいのは本能

目次に戻る

Overview

SSSD を導入して Linux 認証のバックエンドに LDAP を使用します。LDAP サーバーの構築はこちらを参照して下さい。

前提条件

  • こちらを参考に LDAP サーバーの導入が完了していること。

インストール

SSSD をインストールします。

myadmin@ubuntu:~$ sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install sssd sssd-tools

/etc/sssd/sssd.conf

新規に sssd.conf を作成します。本稿の例では cn=rw,dc=si1230,dc=com を BIND DN に指定しています。

myadmin@ubuntu:~$ sudo tee /etc/sssd/sssd.conf <<"EOF"
[sssd]
services = nss, pam
domains = default

[nss]
filter_groups = root
filter_users = root

[domain/default]
id_provider = ldap
ldap_uri = ldaps://ldap.si1230.com
ldap_search_base = dc=si1230,dc=com
ldap_default_bind_dn = cn=rw,dc=si1230,dc=com
EOF

パーミッションを 600 に変更します。これは SSSD の仕様のため必須です。

myadmin@ubuntu:~$ sudo chmod 600 /etc/sssd/sssd.conf

sss_obfuscate を使用してパスワードを難読化します。実行すると、ここで指定しているドメインのセクションに自動的に設定が書き込まれます。

myadmin@ubuntu:~$ sudo sss_obfuscate -d default

最終的な sssd.conf は以下の通りです。

myadmin@ubuntu:~$ sudo cat /etc/sssd/sssd.conf
[sssd]
services = nss, pam
domains = default

[nss]
filter_groups = root
filter_users = root

[domain/default]
id_provider = ldap
ldap_uri = ldaps://ldap.si1230.com
ldap_search_base = dc=si1230,dc=com
ldap_default_bind_dn = cn=rw,dc=si1230,dc=com
ldap_default_authtok_type = obfuscated_password
ldap_default_authtok = xxxxxxxx

設定の有効化

設定を有効化します。

myadmin@ubuntu:~$ sudo systemctl restart sssd.service && systemctl status sssd.service

NSS と PAM の設定変更

Ubuntu では、SSSD をインストールした時点で NSS と PAM の参照先に SSSD が追加されているため、この手順は不要です。もし追加されていない場合は下記のコマンドで有効にすることができます。pam-auth-update はオプション無しで実行すると TUI 設定画面になります。設定の追加や削除は下記のようにコマンドラインで実行できますが、コマンドラインで設定状態の確認はできません。pam-auth-update で指定可能なプロファイルは /usr/share/pam-configs 内に存在するファイル名です。

myadmin@ubuntu:~$ sudo pam-auth-update --enable sss

mkhomedir を有効にすると、ログイン時にホームディレクトリが存在しない場合にホームディレクトリを自動生成することができます。必要に応じて有効化します。

myadmin@ubuntu:~$ sudo pam-auth-update --enable mkhomedir

参考

少し面倒でしたが、SSSD のインストール及び mkhomedir 有効化後にで NSS と PAM の設定がどのように変更されているか確認しました。トラブルシューティングに役立つかもしれません。変更箇所はハイライトしています。

/etc/pam.d/common-auth

myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /etc/pam.d/common-auth | expand | tr -s [:space:] | sed 's/^\s/    /g'
auth [success=2 default=ignore] pam_unix.so nullok
auth [success=1 default=ignore] pam_sss.so use_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so

/etc/pam.d/common-account

myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /etc/pam.d/common-account | expand | tr -s [:space:] | sed 's/^\s/    /g'
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
account requisite pam_deny.so
account required pam_permit.so
account sufficient pam_localuser.so
account [default=bad success=ok user_unknown=ignore] pam_sss.so

/etc/pam.d/common-session

myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /etc/pam.d/common-session | expand | tr -s [:space:] | sed 's/^\s/    /g'
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session optional pam_umask.so
session required pam_unix.so
session optional pam_sss.so
session optional pam_systemd.so
session optional pam_mkhomedir.so

/etc/pam.d/common-password

myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /etc/pam.d/common-password | expand | tr -s [:space:] | sed 's/^\s/    /g'
password requisite pam_pwquality.so retry=3
password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt
password sufficient pam_sss.so use_authtok
password requisite pam_deny.so
password required pam_permit.so

/etc/nsswitch.conf

myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /etc/nsswitch.conf | expand | tr -s [:space:] | sed 's/^\s/    /g'
passwd: files systemd sss
group: files systemd sss
shadow: files sss
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files sss
ethers: db files
rpc: db files
netgroup: nis sss
automount: sss

正常性確認

id コマンドで確認します。

myadmin@ubuntu:~$ id u3000
uid=3000(u3000) gid=3000(g3000) groups=3000(g3000)

その他、SSH で u3000 ユーザーのログイン確認、パスワード変更確認が可能です。

目次に戻る

Ubuntu 22.04 SSSD Linux の LDAP 認証

コメントを残す

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

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

トップへ戻る