OpenLDAP

提供: Blanc de Zinc Wiki
2015年5月12日 (火) 14:54時点におけるZinc (トーク | 投稿記録)による版 (ページの作成:「主にCentOSでの構成について記述。 ==CentOS 6での導入・基本設定== ===yumでインストール=== # yum install openldap-servers openldap-clients ==...」)

(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

主にCentOSでの構成について記述。

CentOS 6での導入・基本設定

yumでインストール

# yum install openldap-servers openldap-clients

BDBの設定ファイル作成

ここではOpenLDAPと一緒に導入された設定例をコピー

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap:ldap /var/lib/ldap/DB_CONFIG

slapd起動

# service slapd start

RootDNのパスワード作成

# slappasswd

cn=configのパスワード設定

LDIFファイルは適当な場所・ファイル名で作成

# vi rootdnpw.ldif

rootdnpw.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}********
# ldapadd -Y EXTERNAL -H ldapi:/// -f rootdnpw.ldif

データベースのRootDN, Suffix, ACLの設定

LDIFファイルは適当な場所・ファイル名で作成

# vi init.ldif

init.ldif

# replace to your own domain name for "dc=example,dc=jp" section
# specify the password generated above for "olcRootPW" section

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=jp" read by * none

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=jp

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=jp

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}********

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=jp" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=jp" write by * read
# ldapmodify -Y EXTERNAL -H ldapi:/// -f init.ldif

CentOS 6でのその他の設定

Sambaスキーマファイルの組み込み

OpenLDAPでNTハッシュを扱うために利用するスキーマ

# ldapadd -Y EXTERNAL -H ldapi:/// -f samba.schema.ldif

samba.schema.ldifはsamba.schemaをLDIFに変換したもの。 変換方法については後述。

モジュールの組み込み

例ではsmbk5pwdを組み込んでいる。

# vi modules.ldif

modules.ldif

dn: cn=Module,cn=config
objectClass: olcModuleList
objectClass: olcConfig
objectClass: top
cn: Module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}smbk5pwd.la
# ldapadd -Y EXTERNAL -H ldapi:/// -f modules.ldif

NTハッシュ等の同期用のオーバレイ設定

smbk5pwdを利用することで、UserPasswordの更新時にsambaNTpassword等も併せて更新できる。 パスワードを同期するためにはEXOP(ldap EXtended OPeration, RFC3062)を利用する必要がある。 ldappasswdコマンドの他、Linuxのpasswdコマンドもpam_ldapの設定を適切に行うことでEXOPが利用される。

# vi smbk5pwd.ldif
#smbk5pwd for primary db
dn: olcOverlay=smbk5pwd,olcDatabase={2}bdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSmbK5PwdConfig
olcOverlay: smbk5pwd
olcSmbK5PwdEnable: samba
# ldapadd -Y EXTERNAL -H ldapi:/// -f smbk5pwd.ldif

スキーマファイルのLDIFファイルへの変換

cn=config形式でスキーマを追加する場合、スキーマのLDIFファイルを用意する必要がある。 slaptestコマンドを利用してスキーマファイルをLDIFファイルに変換する。

ダミーの設定ファイルを作成

例ではsamba.schemaが目的のスキーマファイル。 その他はデフォルトで読み込まれているスキーマ。

# vi dummy.conf

dummy.conf

include /path/to/makesambaldif/corba.schema
include /path/to/core.schema
include /path/to/cosine.schema
include /path/to/duaconf.schema
include /path/to/dyngroup.schema
include /path/to/inetorgperson.schema
include /path/to/java.schema
include /path/to/misc.schema
include /path/to/nis.schema
include /path/to/openldap.schema
include /path/to/ppolicy.schema
include /path/to/collective.schema
include /path/to/samba.schema

LDIFファイルが書き出されるディレクトリの作成

# mkdir dummydir

slaptestコマンドの実行

# slaptest -f dummy.conf -F dummydir

この例ではdummydir/cn=config/cn=schema/cn={12}samba.ldifにスキーマのLDIFファイルが書き出される。

LDIFファイルの編集

書き出されたLDIFファイルはダミーの設定ファイルの環境固有のID等も併せて記述されているので、他の環境で読み込むためにはこれを編集する必要がある。

# vi dummydir/cn=config/cn=schema/cn={12}samba.ldif

打消し線部分は削除し、下線部分を追記する。 cn={12}samba.ldif(抜粋)

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 4f939ecf
dn: cn={12}samba
dn: cn=samba,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {12}samba
cn: samba
olcAttributeTypes: {0}( 1.3.6.1.4.1.7165.2.1.24 NAME 'sambaLMPassword' DESC 'L
 anManager Password' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.1
 21.1.26{32} SINGLE-VALUE )

(中略)

olcObjectClasses: {11}( 1.3.6.1.4.1.7165.2.2.16 NAME 'sambaTrustedDomain' DESC
 'Samba Trusted Domain Object' SUP top STRUCTURAL MUST cn MAY ( sambaTrustTyp
 e $ sambaTrustAttributes $ sambaTrustDirection $ sambaTrustPartner $ sambaFla
 tName $ sambaTrustAuthOutgoing $ sambaTrustAuthIncoming $ sambaSecurityIdenti
 fier $ sambaTrustForestTrustInfo ) )
structuralObjectClass: olcSchemaConfig
entryUUID: 222e2e9c-7e64-1034-89dd-03986441f44c
creatorsName: cn=config
createTimestamp: 20150424002519Z
entryCSN: 20150424002519.914319Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20150424002519Z</nowiki>