OpenLDAP構築 まとめ

投稿者: | 2017年12月14日

OpenLDAPサーバ、OpenLDAPクライアントの構築まとめ。この順番に実行していけば構築はOKだろう。

1.OpenLDAPサーバの構築① -インストール

■yumコマンドでldap関連パッケージのインストール

[root@ldapserver ~]# yum install openldap-servers openldap-clients openssh-ldap sssd sssd-client sssd-ldap oddjob-mkhomedir

■firewalldサービスでldapプロトコルの解放

[root@ldapserver ~]# systemctl start firewalld
[root@ldapserver ~]# systemctl enable firewalld
[root@ldapserver ~]# systemctl status firewalld        ->  firewalldが起動されていることを確認
[root@ldapserver ~]# firewall-cmd --list-all
[root@ldapserver ~]# firewall-cmd --add-service=ldap --permanent
[root@ldapserver ~]# firewall-cmd --reload
[root@ldapserver ~]# firewall-cmd --list-all        ->  ldapが解放されていることを確認

■slapdサービスの起動・有効化

[root@ldapserver ~]# systemctl start slapd
[root@ldapserver ~]# systemctl enable slapd
[root@ldapserver ~]# systemctl status slapd        ->  slapdが起動されていることを確認

 

 

2.OpenLDAPサーバの構築② -管理者パスワードの設定

■DBコンフィグのコピー

[root@ldapserver ~]# cp -p /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@ldapserver ~]# ls -l /var/lib/ldap/DB_CONFIG

■管理者パスワードの設定

[root@ldapserver ~]# mkdir /root/ldif
[root@ldapserver ~]# ls -lrt /root
[root@ldapserver ldif]# slappasswd
New password:
Re-enter new password:
{SSHA}G+ZkXh6X/sf0K7roTRVj1zZzyFqSuAa6        ->  テキスト等に控える

[root@ldapserver ~]# vi /root/ldif/rootPW.ldif    ->  ファイル名は任意。以下の内容を記述する。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}G+ZkXh6X/sf0K7roTRVj1zZzyFqSuAa6        ->  slappasswdコマンド実行結果を記載する。

[root@ldapserver ~]# ldapadd -Y EXTERNAL -H ldapi:// -f /root/ldif/rootPW.ldif

 

 

3.OpenLDAPサーバの構築③ -ベースDN(dc)/管理者DN(cn)の設定

■ベースDNと管理者DNの設定

[root@ldapserver ~]#  vi /root/ldif/change-domain.ldif    ->  ファイル名は任意。以下の内容を記述する。
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=abc,dc=def,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=abc,dc=def,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=abc,dc=def,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}G+ZkXh6X/sf0K7roTRVj1zZzyFqSuAa6        ->  slappasswdコマンド実行結果を記載する。

[root@ldapserver ~]# ldapmodify -x -D cn=config -w manager -f /root/ldif/change-domain.ldif

■設定が反映されたか確認

