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ファイル
↓↓↓↓↓↓↓↓↓↓↓
オプションの説明まで丁寧に記載いただきありがとうございます。
おかげさまで最後まで構築できました。