🖥️

<Ubuntu 20.04>認証基盤OpenLDAPの導入

2023/06/11に公開

今回は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の設定を行います。

http://localhost/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に追記します。

/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内にスクリプトが入ります。

/usr/share/migrationtools/migrate_base.pl
 # 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

末尾に追加します。

/etc/sudoers
%SUDOers	ALL=(ALL:ALL) ALL

参考にさせて頂いたサイトさん

https://zenn.dev/uchidaryo/books/ubuntu-2204-server-book/viewer/openldap
https://himausagipg.wiki.fc2.com/wiki/LDAPアカウント設定
https://www.server-world.info/query?os=Ubuntu_20.04&p=openldap&f=8
https://wiki.debian.org/LDAP/MigrationTools

岐阜大学アレックス研究室

Discussion