フリーソフト/OpenLDAPサーバ構築
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
RIGHT:[[フリーソフトウェアのコンパイル]]
*LDAP サーバパッケージのインストール [#b1647d38]
Debian Sarge にて構築.
インストール時の設定(debconf)で大まかなところは設定される.
管理者ユーザ(admin)のパスワードがどうやって設定されている...
だけ,よくわからない.
よくある本だと,slapd.conf 内に,rootdn, rootpw を
設定するようになっているが,それがなくてもできるみたい.
(->DB に入ってしまっている?,ある意味,忘れてしまったら終...
//=======================================================...
*パスワードファイル(フィールド)へのアクセス制御 [#a81af91c]
登録されたユーザのデータを見るためには
% ldapsearch -x -b 'dc=ldap,dc=example,dc=co,dc=jp' uid...
などとすればいい.
ここで,userPassword 属性の表示は Base64 でエンコードされ...
となっている.
が,デコードすれば CRYPT されたパスワードはだれにでも見えて
しまい,それはあまり良くない.
なので,アクセス制限をかけて userPassword 属性は管理者と
自分だけに読み書きできるようにしておく.
(厳密に言うと,認証時だけはだれにでも読めるようにする.)
slapd.conf に
access to attribute=userPassword
by self write
by dn="cn=admin,dc=ldap,dc=example,dc=co,dc=jp" wr...
by anonymous auth
by * none
access to *
by dn="cn=admin,dc=ldap,dc=example,dc=co,dc=jp" wr...
by self write
by * read
という行を加えて slapd を再起動する.
ちなみに,Debian では,デフォルトでこの設定がなされている.
//=========================================================
*検索インデックスの作成. [#w32d9e3c]
検索を高速にするため,インデックスを作成する.
slapd.conf の
# index objectClass,uid,uidNumber,gidNumber,memberUid ...
# index cn,mail,surname,givenname
の行のコメントをはずして slapd を停止する.
そして,
# /usr/sbin/slapindex
を実行すればインデックスの作成ができる.
//=========================================================
*OpenLDAP サーバの証明書とキー作成 [#h392af63]
**秘密キーの作成 [#s66e93f0]
# mkdir /etc/ldap/private
# cd /etc/ldap/private
# openssl genrsa -out LDAPserver.key
Generating RSA private key, 512 bit long modulus
......++++++++++++
..........................++++++++++++
e is 65537 (0x10001)
**証明書発行要求(CSR)の作成 [#n7cf4fe3]
CN にはサーバの FQDN を入力する.
# cd /etc/ldap/private
# openssl req -out LDAPserver.csr -new \
-key LDAPserver.key -config /etc/ssl/openssl.cnf
...
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [Osaka]:
Locality Name (eg, city) [Osaka]:
Organization Name (eg, company) [NullPyon]:
Organizational Unit Name (eg, section) [NullPyon]:
Common Name (eg, YOUR name) []:AAA.XXXX.jp
Email Address []:tanaka@XXXX.jp
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#
**認証局による署名とサーバ証明書の発行 [#gde1fa9e]
# cd /etc/ldap/private
# openssl ca -config /etc/ssl/openssl.cnf \
> -out LDAPserver.crt -infiles LDAPserver.csr
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for /etc/ssl/demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Nov 16 05:00:16 2005 GMT
Not After : Nov 16 05:00:16 2006 GMT
Subject:
countryName = JP
stateOrProvinceName = Osaka
organizationName = NullPyon
organizationalUnitName = NullPyon
commonName = mendocino.example...
emailAddress = tanaka@XXXX.jp
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
4B:18:48:14:5F:F6:6F:CB:18:4C:B2:2E:A4:7F...
X509v3 Authority Key Identifier:
keyid:42:C1:D4:44:3C:3A:E1:EC:DE:50:1C:0C...
DirName:/C=JP/ST=Osaka/L=Osaka/O=NullPyon...
serial:B6:F6:D2:B1:AF:FA:94:28
Certificate is to be certified until Nov 16 05:00:16 200...
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
//-----------
**作成した証明書のベリファイ [#y6073bcf]
$ openssl verify -CAfile /etc/ssl/demoCA/cacert.pem LDAP...
LDAPserver.crt: OK
//-----------
**証明書を利用して LDAPS のたちあげ [#yace4a3c]
/etc/ldap/slapd.conf に以下の行を追加
## Configuration for SSL/TLS
#TLSCipherSuite HIGH:MEDIUM:+SSLv2
#TLSCipherSuite HIGH <- TLSCipherSuite ...
TLSCertificateFile /etc/ldap/private/LDAPserver.crt
TLSCertificateKeyFile /etc/ldap/private/LDAPserver.key
#TLSCAcerificatePath /etc/ssl/demoCA <- クライアント認...
#TLSCACertificateFile /etc/ssl/demoCA/cacert.pem <- ク...
TLSVerifyClient never
/etc/default/slapd に以下の行を
SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///"
次のように変更することで,外部からの問い合わせを LDAPS の...
SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"
**クライアント側 [#gc4ce563]
クライアント側から ldaps で接続するには /etc/openldap/lda...
/etc/ldap/ldap.conf(Debian系) に以下の設定を追加する.
TLS_CACERT /etc/openldap/cacerts/cacert.pem
また,自己認証局の証明書(cacert.pem)を ldap.conf で指定し...
(ちなみに,LDAP サーバ証明書(Public Key)の入手方法は
openssl s_client -connect my.ldap.server.com:636
)
もしくは,上記の ldap.conf に以下の行を書く.
TLS_REQCERT never
http://elfhbt.blog33.fc2.com/blog-category-8.html
//=======================================================...
*登録データ登録 [#k1889bfb]
**OU People [#v0d8d959]
$ cat People.ldif
dn: ou=People,dc=ldap,dc=example,dc=jp
ou: People
objectclass: organizationalUnit
$ ldapadd -x -W -D 'cn=admin,dc=ldap,dc=example,dc=jp' \
-f People.ldif
Enter LDAP Password:
adding new entry 'ou=People,dc=ldap,dc=example,dc=jp'
**ユーザ soka [#z1f703fa]
$ cat usersoka.ldif
dn: uid=soka,ou=People,dc=ldap,dc=example,dc=jp
uid: soka
objectClass: inetOrgPerson
objectclass: posixAccount
objectclass: shadowAccount
uidNumber: 8000
gidNumber: 8000
gecos: Soka
gn: Non
homeDirectory: /home/soka
loginShell: /bin/bash
cn: そか
sn: Soka
o: TEST
userPassword: {CRYPT}Ar6lc7Ew9j62
shadowLastChange: 10963
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
mail: soka@XXXX.jp
上記の LDIF ファイル(usersoka.ldif)で,
日本語文字になっているところは UCS-8 で書くこと.
(というか,lv なんかでフィルタしたものを ldapadd コマンドに
渡せばいい)
また,userPassword の部分は,エンコード({CRYPT})したもの...
その文字列を求めるツールとして slappasswd というツールが...
% /usr/sbin/slappasswd -h '{CRYPT}' -s パスワード -c "%s"
$ ldapadd -x -W -D 'cn=admin,dc=ldap,dc=example,dc=jp' \
-f usersoka.ldif
Enter LDAP Password:
adding new entry 'uid=soka,ou=People,dc=ldap,dc=example,...
**OU Group [#w96b6d6d]
$ cat Group.ldif
dn: ou=Group,dc=ldap,dc=example,dc=jp
ou: Group
objectClass: organizationalUnit
$ ldapadd -x -W -D 'cn=admin,dc=ldap,dc=example,dc=jp' \
-f Group.ldif
Enter LDAP Password:
adding new entry 'ou=Group,dc=ldap,dc=example,dc=jp'
**グループ nonstop [#na7eedcc]
$ cat groupnonstop.ldif
dn: cn=nonstop,ou=Group,dc=ldap,dc=example,dc=jp
cn: nonstop
objectclass: posixGroup
gidNumber: 8000
$ ldapadd -x -W -D 'cn=admin,dc=ldap,dc=example,dc=jp' \
-f groupnonstop.ldif
Enter LDAP Password:
adding new entry 'cn=nonstop,ou=Group,dc=ldap,dc=example...
**ユーザ一括登録 [#x002ab83]
ユーザを一括で登録する場合は,上記のの usersoka.ldif のよ...
LDIF データを空行で区切って 1つのファイル(adduser.ldif)と...
同じコマンドで登録をすればよい.
**sudoers の登録 [#yc6d04ec]
visudo で編集している /etc/sudoers の情報を LDAP に持たせ...
CentOS5 の場合,
/usr/share/doc/sudo-1.7.2p1/schema.OpenLDAP
を
/etc/openldap/schema/sudo.schema
としてコピー.
/etc/openldap/slapd.conf で include
include /etc/openldap/schema/sudo.schema
# service ldap restart
ou=SUDOers コンテナを作る
次のような ldif ファイルで,/etc/sudoers の Defaults エン...
登録する.
dn: ou=SUDOers,dc=ldap,dc=example,dc=jp
ou: SUDOers
objectclass: organizationalunit
次のような ldif ファイルで,/etc/sudoers の Defaults エン...
登録する.
dn: cn=defaults,ou=SUDOers,dc=ldap,dc=example,dc=jp
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOption: env_keep+=SSH_AUTH_SOCK
$ ldapadd -x -W -h localhost -D 'cn=admin,dc=ldap,dc=exa...
また,
/usr/share/doc/sudo-1.7.2p1/sudoers2ldif
という変換スクリプトもある.
$ export SUDOERS_BASE=ou=SUDOers,dc=ldap,dc=example,dc=jp
$ sudo cat /etc/sudoers |perl /usr/share/doc/sudo-1.7.2p...
で,sudo.ldif の必要な所だけ切り取って LDAP サーバに登録
$ ldapadd -x -W -h localhost -D 'cn=admin,dc=ldap,dc=exa...
//=======================================================...
*登録情報の検索 [#vf6784ff]
一覧の表示
ldapsearch -h localhost -x -b 'dc=ldap,dc=example,dc=jp'...
soka ユーザが自分の情報を検索(パスワードフィールドも見える)
ldapsearch -h localhost -x -W -b 'dc=ldap,dc=example,dc=...
-D "uid=soka,ou=People,dc=ldap,dc=example,dc=jp" uid=soka
//=======================================================...
*登録情報の変更 [#nae5a28c]
登録情報の変更には,ldapmodify コマンドを使う.
% echo 'dn: uid=soka,ou=People,dc=ldap,dc=example,dc=co...
>changetype: modify
>replace: loginShell
>loginShell: /bin/zsh
>' | ldapmodify -x -W \
-D 'uid=soka,ou=People,dc=ldap,dc=example,dc=co,dc=jp'
Enter LDAP Password:
modifying entry "uid=soka,ou=People,dc=ldap,dc=example,...
上記の例は,ユーザが自分のログインシェルを変更している例...
(chfn や chsh は LDAP に使えないので,
直接 LDAP の情報を変更しないといけない.)
標準入力から ldapmodify にデータを渡しているが,
LDIF ファイルにデータを書き込んでおいて,
-f オプションで指定してもいい.
また,一度に複数のデータを書き換える場合は,
データを "-" で区切って以下のようにする.
dn: uid=soka,ou=People,dc=ldap,dc=example,dc=co,dc=jp
changetype: modify
replace: loginShell
loginShell: /bin/zsh
-
replace: gecos
gecos: hogehogera
ちなみに,changetype として指定できるのは以下のもの.
-replace
-add
-delete
//=======================================================...
*登録情報の変更 [#a54b2c58]
アカウントを削除するときは, ldapdelete を使って,
LDAP の情報から対応するものを削除する.
% ldapdelete -x \
-W -D 'cn=admin,dc=ldap,dc=example,dc=co,dc=jp' \
'uid=soka,ou=People,dc=ldap,dc=example,dc=co,dc=jp'
当然,このあと,ホームディレクトリや mail スプールなどを
削除する必要がある.
//=======================================================...
*SASL の利用 [#vc1e430b]
**アプリケーション追加 [#o6eac564]
# apt-get install sasl2-bin libsasl2-modules
**saslauthd の設定 [#k173e7ee]
/etc/default/saslauthd を編集
以下の行がコメントアウトされているので,アンコメント.
START=yes
以下の行を編集(sasldb を追加する)
MECHANISMS="pam sasldb"
**認証データベースの設定 [#k6517080]
# cat > /usr/lib/sasl2/slapd.conf
pwcheck_method: sasldb
^D
# saslpasswd2 -c -a slapd -u ldap.example.co.jp soka
Password:
Again (for verification):
# sasldblistusers2
soka@ldap.example.co.jp: userPassword
**slapd の設定変更 [#ace2ca06]
/etc/ldap/slapd.conf に以下を追加
sasl-realm ldap.example.co.jp
sasl-regexp
uid=(.*),cn=.*
uid=$1,ou=People,dc=ldap,dc=example,dc=co,dc=jp
**SASL をサポートしているかを確認 [#n0069619]
$ ldapsearch -x -b '' -s base '(objectclass=*)' supporte...
# extended LDIF
#
# LDAPv3
# base <> with scope base
# filter: (objectclass=*)
# requesting: supportedSASLMechanisms
#
#
dn:
supportedSASLMechanisms: NTLM
supportedSASLMechanisms: DIGEST-MD5
supportedSASLMechanisms: CRAM-MD5
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
**SASL を利用して LDAP を検索 [#l0dd57c8]
# ldapsearch -U soka -b 'dc=ldap,dc=example,dc=co,dc=jp' \
'(objectclass=*)'
これがうまくいけば,Mac にてクリアテキストパスワードの使...
認証がうまくいく.
**プレインテキストパスワード認証を抑制する [#c280742b]
プレインテキストパスワードでの認証(Simple Bind)を抑制する...
/etc/ldap/slapd.conf の先頭辺りに
disallow bind_simple
と書いておく.
//=======================================================...
*GUI でのデータ閲覧 [#c53b3bee]
GQ を使えば,GUI にて LDAP のデータ操作ができる.
(Debian にはパッケージがある.要 GTK+)
&ref(gq.png);
//=======================================================...
*LDAP クライアントとしての設定 [#xed62f83]
**PAM [#f72e0e70]
ユーザ認証,承認のために PAM を使用するので,
LDAP 認証用の PAM モジュール pam_ldap の設定と,
そのモジュールを各プログラムで使用するように設定を行う.
/etc/pam.d/common-account
account [success=1 default=ignore] pam_unix.so
account required pam_ldap.so
account required pam_permit.so
/etc/pam.d/common-auth
auth [success=1 default=ignore] pam_unix.so
auth required pam_ldap.so use_first_pass
auth required pam_permit.so
/etc/pam.d/common-password
password sufficient /lib/security/pam_ldap.so
password required pam_unix.so nullok obscure min=4 m...
/etc/pam_ldap.conf
host 127.0.0.1
base dc=ldap,dc=example,dc=co,dc=jp
ldap_version 3
rootbinddn cn=admin,dc=ldap,dc=example,dc=co,dc=jp
pam_password crypt
ssl on
tls_checkpeer no
/etc/libnss-ldap.conf
host 127.0.0.1
base dc=ldap,dc=example,dc=co,dc=jp
ldap_version 3
ssl on
tls_checkpeer no
/etc/ldap.secret (<--chmod 600 しておく)
rootdn のパスワード
**OpenLDAP サーバを LDAP クライアントとして設定する場合 [...
nsswitch.conf に
passwd: files ldap
shadow: files ldap
group: files ldap
といったエントリがあると,サーバ起動時のデーモン起動順に...
ldap の名前解決待ちが延々と続くことがある.
その場合,/etc/ldap.conf(これは nss_ldap の設定.OpenLDAP...
bind_policy soft
を指定しておいてやるとよい.
//=======================================================...
*データマイグレーション [#h93142da]
現行ファイル(/etc/hosts など)から LDAP へのデータ移行には,
PADL で提供されている
[[PADL Migration Tools:http://www.padl.com/OSS/MigrationT...
が使える.
終了行:
RIGHT:[[フリーソフトウェアのコンパイル]]
*LDAP サーバパッケージのインストール [#b1647d38]
Debian Sarge にて構築.
インストール時の設定(debconf)で大まかなところは設定される.
管理者ユーザ(admin)のパスワードがどうやって設定されている...
だけ,よくわからない.
よくある本だと,slapd.conf 内に,rootdn, rootpw を
設定するようになっているが,それがなくてもできるみたい.
(->DB に入ってしまっている?,ある意味,忘れてしまったら終...
//=======================================================...
*パスワードファイル(フィールド)へのアクセス制御 [#a81af91c]
登録されたユーザのデータを見るためには
% ldapsearch -x -b 'dc=ldap,dc=example,dc=co,dc=jp' uid...
などとすればいい.
ここで,userPassword 属性の表示は Base64 でエンコードされ...
となっている.
が,デコードすれば CRYPT されたパスワードはだれにでも見えて
しまい,それはあまり良くない.
なので,アクセス制限をかけて userPassword 属性は管理者と
自分だけに読み書きできるようにしておく.
(厳密に言うと,認証時だけはだれにでも読めるようにする.)
slapd.conf に
access to attribute=userPassword
by self write
by dn="cn=admin,dc=ldap,dc=example,dc=co,dc=jp" wr...
by anonymous auth
by * none
access to *
by dn="cn=admin,dc=ldap,dc=example,dc=co,dc=jp" wr...
by self write
by * read
という行を加えて slapd を再起動する.
ちなみに,Debian では,デフォルトでこの設定がなされている.
//=========================================================
*検索インデックスの作成. [#w32d9e3c]
検索を高速にするため,インデックスを作成する.
slapd.conf の
# index objectClass,uid,uidNumber,gidNumber,memberUid ...
# index cn,mail,surname,givenname
の行のコメントをはずして slapd を停止する.
そして,
# /usr/sbin/slapindex
を実行すればインデックスの作成ができる.
//=========================================================
*OpenLDAP サーバの証明書とキー作成 [#h392af63]
**秘密キーの作成 [#s66e93f0]
# mkdir /etc/ldap/private
# cd /etc/ldap/private
# openssl genrsa -out LDAPserver.key
Generating RSA private key, 512 bit long modulus
......++++++++++++
..........................++++++++++++
e is 65537 (0x10001)
**証明書発行要求(CSR)の作成 [#n7cf4fe3]
CN にはサーバの FQDN を入力する.
# cd /etc/ldap/private
# openssl req -out LDAPserver.csr -new \
-key LDAPserver.key -config /etc/ssl/openssl.cnf
...
-----
Country Name (2 letter code) [JP]:
State or Province Name (full name) [Osaka]:
Locality Name (eg, city) [Osaka]:
Organization Name (eg, company) [NullPyon]:
Organizational Unit Name (eg, section) [NullPyon]:
Common Name (eg, YOUR name) []:AAA.XXXX.jp
Email Address []:tanaka@XXXX.jp
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#
**認証局による署名とサーバ証明書の発行 [#gde1fa9e]
# cd /etc/ldap/private
# openssl ca -config /etc/ssl/openssl.cnf \
> -out LDAPserver.crt -infiles LDAPserver.csr
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for /etc/ssl/demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Nov 16 05:00:16 2005 GMT
Not After : Nov 16 05:00:16 2006 GMT
Subject:
countryName = JP
stateOrProvinceName = Osaka
organizationName = NullPyon
organizationalUnitName = NullPyon
commonName = mendocino.example...
emailAddress = tanaka@XXXX.jp
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
4B:18:48:14:5F:F6:6F:CB:18:4C:B2:2E:A4:7F...
X509v3 Authority Key Identifier:
keyid:42:C1:D4:44:3C:3A:E1:EC:DE:50:1C:0C...
DirName:/C=JP/ST=Osaka/L=Osaka/O=NullPyon...
serial:B6:F6:D2:B1:AF:FA:94:28
Certificate is to be certified until Nov 16 05:00:16 200...
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
//-----------
**作成した証明書のベリファイ [#y6073bcf]
$ openssl verify -CAfile /etc/ssl/demoCA/cacert.pem LDAP...
LDAPserver.crt: OK
//-----------
**証明書を利用して LDAPS のたちあげ [#yace4a3c]
/etc/ldap/slapd.conf に以下の行を追加
## Configuration for SSL/TLS
#TLSCipherSuite HIGH:MEDIUM:+SSLv2
#TLSCipherSuite HIGH <- TLSCipherSuite ...
TLSCertificateFile /etc/ldap/private/LDAPserver.crt
TLSCertificateKeyFile /etc/ldap/private/LDAPserver.key
#TLSCAcerificatePath /etc/ssl/demoCA <- クライアント認...
#TLSCACertificateFile /etc/ssl/demoCA/cacert.pem <- ク...
TLSVerifyClient never
/etc/default/slapd に以下の行を
SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///"
次のように変更することで,外部からの問い合わせを LDAPS の...
SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"
**クライアント側 [#gc4ce563]
クライアント側から ldaps で接続するには /etc/openldap/lda...
/etc/ldap/ldap.conf(Debian系) に以下の設定を追加する.
TLS_CACERT /etc/openldap/cacerts/cacert.pem
また,自己認証局の証明書(cacert.pem)を ldap.conf で指定し...
(ちなみに,LDAP サーバ証明書(Public Key)の入手方法は
openssl s_client -connect my.ldap.server.com:636
)
もしくは,上記の ldap.conf に以下の行を書く.
TLS_REQCERT never
http://elfhbt.blog33.fc2.com/blog-category-8.html
//=======================================================...
*登録データ登録 [#k1889bfb]
**OU People [#v0d8d959]
$ cat People.ldif
dn: ou=People,dc=ldap,dc=example,dc=jp
ou: People
objectclass: organizationalUnit
$ ldapadd -x -W -D 'cn=admin,dc=ldap,dc=example,dc=jp' \
-f People.ldif
Enter LDAP Password:
adding new entry 'ou=People,dc=ldap,dc=example,dc=jp'
**ユーザ soka [#z1f703fa]
$ cat usersoka.ldif
dn: uid=soka,ou=People,dc=ldap,dc=example,dc=jp
uid: soka
objectClass: inetOrgPerson
objectclass: posixAccount
objectclass: shadowAccount
uidNumber: 8000
gidNumber: 8000
gecos: Soka
gn: Non
homeDirectory: /home/soka
loginShell: /bin/bash
cn: そか
sn: Soka
o: TEST
userPassword: {CRYPT}Ar6lc7Ew9j62
shadowLastChange: 10963
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
mail: soka@XXXX.jp
上記の LDIF ファイル(usersoka.ldif)で,
日本語文字になっているところは UCS-8 で書くこと.
(というか,lv なんかでフィルタしたものを ldapadd コマンドに
渡せばいい)
また,userPassword の部分は,エンコード({CRYPT})したもの...
その文字列を求めるツールとして slappasswd というツールが...
% /usr/sbin/slappasswd -h '{CRYPT}' -s パスワード -c "%s"
$ ldapadd -x -W -D 'cn=admin,dc=ldap,dc=example,dc=jp' \
-f usersoka.ldif
Enter LDAP Password:
adding new entry 'uid=soka,ou=People,dc=ldap,dc=example,...
**OU Group [#w96b6d6d]
$ cat Group.ldif
dn: ou=Group,dc=ldap,dc=example,dc=jp
ou: Group
objectClass: organizationalUnit
$ ldapadd -x -W -D 'cn=admin,dc=ldap,dc=example,dc=jp' \
-f Group.ldif
Enter LDAP Password:
adding new entry 'ou=Group,dc=ldap,dc=example,dc=jp'
**グループ nonstop [#na7eedcc]
$ cat groupnonstop.ldif
dn: cn=nonstop,ou=Group,dc=ldap,dc=example,dc=jp
cn: nonstop
objectclass: posixGroup
gidNumber: 8000
$ ldapadd -x -W -D 'cn=admin,dc=ldap,dc=example,dc=jp' \
-f groupnonstop.ldif
Enter LDAP Password:
adding new entry 'cn=nonstop,ou=Group,dc=ldap,dc=example...
**ユーザ一括登録 [#x002ab83]
ユーザを一括で登録する場合は,上記のの usersoka.ldif のよ...
LDIF データを空行で区切って 1つのファイル(adduser.ldif)と...
同じコマンドで登録をすればよい.
**sudoers の登録 [#yc6d04ec]
visudo で編集している /etc/sudoers の情報を LDAP に持たせ...
CentOS5 の場合,
/usr/share/doc/sudo-1.7.2p1/schema.OpenLDAP
を
/etc/openldap/schema/sudo.schema
としてコピー.
/etc/openldap/slapd.conf で include
include /etc/openldap/schema/sudo.schema
# service ldap restart
ou=SUDOers コンテナを作る
次のような ldif ファイルで,/etc/sudoers の Defaults エン...
登録する.
dn: ou=SUDOers,dc=ldap,dc=example,dc=jp
ou: SUDOers
objectclass: organizationalunit
次のような ldif ファイルで,/etc/sudoers の Defaults エン...
登録する.
dn: cn=defaults,ou=SUDOers,dc=ldap,dc=example,dc=jp
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOption: env_keep+=SSH_AUTH_SOCK
$ ldapadd -x -W -h localhost -D 'cn=admin,dc=ldap,dc=exa...
また,
/usr/share/doc/sudo-1.7.2p1/sudoers2ldif
という変換スクリプトもある.
$ export SUDOERS_BASE=ou=SUDOers,dc=ldap,dc=example,dc=jp
$ sudo cat /etc/sudoers |perl /usr/share/doc/sudo-1.7.2p...
で,sudo.ldif の必要な所だけ切り取って LDAP サーバに登録
$ ldapadd -x -W -h localhost -D 'cn=admin,dc=ldap,dc=exa...
//=======================================================...
*登録情報の検索 [#vf6784ff]
一覧の表示
ldapsearch -h localhost -x -b 'dc=ldap,dc=example,dc=jp'...
soka ユーザが自分の情報を検索(パスワードフィールドも見える)
ldapsearch -h localhost -x -W -b 'dc=ldap,dc=example,dc=...
-D "uid=soka,ou=People,dc=ldap,dc=example,dc=jp" uid=soka
//=======================================================...
*登録情報の変更 [#nae5a28c]
登録情報の変更には,ldapmodify コマンドを使う.
% echo 'dn: uid=soka,ou=People,dc=ldap,dc=example,dc=co...
>changetype: modify
>replace: loginShell
>loginShell: /bin/zsh
>' | ldapmodify -x -W \
-D 'uid=soka,ou=People,dc=ldap,dc=example,dc=co,dc=jp'
Enter LDAP Password:
modifying entry "uid=soka,ou=People,dc=ldap,dc=example,...
上記の例は,ユーザが自分のログインシェルを変更している例...
(chfn や chsh は LDAP に使えないので,
直接 LDAP の情報を変更しないといけない.)
標準入力から ldapmodify にデータを渡しているが,
LDIF ファイルにデータを書き込んでおいて,
-f オプションで指定してもいい.
また,一度に複数のデータを書き換える場合は,
データを "-" で区切って以下のようにする.
dn: uid=soka,ou=People,dc=ldap,dc=example,dc=co,dc=jp
changetype: modify
replace: loginShell
loginShell: /bin/zsh
-
replace: gecos
gecos: hogehogera
ちなみに,changetype として指定できるのは以下のもの.
-replace
-add
-delete
//=======================================================...
*登録情報の変更 [#a54b2c58]
アカウントを削除するときは, ldapdelete を使って,
LDAP の情報から対応するものを削除する.
% ldapdelete -x \
-W -D 'cn=admin,dc=ldap,dc=example,dc=co,dc=jp' \
'uid=soka,ou=People,dc=ldap,dc=example,dc=co,dc=jp'
当然,このあと,ホームディレクトリや mail スプールなどを
削除する必要がある.
//=======================================================...
*SASL の利用 [#vc1e430b]
**アプリケーション追加 [#o6eac564]
# apt-get install sasl2-bin libsasl2-modules
**saslauthd の設定 [#k173e7ee]
/etc/default/saslauthd を編集
以下の行がコメントアウトされているので,アンコメント.
START=yes
以下の行を編集(sasldb を追加する)
MECHANISMS="pam sasldb"
**認証データベースの設定 [#k6517080]
# cat > /usr/lib/sasl2/slapd.conf
pwcheck_method: sasldb
^D
# saslpasswd2 -c -a slapd -u ldap.example.co.jp soka
Password:
Again (for verification):
# sasldblistusers2
soka@ldap.example.co.jp: userPassword
**slapd の設定変更 [#ace2ca06]
/etc/ldap/slapd.conf に以下を追加
sasl-realm ldap.example.co.jp
sasl-regexp
uid=(.*),cn=.*
uid=$1,ou=People,dc=ldap,dc=example,dc=co,dc=jp
**SASL をサポートしているかを確認 [#n0069619]
$ ldapsearch -x -b '' -s base '(objectclass=*)' supporte...
# extended LDIF
#
# LDAPv3
# base <> with scope base
# filter: (objectclass=*)
# requesting: supportedSASLMechanisms
#
#
dn:
supportedSASLMechanisms: NTLM
supportedSASLMechanisms: DIGEST-MD5
supportedSASLMechanisms: CRAM-MD5
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
**SASL を利用して LDAP を検索 [#l0dd57c8]
# ldapsearch -U soka -b 'dc=ldap,dc=example,dc=co,dc=jp' \
'(objectclass=*)'
これがうまくいけば,Mac にてクリアテキストパスワードの使...
認証がうまくいく.
**プレインテキストパスワード認証を抑制する [#c280742b]
プレインテキストパスワードでの認証(Simple Bind)を抑制する...
/etc/ldap/slapd.conf の先頭辺りに
disallow bind_simple
と書いておく.
//=======================================================...
*GUI でのデータ閲覧 [#c53b3bee]
GQ を使えば,GUI にて LDAP のデータ操作ができる.
(Debian にはパッケージがある.要 GTK+)
&ref(gq.png);
//=======================================================...
*LDAP クライアントとしての設定 [#xed62f83]
**PAM [#f72e0e70]
ユーザ認証,承認のために PAM を使用するので,
LDAP 認証用の PAM モジュール pam_ldap の設定と,
そのモジュールを各プログラムで使用するように設定を行う.
/etc/pam.d/common-account
account [success=1 default=ignore] pam_unix.so
account required pam_ldap.so
account required pam_permit.so
/etc/pam.d/common-auth
auth [success=1 default=ignore] pam_unix.so
auth required pam_ldap.so use_first_pass
auth required pam_permit.so
/etc/pam.d/common-password
password sufficient /lib/security/pam_ldap.so
password required pam_unix.so nullok obscure min=4 m...
/etc/pam_ldap.conf
host 127.0.0.1
base dc=ldap,dc=example,dc=co,dc=jp
ldap_version 3
rootbinddn cn=admin,dc=ldap,dc=example,dc=co,dc=jp
pam_password crypt
ssl on
tls_checkpeer no
/etc/libnss-ldap.conf
host 127.0.0.1
base dc=ldap,dc=example,dc=co,dc=jp
ldap_version 3
ssl on
tls_checkpeer no
/etc/ldap.secret (<--chmod 600 しておく)
rootdn のパスワード
**OpenLDAP サーバを LDAP クライアントとして設定する場合 [...
nsswitch.conf に
passwd: files ldap
shadow: files ldap
group: files ldap
といったエントリがあると,サーバ起動時のデーモン起動順に...
ldap の名前解決待ちが延々と続くことがある.
その場合,/etc/ldap.conf(これは nss_ldap の設定.OpenLDAP...
bind_policy soft
を指定しておいてやるとよい.
//=======================================================...
*データマイグレーション [#h93142da]
現行ファイル(/etc/hosts など)から LDAP へのデータ移行には,
PADL で提供されている
[[PADL Migration Tools:http://www.padl.com/OSS/MigrationT...
が使える.
ページ名: