CentOS7でOpenLDAPを秒速構築

みなさまこんにちは。今回はCentOS7でOpenLdapを秒速構築する手順のご紹介をしていきます。
どのコマンドにはどんな意味がといった内容は極力省いて、最短で構築することを目標とします。
コマンドの意味はググればたくさん紹介しているサイトが見つかると思いますので、そちらをご覧ください。
途中、多少の説明はしています。そうゆう説明すら一切不要!という方は、最後に純粋なコマンド一覧として「まとめ(秒速構築)」用意しましたのでそちらをご覧ください。
(#このブログではCentOS7をベースに記載します。ディストリビューションの違いにより、パッケージ名やバージョン、パスやコマンドに差異が出る場合があります。)

なお、今回の環境では、OS、openldapのバージョンは以下を利用しました。
OS:CentOS Linux release 7.6.1810
LDAP:slapd 2.4.44

CentOS7でOpenLDAPを秒速構築


CentOS7はインストール済みで、root権限を持つユーザでログインしていることを前提とします。先にも記載がありますが、以下は何をやっているかを多少説明しています。「秒速構築」希望の方は最後にあるまとめをご覧ください。




まずはLDAPサーバを起動


以下のコマンドのコピペで、LDAPサーバがインストール&起動します。

# yum -y install openldap-servers openldap-clients
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap. /var/lib/ldap/DB_CONFIG
# systemctl start slapd 
# systemctl enable slapd  

上記実行後、psコマンドあたりでsladpが起動している事を確認しておきましょう。




ldap管理者のパスワードを設定


以下で、ldap管理者のパスワードを設定します。パスワードは後ほど変更もできます。ここで生成したパスワードのハッシュ値(例ではxで値を隠しています)は以後の構築で利用するので控えておきましょう。

# slappasswd 
New password: 
Re-enter new password: 
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx



DN/USER登録用LDIFファイルの作成


DNやUSERを登録するには、LDIF拡張子のファイルの作成が必要となります。後ほど利用するので、予め作成しておきます。

# vi domain.ldif
# vi basedn.ldif
# vi user.ldif

各ファイルの中身の例は以下です。ファイルの中にあるolcRootPW:の右には、先にslappasswdコマンドで出力したldap管理者のパスワードのハッシュ値をそのままコピペしてください。

domain.ldif

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=sample,dc=local

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=sample,dc=local

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx

basedn.ldif

dn: dc=sample,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: test.inc
dc: test

dn: cn=Manager,dc=sample,dc=local
objectClass: organizationalRole
cn: Manager

dn: ou=users,dc=sample,dc=local
objectClass: organizationalUnit
ou: users

user.ldif

dn: uid=user1,ou=users,dc=sample,dc=local
objectClass: account
objectClass: posixAccount
objectClass: top
uid: user1
cn: user1
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user1
loginShell: /bin/bash



スキーマとDN/USER情報のインポート


スキーマは、openldapをインストールすると、/etc/openldap/schema配下に予めある程度のものがLDIFファイル形式で用意されています。
どれをインポートするかはどういった属性をもたせたいかによりますので、ご自身で検討下さい。今回の例では、cosine.ldif、nis.ldif、ineteorgperson.ldifをインポートしています。DNとUSERは先に準備しておいたファイルを指定して読み込ませます。

# ldapadd -Y EXTERNAL -H ldapi:/// -f cosine.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f nis.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f inetorgperson.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f basedn.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f user.ldif

以上で最低限の構築は完了です。
ldapsearchコマンドあたりでユーザ検索すると、登録されたユーザ情報が表示されます。


まとめ(秒速構築)

LDIFファイルは全て用意されている前提です。以下コピペで秒速構築できます。ldapaddldapmodifyで指定しているファイルはご自身のファイル名に適宜置き換えて下さい。

# yum -y install openldap-servers openldap-clients
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap. /var/lib/ldap/DB_CONFIG
# systemctl start slapd 
# systemctl enable slapd  
# slappasswd 
# ldapadd -Y EXTERNAL -H ldapi:/// -f cosine.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f nis.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f inetorgperson.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f basedn.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f user.ldif

最後に、Linuxにご興味がある方向けに、ややマニアックなコマンドのご紹介です。以下から是非ご覧ください。

acコマンド