8.OpenLDAPサーバの構築⑧ -ssh公開鍵をldapユーザのホームディレクトリに配置までで、ldapサーバの設定は一通り完了。次はldapクライアントの構築。下の図の青色で囲んだサーバに該当する。
ldapクライアントとは、そのサーバに誰かがログインしようとした時に、そのユーザがldapサーバにちゃんと登録されているか問い合わせを行うサーバのことを言う。
ldapクライアント環境要件
設定項目 | 設定内容 | 備考 |
---|---|---|
ホスト名 | ldapclient | |
IPアドレス | 192.168.3.7/24 | 内部環境のためクラスCアドレス |
ゲートウェイ | 192.168.3.1 | |
ネームサーバ | 192.168.3.1 | 自宅のHGWなのでゲートウェイと同じ |
■ldapクライアントでも、sssd関連パッケージのインストール
ldapクライアントを構築する方法はいくつかあるが、ldapクライアントでもsssd関連パッケージをインストールする。
やり方は7.OpenLDAPサーバの構築⑦ -LDAPユーザをlinuxユーザとして認識させるとまったく同じで、パッケージもsssd,sssd-client,sssd-ldap,openldap-clients,oddjob-mkhomedirが必要となる。
[root@ldapclient ~]# yum install sssd sssd-client sssd-ldap openldap-clients oddjob-mkhomedir : : ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: oddjob-mkhomedir x86_64 0.31.5-4.el7 base 38 k openldap-clients x86_64 2.4.44-5.el7 base 188 k sssd x86_64 1.15.2-50.el7_4.8 updates 120 k sssd-client x86_64 1.15.2-50.el7_4.8 updates 187 k sssd-ldap x86_64 1.15.2-50.el7_4.8 updates 227 k : : Importing GPG key 0xF4A80EB5: Userid : "CentOS-7 Key (CentOS 7 Official Signing Key)" Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 Package : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 上記の処理を行います。よろしいでしょうか? [y/N]y -> 途中でこの質問があったら「y」を入力する。 : : 完了しました!
「完了しました!」と表示されればOK。
/etc/sssdというディレクトリが作成されるので、その配下にsssd.confというファイルを以下の内容で作成する、。
[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]
上記のファイルを作成したら、sssd.confのアクセス権限を600/root(オーナ):root(グループ)に設定する。
[root@ldapclient ~]# chmod 600 /etc/sssd/sssd.conf [root@ldapclient ~]# chown root:root /etc/sssd/sssd.conf [root@ldapclient ~]# ls -l /etc/sssd 合計 4 drwx--x--x. 2 sssd sssd 6 12月 6 00:35 conf.d -rw-------. 1 root root 772 12月 12 21:51 sssd.conf
アクセス権限の設定を行わないと、systemctl start sssdコマンドを実行したときにfailedとなるケースがあるので、必ず実施すること。
■ldapクライアントでも、sssd認証リソースの有効化・ldap認証リソースの無効化
次にsssd認証リソースの有効化とldap認証リソースの無効化を行う。認証リソースとはauthconfigで管理している部分で、systemctlコマンドで有効・無効するものとは別物。sssd認証リソースを有効にする代わりに、ldap認証リソースを無効にする。
以下、実行コマンド。このまま打つ。
[root@ldapclient ~]# authconfig --enablesssd --enablesssdauth --enablelocauthorize --disableldap --disableldapauth --disableldaptls --update
■ldapクライアントでも、sssdデーモンの起動
仕上げはsssdデーモンの起動と自動起動の有効化。
[root@ldapclient ~]# systemctl start sssd [root@ldapclient ~]# systemctl enable sssd [root@ldapclient ~]# systemctl status sssd ● sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/sssd.service.d mqjournal.conf Active: active (running) since 火 2017-12-12 21:53:32 JST; 7s ago Main PID: 9372 (sssd) CGroup: /system.slice/sssd.service tq9372 /usr/sbin/sssd -i -f tq9373 /usr/libexec/sssd/sssd_be --domain default --uid 0 --gid 0 ... tq9374 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --debug-to-files... tq9375 /usr/libexec/sssd/sssd_sudo --uid 0 --gid 0 --debug-to-file... tq9376 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --debug-to-files... mq9377 /usr/libexec/sssd/sssd_ssh --uid 0 --gid 0 --debug-to-files... : :
「Active」と表示されればOK。もしエラーが出たりしたら、/etc/sssd/sssd.confの内容に誤りや余分な文字などが入っていないか確認するとよい。
■ldapクライアントでもidコマンドでldapユーザの存在を確認
ここまで設定が終わったら、idコマンドでldapユーザが存在することを確認する。
この確認は大きなポイントとなる。ldapサーバのようにldapaddコマンドでユーザを作ったわけでも、useraddを実行したわけでもないサーバがちゃんとユーザがいることを認識しているかどうかの確認になるからだ。
ldapサーバと同様、id <ldapユーザ名>コマンドを実行してみよう。
[root@ldapclient ~]# id user01 uid=1001(user01) gid=1001(ldapmanager) groups=1001(ldapmanager)
きたーーーーーーー!!
ldapクライアントでもユーザが見れた!!!これはldapクライアントが、ldapサーバにちゃんとユーザがいることを確認しにいった証拠となる。
■ldapクライアントでも、ホームディレクトリをldapユーザでログイン(またはsuコマンドでユーザ切り替え)した時に自動で作成されるように設定
ldapクライアントでも、ldapユーザでsshログインしたときにホームディレクトリを自動で作るように設定する。詳しい説明は7.OpenLDAPサーバの構築⑦ -LDAPユーザをlinuxユーザとして認識させるを参照。
ただ、oddjob-mkhomedirはすでに上記の「■ldapクライアントでも、sssd関連パッケージのインストール」でインストール済みなので、以下のコマンドで認証リソースを有効にする。
[root@ldapclient ~]# authconfig --enablemkhomedir --update
oddjobdデーモンの起動と自動起動の有効化も忘れずに。
[root@ldapclient ~]# systemctl start oddjobd [root@ldapclient ~]# systemctl enable oddjobd [root@ldapclient ~]# systemctl status oddjobd ● oddjobd.service - privileged operations for unprivileged applications Loaded: loaded (/usr/lib/systemd/system/oddjobd.service; enabled; vendor preset: disabled) Active: active (running) since 火 2017-12-12 22:04:08 JST; 21s ago Main PID: 9453 (oddjobd) CGroup: /system.slice/oddjobd.service mq9453 /usr/sbin/oddjobd -n -p /var/run/oddjobd.pid -t 300 12月 12 22:04:08 ldapclient systemd[1]: Started privileged operations for u.... 12月 12 22:04:08 ldapclient systemd[1]: Starting privileged operations for .... Hint: Some lines were ellipsized, use -l to show in full.
「Active」と表示されればOK。
さあ、ここも大きなポイント。suコマンドでldapユーザに切り替えてホームディレクトリが作成されるか確認する。
[root@ldapclient ~]# su user01 [user01@ldapclient root]$ ls /home user01
プロンプトもrootからuser01に変わったし、/homeディレクトリ配下にuser01というディレクトリがある!これは5.OpenLDAPサーバの構築⑤ -LDAPユーザの設定でhomeDirectoryという属性に「/home/user01」と記述したから。
■ldapクライアントでもsshdコンフィグの設定
sshdコンフィグもldapサーバと同様、以下の設定を行う。詳しい説明は7.OpenLDAPサーバの構築⑦ -LDAPユーザをlinuxユーザとして認識させるを参照。
[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 -> コメントアウトを外して、赤字の内容に修正する。 ※他の設定は必要に応じてコメントアウト/コメントアウト外しを行う。
上記変更後、sshdサービスを再起動する。
[root@ldapclient ~]# systemctl restart sshd
これでldapクライアントの構築は完了!