能書き
私的サーバー構築日誌:仕切り直しからの自宅サーバー構築の続きです。
LDAPとSSSDの連携でログイン設定をする、その手順の確認です。以前もやりましたが、今回はクライアントマシン代わりにLXDコンテナを活用して、手軽に手順の確認だけ実施します。
目標
- SSSDを利用したログイン
- それをクライアントマシン代わりのLXDコンテナで実施
- LDAPアクセスに必要な認証局を信頼
参考文献
前提
OpenLDAPのサーバーをDockerコンテナで立てる事を目指して、前回と前々回に記事を書きました。これらの作業が済んでいる事が前提になります。
過去記事
XubuntuなどにSSSDを仕込むのは、過去、実施した事があります。この手順を、今回はLXDコンテナで確認します。
- 自宅サーバー構築譚:LDAPサーバー OpenLDAP・SSSD を利用したログイン・Xubuntu 22.04 LTS - Qiita
- 自宅サーバー構築譚:LDAPサーバー OpenLDAP・SSSD を利用したログイン
その他
LXDコンテナにSSSDを設定
SSSD利用のクライアントマシンを別に立てる方法を模倣する為、少々回りくどい手順になります。
オレオレ認証局の公開鍵を用意
オレオレ認証局は既に作成しました。以前確立した転送の手順に従って、必要なディレクトリに公開鍵を配置します。
sudo -u cert cp -p /home/cert/demoCA/pki/ca.crt /tmp/demoCA.crt
sudo chown transporter: /tmp/demoCA.crt
sudo -u transporter mv /tmp/demoCA.crt /srv/transport/publickey/
LXDコンテナ起動
LXDコンテナを立てます。ちょっとした悪戯で、タイムゾーンとロケールを日本向けに初期設定します。
lxc init images:ubuntu/jammy/cloud sssd-ldap --device eth0,ipv4.address=192.168.0.2
lxc config set sssd-ldap cloud-init.user-data="$(cat <<___
#cloud-config
timezone: Asia/Tokyo
locale: ja_JP.utf8
package_upgrade: true
___
)"
LXDコンテナ起動。
lxc start sssd-ldap
起動が終わるのを待ちます。
lxc exec sssd-ldap -- cloud-init status --wait
LXDコンテナの中へ入ります。
lxc shell sssd-ldap
オレオレ認証局を信頼
用意したオレオレ認証局の公開鍵を取得します。私のサーバーの名前はprimary.home
です。
mkdir /usr/share/ca-certificates/demoCA
cd /usr/share/ca-certificates/demoCA
sftp transporter@primary.home
cd publickey
get demoCA.crt
rm demoCA.crt
exit
取得したオレオレ認証局の公開鍵を信頼します。
chmod 644 demoCA.crt
echo demoCA/demoCA.crt >>/etc/ca-certificates.conf
update-ca-certificates
信頼できた事を確認しましょう。
ls -l /etc/ssl/certs/ | grep demoCA
ls -l /etc/ssl/certs/ca-certificates.crt
SSSD設定
SSSD関連パッケージをインストールします。
apt update
apt install -y sssd-ldap
/etc/sssd/sssd.conf
を作成し、パーミッションを0600
、所有権をroot:root
にします。
なおLDAPサーバーはprimary.home
とします。
cat <<___ >/etc/sssd/sssd.conf
[sssd]
config_file_version = 2
domains = home
[domain/home]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldaps://primary.home
cache_credentials = True
ldap_search_base = dc=home
ldap_default_bind_dn = cn=readonly,dc=home
___
chmod 600 /etc/sssd/sssd.conf
この/etc/sssd/sssd.conf
にldap_default_authtok
というパラメータを追記するとパスワードを平文で設定できます。権限がrootの600なのでそれでも良いような気がしますが、難読化するツールがあるようなので、それを使いましょう。
apt install -y sssd-tools
sss_obfuscate -d home
パスワード入力を2回要求されますので、それに従って入力すると、sssd.conf
に自動的に設定されます。
この後にSSSDサービスを開始する事を忘れないように。
systemctl start sssd
起動を確認します。
systemctl status sssd
mkhomedir設定
ホームディレクトリの自動作成を有効にします。
pam-auth-update --enable mkhomedir
LXDコンテナにコンソールログイン
参考文献のLDAPへのユーザー登録手順に従っていると、ユーザーtaroでパスワードMa9H%6jgとなっています。これでログインできる事を確認します。
getentで確認
まずは疎通確認。
getent passwd taro
id taro
下記のように表示されればOKです。
# getent passwd taro
taro:*:10000:10000:taro:/home/taro:/bin/bash
# id taro
uid=10000(taro) gid=10000(taro) groups=10000(taro)
コンソールログイン
一度、LXDコンテナから抜けます。
exit
さて、ログインできるでしょうか。
lxc console sssd-ldap
taro
とそのパスワードMa9H%6jg
を入力して、下記のように表示されればOKです。
$ lxc console sssd-ldap
To detach from the console, press: <ctrl>+a q
taro
Password:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-88-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Creating directory '/home/taro'.
ディレクトリ/home/taro
が作成され、そこがカレントディレクトリになっています。
$ pwd
/home/taro
確認が終わったらコンテナから抜けます。
exit
下記のようにプロンプトが表示されますで、ここでctrl+aの後にqを入力します。
$ exit
logout
Ubuntu 22.04.3 LTS sssd-ldap console
sssd-ldap login:
仕舞い
作成したLXDコンテナは導入手順の確認用ですので、これで用済みです。消しましょう。
lxc stop sssd-ldap
lxc rm sssd-ldap
XubuntuなどでSSSDを設定する場合も、同様の手順で実施すればOKでしょう。たぶん。