CentOS7 LDAP認証
Table of Contents
概要
OpenLDAPをインストールしたDD_WRTサーバにLDAPにユーザ情報を登録し、CentOS7(別サーバ) のユーザ認証を LDAP認証とする設定方法について。
非常に苦労したのだが、結論としては authconfig-tuiとsssdの設定を行うだけ であった。
(補足)sssdがRHELに導入されたのはRHEL6からである。 それ以前は、ネームサービスとして nslcd (Name Service LDAP Connection Daemon) を使用し、 キャッシュの為に nscd (Name Service Cache Daemon) を使用する必要があった。
nslcd + nscd (これがまた名前がややこしい)を使う場合、/etc/nsswitch.conf や /etc/pam.d/system-auth の設定が必要だった。
一方、sssdを使用する場合は、sssd-ldap というパッケージがあり、sssd の設定にて ldap に関係する設定を行えばよい。
インストール済パッケージの確認
sssd,openldap,openldap-clients,sssd-ldap がインストールされていることを確認する
$ sudo yum list installed | grep ldap Repository google-chrome is listed more than once in the configuration Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast openldap.x86_64 2.4.44-21.el7_6 @updates openldap-clients.x86_64 2.4.44-21.el7_6 @updates python-ldap.x86_64 2.4.15-2.el7 @base sssd-ldap.x86_64 1.16.2-13.el7_6.5 @updates
$ sudo yum list installed | grep sssd Repository google-chrome is listed more than once in the configuration python-sssdconfig.noarch 1.16.2-13.el7_6.8 @updates sssd.x86_64 1.16.2-13.el7_6.8 @updates sssd-ad.x86_64 1.16.2-13.el7_6.8 @updates sssd-client.x86_64 1.16.2-13.el7_6.8 @updates sssd-common.x86_64 1.16.2-13.el7_6.8 @updates sssd-common-pac.x86_64 1.16.2-13.el7_6.8 @updates sssd-ipa.x86_64 1.16.2-13.el7_6.8 @updates sssd-krb5.x86_64 1.16.2-13.el7_6.8 @updates sssd-krb5-common.x86_64 1.16.2-13.el7_6.8 @updates sssd-ldap.x86_64 1.16.2-13.el7_6.8 @updates sssd-proxy.x86_64 1.16.2-13.el7_6.8 @updates
sssd が稼働していることを確認する
$ sudo systemctl status sssd ● sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled) Active: active (running) since 日 2019-10-27 17:12:08 JST; 28min ago
authconfig-tui
これを行うことにより、/etc/openldap/ldap.conf が書き換えられている(はず)
上記のように設定しても、下記のように一部は元に戻ってしまう
sssd
sssd.conf の設定例
$ sudo vi /etc/sssd/sssd.conf
[sssd] debug_level = 9 services = nss, pam, autofs, ssh domains = default [domain/default] id_provider = ldap auth_provider = ldap chpass_provider = ldap sudo_provider = ldap ldap_uri = ldap://192.168.1.100/ ldap_search_base = dc=example,dc=com ldap_auth_disable_tls_never_use_in_production = true ldap_id_use_start_tls = False ldap_tls_reqcert = never cache_credentials = True chpass_provider = ldap autofs_provider = ldap ldap_tls_cacertdir = /etc/openldap/cacerts [nss] homedir_substring = /home
sssd サービスのrestart
$ sudo systemctl restart sssd
sssdトラブル事例
startできず
$ sudo systemctl status sssd ● sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since 土 2019-09-21 16:49:27 JST; 7s ago Process: 2274 ExecStart=/usr/sbin/sssd -i ${DEBUG_LOGGER} (code=exited, status=4) Main PID: 2274 (code=exited, status=4) 9月 21 16:49:27 サーバ名 systemd[1]: Starting System Security Services Daemon... 9月 21 16:49:27 サーバ名 systemd[1]: sssd.service: main process exited, code=exited, status=4/NOPERMISSION 9月 21 16:49:27 サーバ名 systemd[1]: Failed to start System Security Services Daemon. 9月 21 16:49:27 サーバ名 systemd[1]: Unit sssd.service entered failed state. 9月 21 16:49:27 サーバ名 systemd[1]: sssd.service failed.
これについては、authconfig-tui で正しく設定すれば start できるようになる
unsupported extended operation
id でLDAPユーザを参照することはできる
$ id wurly uid=1010(wurly) gid=1010(wurly) groups=1010(wurly)
su しようとすると(ログインしようとすると)失敗する
$ su - wurly
/var/log/messages には下記が記録されている
Oct 27 17:05:25 サーバ名 sssd[be[default]]: Could not start TLS encryption. unsupported extended operation Oct 27 17:05:27 サーバ名 su: FAILED SU (to wurly) ユーザ名 on pts/0
ldap_auth_disable_tls_never_use_in_production を true にすれば解決
Oct 27 17:12:25 サーバ名 sssd[be[default]]: LDAP authentication being performed over insecure connection. This should be done for debugging purposes only. Oct 27 17:12:25 サーバ名 sssd[be[default]]: No encryption detected on LDAP connection. Oct 27 17:12:25 サーバ名 su: (to wurly) ユーザ名 on pts/0
その他
古い(試行錯誤していた時の)情報
参考ページ
量が多いので別ページにしました。