LoginSignup
3
7

More than 5 years have passed since last update.

Ubuntu 16.04 で OpenLDAP でユーザ認証を行う

Posted at

Linux ミニクラスタのようなものを構築するときに, ユーザとストレージを統一したいですよね.
ユーザだけなら計算機ノード毎にアカウント作って, 公開鍵を各ノードの authorized_keys に追加して ssh ログインという手もありますが, NFS でストレージを扱いたいとなるとユーザ管理が必要になります
(gvfs, sshfs という手もあるかもではある)

伝統的にはユーザ管理は NIS, ストレージは NFS かと思います.
ユーザ管理については NIS は古すぎるようで LDAP 推奨のようなので LDAP にします.

LDAP サーバも LDAP クライアントも Ubuntu 16.04 とします.
ローカルのネットワーク内で完結する構成とします(拠点をまたいだ接続はしない)

LDAP サーバ設定

How To Install and Configure OpenLDAP and phpLDAPadmin on Ubuntu 16.04
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-openldap-and-phpldapadmin-on-ubuntu-16-04

を参考にセットアップします. 最後の方の Step 4 の TLS/SSL 設定は optional です.

グループとユーザを作っておきます.

ブラウザによるのかもしれませんが, ユーザ追加時, Firefox ではフィールドが自動フィルされてうまく cn などを設定できませんでした. うまく設定できないときは, とりあえず一度作成したのち, あとで修正することで対処します.

パスワードについては, コマンドラインで ldapadd の場合はハッシュ化必要ですが, phpldapadmin で行う場合はブラウザ側でやってくれるようです(が, 本当にハッシュ化しているかはあやしいところ...? クライアント側の PAM とうまく連携してパスワードは暗号化してやりとりしてくれているのかしら?). md5
ssha あたり動くの確認しました.

uid についてはデフォルト設定では 1000 から始まるため, Ubuntu のローカルユーザ UID と被りそうですので, phpldapadmin の config で割り振る uid の番号を 2000 とかに変えておくか, アカウント作成時に uid を変えておくとよいでしょう.

クライアント設定

を参考にセットアップします.

CUI 設定が出てこない場合は,

$ sudo dpkg-reconfigure ldap-auth-config

を呼びます.

今回はユーザは, クライアントからはパスワードを変更できないようにしました. そのためパスワードのハッシュアルゴリズムを選択するところではどれを選んでもよいようです.

LDAP サーバは, 設定の初期では ldapi:/// になっていますが, ldapi は普通の接続(?)とは異なるようで, ldapi だとうまく繋がりません. ldap://IP_ADDRi の無い ldap + IP アドレス指定にします.

その後,

/etc/nsswitch.conf で, passwd, group, shadow に ldap を追加します.

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap
gshadow:        files

nscd をリブートします.

$ sudo service nscd restart

getent passwd で LDAP ユーザがリストアップされているか確認します.

ここで LDAP ユーザが表示されない場合, 設定がうまくいっていません.
一旦 apt のパッケージを入れ直したほうがよいでしょう.

このあたり, 筆者はクライアント側での最初のセットアップがうまくいかずに, 接続がうまくいかずにいろいろ設定ファイルを試行錯誤して, しかりやっぱりうまくいかずに 2 営業日くらい無駄にしてしまいました. 結局のところ原因は, いろいろいじくった /etc/ldap.conf で, 他のサイトで記載されていた RFC 2307 (AD) mapping のセクションを有効にしたためでした(これは Windows 用っぽい?).

Ubuntu 16.04 の apt だと, pam の設定はだいたいいい感じに設定してくれるので, ホームディレクトリを作る以外は, pam 周りはいじる必要はありませんでした.

LDAP のアカウントで自分自身にログインしてみます(LDAP クライアントには openssh-server をすでに入れて ssh ログインできるようにしているとします).

$ ssh ldapuser@localhost

ログインできたら成功です!

TODO

  • ユーザ側でパスワードの変更ができるようにする.
  • 最初にログインしたときにホームディレクトリを作成するようにする(+ ホームディレクトリを NFS マウントする)
  • TLS/SSL 通信にしてセキュリティ向上をはかる
  • sssd を試す https://qiita.com/s5601026/items/8c5f16a2935ccd7fb305
  • NAS(Synology) を LDAP クライアントにして, NFS ストレージ連携をする
  • Windows のユーザアカウントも統一化する.
3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7