| Works
「389 Directory Server」のユーザー作成
平日はなんだかんだで仕事以外のアウトプットをする余裕が全然なかった。
5月は西とか北に出張することになりそう…。
まあ、そのお仕事にRHDSが関連しているわけですが。
前回までで2台構成のマルチマスターレプリケーションが構成できたので、ユーザーを作成して認証できるようにするまで。
環境は引き続き同じです。
| ホスト名 | FQDN | IPアドレス |
| ds-1 | ds-1.example.com | 172.16.11.51 |
| ds-2 | ds-2.example.com | 172.16.11.52 |
セキュリティ等の設定
最初に最低限のセキュリティ設定として匿名ユーザーのアクセスを無効化します。
"dsconf"コマンドの設定は基本的にレプリケーションされないので、各サーバそれぞれで実行します。
設定の確認は次のような感じです。
nsslapd-allow-anonymous-access: off
"dsconf"の設定でもう一つ、後々のために"MemberOf"プラグインを有効にしておきます。
続いて、クライアントが参照用に使うオブジェクトを作成します。
ここからの操作ではOpenLDAPクライアントのコマンド"ldapadd"や"ldapmodify"を使うのですが、自己署名証明書に起因するエラーを回避するため、証明書の検証を無効にする設定を入れておきます。
設定ファイル"/etc/openldap/ldap.conf"に以下の一行を追加します。
TLS_REQCERT never ここからオブジェクトの作成ですが、いずれか一方で実行すればもう一方へもレプリケーションされるはずです。
次の様なLDIFファイルを作成します。
dn: cn=readonly,dc=example,dc=com
objectClass: person
cn: readonly
sn: readonly
userPassword: changemeこれを"ldapadd"コマンドで投入します。
"readonly-cn.ldif"が事前に作成したLDIFファイルです。
これで"cn=readonly,dc=example,dc=com"というオブジェクトが作成されましたが、この状態ではアクセス権がありませんので、ACIで読み取りのみのアクセス権を付与します。
ACIを記述したLDIFファイルを作成します。
dn: dc=example,dc=com
add: aci
aci: (targetattr=*) (version 3.0; acl "Read Only"; allow(read,search,compare)(userdn="ldap:///cn=readonly,dc=example,dc=com");) この内容は"cn=readonly,dc=example,dc=com"に対してディレクトリ全体の読み取り(read)、search(検索)、比較(compare)を許可しています。
これを"ldapmodify"コマンドで適用します。
このオブジェクトをLDAPクライアントが利用できるようにパスワードを設定します。
コマンド例はローカル実行想定なのであまり心配しなくてもよいと思いますが、パスワードは平文でやりたくなかったので"-Z"オプションでSTARTTLSを使っています。
プロンプトが表示されたら新しいパスワードを入力します。
OU/グループ/ユーザーの作成
ここからはLinuxの認証に使うユーザーやグループを作成します。
まずはユーザーやグループを配置するためのOUを作成するのですが、この後で使う"dsidm"コマンドでは暗黙で"People"と"Groups"を使うので、これを作成します。
LDIFファイルは次の通りです。
dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups
dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People"ldapadd"コマンドで投入します。
続いてグループとユーザーの作成です。
OUのようにLDIFファイルから作成しても良いのですが、ここでは389-dsで用意されている"dsidm"コマンドを使います。
グループから作成します。
# dsidm localhost posixgroup create --cn ldapusers --gidNumber 10001
"pwadmins"と"ldapusers"の2つのグループを作成しました。"gidNumber"はLinux上でのGIDになります。
続いてユーザー作成です。オプションが多くて長くなっていますが、内容はそれほど難しくないと思います。
# dsidm localhost user create --uid test --cn test --displayName "Test User" --uidNumber 10001 --gidNumber 10001 --homeDirectory /home/test
"pwadmin"と"test"というユーザーを作成しました。"gidNumber"はLinuxへのログイン時に所属させたいグループのGIDに合わせます。
ユーザーを作成したら初期パスワードを設定して利用可能にします。
# dsidm localhost account reset_password uid=test,ou=people,dc=example,dc=com "password"
作成したユーザーは次のように確認することができます。
pwadmin
test
# dsidm localhost user get test
dn: uid=test,ou=people,dc=example,dc=com
cn: test
displayName: Test User
gidNumber: 10001
homeDirectory: /home/test
objectClass: top
objectClass: nsPerson
objectClass: nsAccount
objectClass: nsOrgPerson
objectClass: posixAccount
uid: test
uidNumber: 10001
userPassword: {PBKDF2-SHA512}10000$LPe2vwfkurbasSHbhaG13ZSwqxxx
これでユーザーは作成できましたが、実運用上はユーザー自身にパスワードを変更させる必要があります。
次のLDIFファイルは"ou=People"配下のユーザーに自分自身のパスワード変更権限を与えています。
dn: ou=People,dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr="userPassword") (version 3.0; acl "Allow users updating their password"; allow (write) userdn= "ldap:///self";)これを"ldapmodify"で適用します。
これで最低限の準備はできたので、別のLinuxから認証してみます。
そっちは次回で。