[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={1}monitor,cn=config'
[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={2}hdb,cn=config'

 

 

4.OpenLDAPサーバの構築④ -オブジェクトクラス(objectClass)/組織(ou)/グループの設定

■ベースDN/組織(ou)に対して、オブジェクトクラスと属性の設定

[root@ldapserver ~]#  vi /root/ldif/base_ou.ldif    ->  ファイル名は任意。以下の内容を記述する。
dn: dc=abc,dc=def,dc=com
objectClass: dcObject
objectClass: organization
dc: abc
o: AbcDef Inc.

dn: ou=People,dc=abc,dc=def,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=abc,dc=def,dc=com
objectClass: organizationalUnit
ou: Group

[root@ldapserver ~]# ldapadd -x -D "cn=Manager,dc=abc,dc=def,dc=com" -w manager -f /root/ldif/base_ou.ldif

■設定が反映されたか確認

[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'dc=abc,dc=def,dc=com' '(objectClass=*)'

■スキーマの追加

[root@ldapserver ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
[root@ldapserver ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif

■グループ(cn)の設定

[root@ldapserver ~]# vi /root/ldif/groupadd.ldif    ->  ファイル名は任意。以下の内容を記述する。
dn: cn=ldapmanager,ou=Group,dc=abc,dc=def,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapmanager
gidNumber: 1001

[root@ldapserver ~]# ldapadd -x -D "cn=Manager,dc=abc,dc=def,dc=com" -w manager -f /root/ldif/groupadd.ldif

■設定が反映されたか確認

[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'dc=abc,dc=def,dc=com' 'cn=ldapmanager'

 

 

5.OpenLDAPサーバの構築⑤ -LDAPユーザの設定

■ユーザの設定

[root@ldapserver ~]# slappasswd -s ldapuser01    ->  「ldapuser01」はユーザに設定したいパスワード(任意)
{SSHA}p5saJY4uU3cIv1QcdAs6Uy9FNFnb4Vjj
[root@ldapserver ~]# vi /root/ldif/useradd.ldif    ->  ファイル名は任意。以下の内容を記述する。
dn: uid=user01,cn=ldapmanager,ou=Group,dc=abc,dc=def,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
gecos: ldapsystem manager
cn: user01
uid: user01
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user01
loginShell: /bin/bash
userPassword: {SSHA}p5saJY4uU3cIv1QcdAs6Uy9FNFnb4Vjj

[root@ldapserver ~]# ldapadd -x -D "cn=Manager,dc=abc,dc=def,dc=com" -w manager -f /root/ldif/useradd.ldif

■設定が反映されたか確認

[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'dc=abc,dc=def,dc=com' 'uid=user01'

 

 

6.OpenLDAPサーバの構築⑥ -LDAPユーザにssh鍵認証設定

■オブジェクトクラス「ldapPublicKey」のスキーマ登録

[root@ldapserver ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /usr/share/doc/openssh-ldap-7.4p1/openssh-lpk-openldap.ldif
[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'cn=config' '(objectClass=olcSchemaConfig)'

■ssh公開鍵/秘密鍵の生成
・teratermでssh公開鍵/秘密鍵の生成方法
①Windowsのteratermを起動し、初めに表示される「Tera Term: 新しい接続」画面を×かキャンセルをクリックして閉じる。

②メニューの「設定」⇒「SSH鍵生成」の順にクリックする。

③「TTSSH: 鍵生成」画面で、鍵の種類を選択し「生成」をクリックする。RSAが一般的だが、ここではアルゴリズムの計算量が少なくて強度のある「ED25519」を選択する。

④「鍵のパスフレーズ」「パスフレーズの確認」「コメント」を入力して、「公開鍵の保存」をクリックする。

⑤続けて「秘密鍵の保存」をクリックする。

・ssh-keygenコマンドでssh公開鍵/秘密鍵の生成方法

[root@ldapserver ~]# ssh-keygen -t ed25519 -f /tmp/id_ed25519 -N "sshmanager"
[root@ldapserver ~]# ls -lrt /tmp        ->  ssh公開鍵/秘密鍵が生成されたことを確認

■ldapユーザにssh鍵認証設定

[root@ldapserver ~]# cat /tmp/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP4UEX07INso0fBtT+Rt7HLHuvxOCx/CPAPh5K4j9Cf0        ->  この内容を控えておく。
[root@ldapserver ~]# vi /root/ldif/usermod.ldif
dn: uid=user01,cn=ldapmanager,ou=Group,dc=abc,dc=def,dc=com
changetype: modify
add: objectClass
objectClass: ldapPublicKey
-
add: sshPublicKey
sshPublicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP4UEX07INso0fBtT+Rt7HLHuvxOCx/CPAPh5K4j9Cf0        ->  id_ed25519.pubの内容を記載する。

[root@ldapserver ~]# ldapadd -x -D "cn=Manager,dc=abc,dc=def,dc=com" -w manager -f /root/ldif/usermod.ldif

■設定が反映されたか確認

[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'dc=abc,dc=def,dc=com' 'uid=user01'

 

 

7.OpenLDAPサーバの構築⑦ -LDAPユーザをlinuxユーザとして認識させる

■sssdコンフィグファイルの作成

[root@ldapserver ~]# vi /etc/sssd/sssd.conf        ->  以下の内容を記述する。
[sssd]
debug_level = 0
config_file_version = 2
services = nss, sudo, pam, ssh
domains = default

[domain/default]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
sudo_provider = ldap
ldap_uri = ldap://192.168.3.6                ->  ldap://<ldapサーバのIPアドレス>を記述
ldap_search_base = dc=abc,dc=def,dc=com    ->  3.OpenLDAPサーバの構築③  -ベースDN(dc)/管理者DN(cn)の設定で設定したベースDN
ldap_id_use_start_tls = False
ldap_search_timeout = 3
ldap_network_timeout = 3
ldap_opt_timeout = 3
ldap_enumeration_search_timeout = 60
ldap_enumeration_refresh_timeout = 300
ldap_connection_expire_timeout = 600
ldap_sudo_smart_refresh_interval = 600
ldap_sudo_full_refresh_interval = 10800
entry_cache_timeout = 1200
cache_credentials = True
ldap_tls_reqcert = never

[nss]
homedir_substring = /home
entry_negative_timeout = 20
entry_cache_nowait_percentage = 50

[pam]

[sudo]

[autofs]

[ssh]

[pac]

[root@ldapserver ~]# chmod 600 /etc/sssd/sssd.conf
[root@ldapserver ~]# chown root:root /etc/sssd/sssd.conf
[root@ldapserver ~]# ls -l /etc/sssd        ->  アクセス権限が変更されたことを確認する。

■sssd/oddjobd認証リソースの有効化・ldap認証リソースの無効化

[root@ldapserver ~]# authconfig --enablesssd --enablesssdauth --enablelocauthorize --disableldap --disableldapauth --disableldaptls --enablemkhomedir --update

■sssdデーモンの起動

[root@ldapserver ~]# systemctl start sssd

■idコマンドでldapユーザの存在を確認

[root@ldapserver ~]# id user01

■ホームディレクトリをldapユーザでログイン(またはsuコマンドでユーザ切り替え)した時に自動で作成されるように設定

[root@ldapserver ~]# systemctl start oddjobd
[root@ldapserver ~]# systemctl enable oddjobd
[root@ldapserver ~]# systemctl status oddjobd
[root@ldapserver ~]# su user01
[user01@ldapserver root]$ ls /home        ->  ldapユーザのほーディレクトリが作成されたことを確認する。

 

 

8.OpenLDAPサーバの構築⑧ -ssh公開鍵をldapユーザのホームディレクトリに配置

■sshdコンフィグの設定

[root@ldapserver ~]# vi /etc/ssh/sshd_config
#HostKey /etc/ssh/ssh_host_rsa_key      ->  コメントアウトする。デフォルトは有効になっている。
#HostKey /etc/ssh/ssh_host_ecdsa_key    ->  コメントアウトする。デフォルトは有効になっている。
HostKey /etc/ssh/ssh_host_ed25519_key
                :
PubkeyAuthentication yes      ->  コメントアウトを外して有効にする。
PubkeyAcceptedKeyTypes ssh-ed25519      ->  新規に追加する。
AuthorizedKeysFile      .ssh/authorized_keys    ->  デフォルトのまま
                :
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys    -> コメントアウトを外して、赤字の内容に修正する。
AuthorizedKeysCommandUser root    -> コメントアウトを外して、赤字の内容に修正する。
                :

[root@ldapserver ~]# systemctl restart sshd

 

 

■.sshディレクトリの作成及び、ssh公開鍵の格納

[root@ldapserver ~]# su user01
[user01@ldapserver root]$ cd /home/user01
[user01@ldapserver ~]$ mkdir .ssh
[user01@ldapserver ~]$ chmod 700 .ssh        ->  アクセス権限を変更する。
[user01@ldapserver ~]$ ls -lart
◎ssh公開鍵を.ssh配下に格納◎
[user01@ldapserver ~]$ cd /home/user01/.ssh
[user01@ldapserver .ssh]$ ls -lrt
[user01@ldapserver .ssh]$ mv id_ed25519.pub authorized_keys        ->  公開鍵を「authorized_keys」というファイル名に変更
[user01@ldapserver .ssh]$ ls -l /home/user01/.ssh
[user01@ldapserver .ssh]$ exit
[root@ldapserver ~]# chmod 600 /home/user01/.ssh/authorized_keys        ->  アクセス権限を変更する。
[root@ldapserver ~]# ls -lart /home/user01/.ssh

 

 

9.OpenLDAPクライアントの構築

■ldapクライアントでも、sssd関連パッケージのインストール

[root@ldapclient ~]# yum install openldap-clients sssd sssd-client sssd-ldap oddjob-mkhomedir
[root@ldapclient ~]# vi /etc/sssd/sssd.conf        ->  以下の内容を記述する。
[sssd]
debug_level = 0
config_file_version = 2
services = nss, sudo, pam, ssh
domains = default

[domain/default]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
sudo_provider = ldap
ldap_uri = ldap://192.168.3.6                ->  ldap://<ldapサーバのIPアドレス>を記述
ldap_search_base = dc=abc,dc=def,dc=com    ->  3.OpenLDAPサーバの構築③  -ベースDN(dc)/管理者DN(cn)の設定で設定したベースDN
ldap_id_use_start_tls = False
ldap_search_timeout = 3
ldap_network_timeout = 3
ldap_opt_timeout = 3
ldap_enumeration_search_timeout = 60
ldap_enumeration_refresh_timeout = 300
ldap_connection_expire_timeout = 600
ldap_sudo_smart_refresh_interval = 600
ldap_sudo_full_refresh_interval = 10800
entry_cache_timeout = 1200
cache_credentials = True
ldap_tls_reqcert = never

[nss]
homedir_substring = /home
entry_negative_timeout = 20
entry_cache_nowait_percentage = 50

[pam]

[sudo]

[autofs]

[ssh]

[pac]

[root@ldapclient ~]# chmod 600 /etc/sssd/sssd.conf
[root@ldapclient ~]# chown root:root /etc/sssd/sssd.conf
[root@ldapclient ~]# ls -l /etc/sssd        ->  アクセス権限が変更されたことを確認する。

■ldapクライアントでも、sssd/oddjobd認証リソースの有効化・ldap認証リソースの無効化

[root@ldapclient ~]# authconfig --enablesssd --enablesssdauth --enablelocauthorize --disableldap --disableldapauth --disableldaptls --enablemkhomedir --update

■ldapクライアントでも、sssdデーモンの起動

[root@ldapclient ~]# systemctl start sssd
[root@ldapclient ~]# systemctl enable sssd
[root@ldapclient ~]# systemctl status sssd

■ldapクライアントでもidコマンドでldapユーザの存在を確認

[root@ldapclient ~]# id user01

■ldapクライアントでも、ホームディレクトリをldapユーザでログイン(またはsuコマンドでユーザ切り替え)した時に自動で作成されるように設定

[root@ldapclient ~]# systemctl start oddjobd
[root@ldapclient ~]# systemctl enable oddjobd
[root@ldapclient ~]# systemctl status oddjobd

■ldapクライアントでもsshdコンフィグの設定

[root@ldapclient ~]# vi /etc/ssh/sshd_config
#HostKey /etc/ssh/ssh_host_rsa_key      ->  コメントアウトする。デフォルトは有効になっている。
#HostKey /etc/ssh/ssh_host_ecdsa_key    ->  コメントアウトする。デフォルトは有効になっている。
HostKey /etc/ssh/ssh_host_ed25519_key
                :
PubkeyAuthentication yes      ->  コメントアウトを外して有効にする。
PubkeyAcceptedKeyTypes ssh-ed25519      ->  新規に追加する。
                :
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys    -> コメントアウトを外して、赤字の内容に修正する。
AuthorizedKeysCommandUser root    -> コメントアウトを外して、赤字の内容に修正する。
                :
[root@ldapclient ~]# systemctl restart sshd

[root@ldapclient ~]# su user01
[user01@ldapclient root]$ ls /home        -> ldapユーザのホームディレクトリが作成されたことを確認する。

 

 

10.LDAPユーザでsshログイン

■/etc/sudoersの設定

・ldapサーバ
[root@ldapserver ~]# visudo
                :
                :
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
%ldapmanager    ALL=(ALL)       ALL              ->  この行を追加する。
                :
・ldapクライアント
[root@ldapclient ~]# visudo
                :
                :
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
%ldapmanager    ALL=(ALL)       ALL              ->  この行を追加する。
                :

■teratermからsshログイン
①Windows端末のteratermを起動し、「Tera Term: 新しい接続」画面でホストにIPアドレスを入力し、OKをクリックする。

②「SSH認証」画面が出てきたら、以下の入力を行い「OK」をクリックする。

・「ユーザ名」は5.OpenLDAPサーバの構築⑤ -LDAPユーザの設定の「■ユーザの設定」で設定したuid属性の文字列を入力
・「パスフレーズ」は6.OpenLDAPサーバの構築⑥ -LDAPユーザにssh鍵認証設定の「■ssh公開鍵/秘密鍵の生成」で設定したパスフレーズを入力
・id_ed25519ファイルは6.OpenLDAPサーバの構築⑥ -LDAPユーザにssh鍵認証設定の「>■ssh公開鍵/秘密鍵の生成」で生成されたid_ed25519ファイル

↓↓↓↓↓↓↓↓↓↓↓

OpenLDAP構築 まとめ」への1件のフィードバック

  1. アバターnakatoi

    オプションの説明まで丁寧に記載いただきありがとうございます。
    おかげさまで最後まで構築できました。

    返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA