<Ubuntu 20.04>認証基盤OpenLDAPの導入
今回はOpenLDAPを導入しようと思います。
<クラスタ環境>
Ubuntu 20.04 LTS
OpenLDAPサーバーの構築
OpenLDAPのインストール
初めにOpenLDAP本体のslapdとCUIツールのldap-utilsを導入します。
sudo apt install -y slapd ldap-utils
ldap-utilsのインストール時にLDAPサーバーの管理者パスワード設定画面が出るはずなので設定します。
下記画面が出た際には入力したパスワードが一致していないので<Yes>を押下し再度パスワードを設定します。
次にベースDNを確認します。
sudo slapcat
dn: dc=nodomain
objectClass: top
objectClass: dcObject
objectClass: organization
o: nodomain
dc: nodomain
structuralObjectClass: organization
entryUUID: ##########################
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20230610015710Z
entryCSN: ###########################
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20230610015710Z
初期状態ではベースDNがnodomainとなっているので下記のようにSlapdを設定し直します。
sudo dpkg-reconfigure slapd
ここで設定したベースDNは覚えておきましょう。
下記メッセージが出れば完了です。
Creating initial configuration... done.
Creating LDAP directory... done.
Web管理ツールLAMのセットアップ
LAMのインストール
次にLDAPサーバーの管理をWebブラウザ上で管理するためにLAMをインストールします。
sudo apt install -y ldap-account-manager
Apache2,PHP等の依存パッケージも同時にインストールされます。
LAMとLDAPサーバーの連携
下記リンクからLAMの設定を行います。
右上のLAM configurationにアクセスしEdit server profilesを押下します、
初期設定パスワードのlamを入力してログインします。
Tool settings内Tree suffixとSecurity settings内List of valid usersをslapcatの情報をもとに書き換えSaveします。
またAccout types内Active accout typesのdcを書き換えます。
ログイン画面に戻り、ldap-utilsの導入時に設定したパスワードを入力しログインします。
初期グループを作成します。All changes were successfulと出れば成功です。
Ubuntu上でログインできるユーザーを作るにあたりGUIに沿ってグループ、ユーザーの順で作成します。なおエントリは先程設定したTool settings内のModule settingsで調整できます。
なおユーザー作成時にユーザーパスワードを設定しないとログインできません。(原因は分かりませんが)
CUIにて確認してみます。
sudo slapcat
先程追加したユーザー・グループの情報が表示されていれば完了です。
OpenLDAPのクライアントの設定
次にクライアントの設定を行います。認証基盤にはPAM(Pluggable Authentication Module)とNSS(Name Service Switch)を使います。
PAMはUbuntuの認証を一意に担っており、NSSはサービスの名前解決を行います。
NSS・PAMのインストール
sudo apt install -y libnss-ldapd libpam-ldapd
自動でnscdもインストールされます。NSSの設定画面が出ますので下記のように設定します。
OpenLDAPサーバーのURI(IPアドレス)を入力します。
BaseDNを入力します。
同期させるパッケージを選択します。ここではユーザー・グループ・パスワード情報を同期させるためpasswd、group、shadowをスペースキーで選択します。
これで/etc/nsswitch.confにLDAPの記載がされます。
ユーザーが追加されているか確認してみます。
getent passwd |grep testuser
testuser:*:10000:10000:testUser:/home/testuser:/bin/bash
正しく出ています。
/etc/passwdには記載されないので注意しましょう。
/homeディレクトリの自動作成
初期設定では作成したユーザーがログインした際に/home/<USER>が自動で作成されません。
PAMでログインした際に自動で作成されるように設定します。
/etc/pam.d/common-sessionに追記します。
session optional pam_mkhomedir.so skel=/etc/skel umask=02
サービスを再起動します。
sudo systemctl restart nslcd.service nscd.service
ログインできるかテストしてみる。
作成したユーザーでログインできるか確かめてみます。
ssh localhost -l testuser
ログインできたら終了です。
ローカル環境のUser,GroupsをOpenLDAPに移管する
apt install migrationtools
/usr/share/migrationtools内にスクリプトが入ります。
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "example.com";
# Default base
$DEFAULT_BASE = "dc=example,dc=com";
# Uncomment these to exclude Debian-managed system users and groups
$IGNORE_UID_BELOW = 1000;
$IGNORE_UID_ABOVE = 29999;
$IGNORE_GID_ABOVE = 29999;
chmod a+x migrate_base.pl
sudo ./migrate_all_online.sh
実行するとLDAP側に登録されるはずですがなぜかできませんでした。。
Sudoが可能なユーザーの設定
LAM上でsudoを行うためのグループを作成します。ここではSUDOersというグループを作成し、testuserを追加しました。
クライアント側の環境で/etc/sudoersを編集します。誤操作すると管理者権限が取得不能になるため安全なvisudoを使います。
ただvisudoとはありますが初期状態ではnanoエディターが開いてしまうのでVimに設定します。
sudo update-alternatives --set editor /usr/bin/vim.basic
末尾に追加します。
%SUDOers ALL=(ALL:ALL) ALL
参考にさせて頂いたサイトさん
Discussion