ubuntuにLDAPサーバーを構築するときに情報が散乱していて手間取ったのでまとめておきます
動作環境とか
Hardware: Raspberry Pi 3 Model B
OS: Ubuntu 20.04.2 LTS
OpenLDAPのインストール
slapdとldap-utilsをインストールする
$ sudo apt install slapd ldap-utils
slapdにインストール中にLDAPサーバーの管理者パスワードを設定するように求められるので、適当に入力する
このままだとドメインがnodomainになっているので再設定を行ない適当なドメインに変更する
$ sudo dpkg-reconfigure slapd
設定画面がひらくので
Omit OpenLDAP server configuration?: No
DNS domain name?: [任意のドメイン]
Organization name?: [任意の組織名]
Administrator password?: [管理者パスワード(インストール時に設定したやつの再設定)]
このあとの質問はEnter連打で基本的にOK
一応設定の確認
$ sudo slapcat
設定したドメイン名がドットで区切られて、それぞれがカンマ区切りでdc=のあとに書いてあればOK
例:[hoge.example.com]の場合は[dc=hoge,dc=example,dc=com]
LDAPサーバーの設定
ユーザーとグループの組織単位の追加
base.ldifを作成して以下の内容を書き込む
dc=hoge,dc=example,dc=comのところはslapdの設定のところで設定したドメインに合わせて設定する
dn: ou=people,dc=hoge,dc=example,dc=com
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=hoge,dc=example,dc=com
objectClass: organizationalUnit
ou: groups
書き込んだら設定を追加する
$ ldapadd -x -D cn=admin,dc=hoge,dc=example,dc=com -W -f base.ldif
このとき管理者パスワードを聞かれるので先に設定したやつを入力する
adding new entry ~
が2つ(peopleとgroups)が帰ってくればOK
LDAPサーバーにユーザーを追加
ユーザーのパスワードを生成する
$ slappasswd
New password:[アカウントに設定したいパスワードを入力]
Re-enter new password:[one more入力]
{SSHA}xxxxxxxxxxxxxxxxx
ここで表示された{SSHA}xxxxxxxxxxxxxxxxx
のところをメモしておく
ldapuser.ldifを作成して以下の内容を書き込む
dc=hoge,dc=example,dc=comのところはslapdの設定のところで設定したドメインに合わせて設定する
{SSHA}xxxxxxxxxxxxxxxxx
のところは先程メモしたやつを入力する
ここではユーザー[ubuntu]を例にしているが、ここは各々の環境でLDAPサーバーに追加したいユーザー名に変更する
また、uidNumber、gidNumberは追加したいユーザーのユーザーID、グループIDを入力する
dn: uid=ubuntu,ou=people,dc=hoge,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: ubuntu
sn: ubuntu
userPassword: {SSHA}xxxxxxxxxxxxxxxxx
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/ubuntu
dn: cn=ubuntu,ou=groups,dc=hoge,dc=example,dc=com
objectClass: posixGroup
cn: ubuntu
gidNumber: 2000
memberUid: ubuntu
書き込んだら設定を追加する
$ ldapadd -x -D cn=admin,dc=hoge,dc=example,dc=com -W -f ldapuser.ldif
このとき管理者パスワードを聞かれるので先に設定したやつを入力する
adding new entry ~
が2つ(peopleとgroups)が帰ってくればOK
間違えて設定してしまって変更したいときは下のコマンドで既存の設定を削除してからもう一度行なう
ユーザー情報の削除
$ ldapdelete -x -W -D cn=admin,dc=hoge,dc=example,dc=com uid=ubuntu,ou=people,dc=hoge,dc=example,dc=com
グループ情報の削除
$ ldapdelete -x -W -D cn=admin,dc=hoge,dc=example,dc=com cn=ubuntu,ou=groups,dc=hoge,dc=example,dc=com
LDAPクライアントの設定
LDAPクライアントのインストール
$ sudo apt install libnss-ldapd libpam-ldapd ldap-utils
インストール時にいろいろ聞かれるので答えていく
LDAP server Uniform Resource Identifier: ldap://[構築したLDAPサーバーのIPアドレス]/
Distinguished name of the search base: [LDAPサーバーで設定したドメイン(dc=なんとかをカンマで区切ったやつ)]
Name services to configure: [passwd, group, shadowにチェックと入れる]
LDAPサーバーのIPアドレスのところはldap://[IP or Domain]
にしないとログインできない場合があるのでこの形式をおすすめする
これで動く(はず)
サーバーのIPアドレスとドメインをあとから変更したいときは/etc/nslcd.conf
、Name servicesの変更は/etc/nsswitch.conf
を編集する
動作確認
sshしてみる
$ ssh [LDAPサーバーで設定したユーザー名]@[LDAPサーバーのIPアドレス]
[LDAPサーバーで設定したユーザー名]@[LDAPサーバーのIPアドレス]’s password: [LDAPサーバーで設定したパスワード]
[ログインしたときのログ]
$
こんな感じにssh接続できたらOK
お疲れ様でした
参考文献
- Ubuntu 20.04 : OpenLDAP インストールと設定 : Server World
- How To Install and Configure OpenLDAP and phpLDAPadmin on Ubuntu 16.04 | DigitalOcean
- Ubuntu 16.04 で OpenLDAP でユーザ認証を行う
あとがき
- 初Qiita記事だからこれでいいのかわからない
- ドメインの設定に手こずって数時間悩んだ
- いろいろいじってたら認証系の何かが死んでOS再インストールになった(ぴえん)