6.OpenLDAPサーバの構築⑥ -LDAPユーザにssh鍵認証設定まで終わって、ssh公開鍵をldapサーバに配置するのだが、事前にしておかなくてはいけない設定がある。
■sssd関連パッケージのインストール
sssdは「System Security Services Daemon」のことで、詳しくはこちら。
昔からnss-pam-ldapd(と、依存パッケージのnslcd,nscd)を用いる方法があったが、sssdはldapサーバ/クライアントの両方に有効なデーモンなので、ここではsssdを用いることにする。機能として、ldapユーザをlinuxユーザとして認識させる、要はid <ユーザ名> や su <ユーザ名>を実行した際に、no such userとかではじかれないように問題なくldapユーザが表示されるようになる。
パッケージはsssd,sssd-client,sssd-ldapをインストールする。
[root@ldapserver ~]# yum install sssd sssd-client sssd-ldap : : ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: 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 : : samba-client-libs x86_64 4.6.2-12.el7_4 updates 4.7 M samba-common noarch 4.6.2-12.el7_4 updates 197 k sssd-ad x86_64 1.15.2-50.el7_4.8 updates 225 k sssd-common x86_64 1.15.2-50.el7_4.8 updates 1.3 M sssd-common-pac x86_64 1.15.2-50.el7_4.8 updates 182 k sssd-ipa x86_64 1.15.2-50.el7_4.8 updates 318 k sssd-krb5 x86_64 1.15.2-50.el7_4.8 updates 159 k sssd-krb5-common x86_64 1.15.2-50.el7_4.8 updates 193 k sssd-proxy x86_64 1.15.2-50.el7_4.8 updates 154 k 依存性関連での更新をします: bind-libs-lite x86_64 32:9.9.4-51.el7_4.1 updates 733 k bind-license noarch 32:9.9.4-51.el7_4.1 updates 84 k トランザクションの要約 ================================================================================ インストール 3 パッケージ (+36 個の依存関係のパッケージ) 更新 ( 2 個の依存関係のパッケージ) 総ダウンロード容量: 12 M Is this ok [y/d/N]: y : : 完了しました!
「完了しました!」と表示されればインストールOK。
※ちなみにOSメディアからはパッケージ不足のためかインストールできなかったので、インターネットが繋がった環境か、ひたすら上記パッケージをどっかから持ってきてインストールするしかない。
■sssdコンフィグファイルの作成
次にsssdコンフィグファイルを作成する。sssdコンフィグファイルは、上記のパッケージをインストールしても作成されないため、手作業で作る必要がある。viコマンドで以下の内容を記述する。※各パラメータの説明は割愛
[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]
上記のファイルを作成したら、sssd.confのアクセス権限を600/root(オーナ):root(グループ)に設定する。
[root@ldapserver ~]# chmod 600 /etc/sssd/sssd.conf [root@ldapserver ~]# chown root:root /etc/sssd/sssd.conf [root@ldapserver ~]# 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となるケースがあるので、必ず実施すること。
■sssd認証リソースの有効化・ldap認証リソースの無効化
次にsssd認証リソースの有効化とldap認証リソースの無効化を行う。認証リソースとはauthconfigで管理している部分で、systemctlコマンドで有効・無効するものとは別物。sssd認証リソースを有効にする代わりに、ldap認証リソースを無効にする。
以下、実行コマンド。このまま打つ。
[root@ldapserver ~]# authconfig --enablesssd --enablesssdauth --enablelocauthorize --disableldap --disableldapauth --disableldaptls --update
■sssdデーモンの起動
仕上げはsssdデーモンの起動と自動起動の有効化。
[root@ldapserver ~]# systemctl start sssd [root@ldapserver ~]# systemctl enable sssd [root@ldapserver ~]# 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 20:19:26 JST; 10s ago Main PID: 1878 (sssd) CGroup: /system.slice/sssd.service tq1878 /usr/sbin/sssd -i -f tq1879 /usr/libexec/sssd/sssd_be --domain default --uid 0 --gid 0 --debug-to-files tq1880 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --debug-to-files tq1881 /usr/libexec/sssd/sssd_sudo --uid 0 --gid 0 --debug-to-files tq1882 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --debug-to-files mq1883 /usr/libexec/sssd/sssd_ssh --uid 0 --gid 0 --debug-to-files : :
「Active」と表示されればOK。もしエラーが出たりしたら、/etc/sssd/sssd.confの内容に誤りや余分な文字などが入っていないか確認するとよい。
■idコマンドでldapユーザの存在を確認
再起動が終わった後、ldapサーバにログインしてidコマンドでldapユーザを表示できるか確認する。
[root@ldapserver ~]# id user01 uid=1001(user01) gid=1001(ldapmanager) groups=1001(ldapmanager)
ldapaddコマンドで追加したldapユーザが、idコマンドで見れる!->通常のlinuxユーザのように。
ただし、/etc/passwdや/etc/groupを参照しても、ldapaddコマンドで追加したユーザはいない。なぜならldapユーザだから! 笑
一応、コマンド実行結果の説明をすると、
uid=1001(user01) : 1001は5.OpenLDAPサーバの構築⑤ -LDAPユーザの設定で設定したldapユーザのuidNumber属性、(user01)はuid属性で設定した値。
gid=1001(ldapmanager) : 1001は4.OpenLDAPサーバの構築④ -オブジェクトクラス(objectClass)/組織(ou)/グループの設定で設定したグループのgidNumber属性、(ldapmanager)はcn属性で設定した値。
groups=1001(ldapmanager) : 1001は4.OpenLDAPサーバの構築④ -オブジェクトクラス(objectClass)/組織(ou)/グループの設定で設定したグループのgidNumber属性、(ldapmanager)はcn属性で設定した値。
■ホームディレクトリをldapユーザでログイン(またはsuコマンドでユーザ切り替え)した時に自動で作成されるように設定
通常のlinuxユーザでssh鍵認証を行う場合、ユーザのホームディレクトリ配下に.sshディレクトリを作成し、さらにその配下に公開鍵を格納する必要がある。通常のlinuxユーザであれば、useraddコマンドを実行し、/home配下に作られるユーザ用ディレクトリに.sshディレクトリと公開鍵を格納すればよいが、ldapユーザの場合ldapaddコマンドでユーザ登録しただけではホームディレクトリは作られない。
そこで、sshログインをldapユーザで実行したときに、ログイン先のサーバに自動的にホームディレクトリを作ってくれるyumパッケージをインストールする。パッケージ名は「oddjob-mkhomedir」で、ldapサーバにインストールする。
[root@ldapserver ~]# yum install oddjob-mkhomedir : : ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: oddjob-mkhomedir x86_64 0.31.5-4.el7 base 38 k 依存性関連でのインストールをします: oddjob x86_64 0.31.5-4.el7 base 69 k psmisc x86_64 22.20-15.el7 base 141 k トランザクションの要約 ================================================================================ インストール 1 パッケージ (+2 個の依存関係のパッケージ) 総ダウンロード容量: 249 k インストール容量: 685 k Is this ok [y/d/N]: y Downloading packages: (1/3): oddjob-0.31.5-4.el7.x86_64.rpm | 69 kB 00:00 (2/3): oddjob-mkhomedir-0.31.5-4.el7.x86_64.rpm | 38 kB 00:00 (3/3): psmisc-22.20-15.el7.x86_64.rpm | 141 kB 00:00 -------------------------------------------------------------------------------- 合計 632 kB/s | 249 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : psmisc-22.20-15.el7.x86_64 1/3 インストール中 : oddjob-0.31.5-4.el7.x86_64 2/3 インストール中 : oddjob-mkhomedir-0.31.5-4.el7.x86_64 3/3 検証中 : psmisc-22.20-15.el7.x86_64 1/3 検証中 : oddjob-0.31.5-4.el7.x86_64 2/3 検証中 : oddjob-mkhomedir-0.31.5-4.el7.x86_64 3/3 インストール: oddjob-mkhomedir.x86_64 0:0.31.5-4.el7 依存性関連をインストールしました: oddjob.x86_64 0:0.31.5-4.el7 psmisc.x86_64 0:22.20-15.el7 完了しました!
OSインストールメディアからインストールする場合は、以下。
※1.OpenLDAPサーバの構築① -インストールと同様に、OSインストールメディアのマウントとリポジトリファイルを変更を事前にしておくこと。
[root@ldapserver ~]# yum --disablerepo=* --enablerepo=centos-media install oddjob-mkhomedir
「完了しました!」と表示されればインストールOK。
次にoddjob-mkhomedirがちゃんと自動でホームディレクトリを作ってくれるように、authconfigコマンドで認証リソースを有効にする。
[root@ldapserver ~]# authconfig --enablemkhomedir --update
oddjobdデーモンの起動と自動起動の有効化も忘れずに。
[root@ldapserver ~]# systemctl start oddjobd [root@ldapserver ~]# systemctl enable oddjobd [root@ldapserver ~]# 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 21:03:29 JST; 22min ago Main PID: 993 (oddjobd) CGroup: /system.slice/oddjobd.service mq993 /usr/sbin/oddjobd -n -p /var/run/oddjobd.pid -t 300 12月 12 21:03:29 ldapserver systemd[1]: Started privileged operations for u.... 12月 12 21:03:29 ldapserver systemd[1]: Starting privileged operations for .... Hint: Some lines were ellipsized, use -l to show in full.
「Active」と表示されればOK。
ここまで終わったら、suコマンドでldapユーザに切り替えてホームディレクトリが作成されるか確認する。
[root@ldapserver ~]# su user01 [user01@ldapserver root]$ ls /home user01
プロンプトもrootからuser01に変わったし、/homeディレクトリ配下にuser01というディレクトリがある!これは5.OpenLDAPサーバの構築⑤ -LDAPユーザの設定でhomeDirectoryという属性に「/home/user01」と記述したから。
これでldapユーザをlinuxユーザとして認識させる設定は完了!