Contents
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 ユーザーのログイン確認、パスワード変更確認が可能です。