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

投稿者: | 2017年12月9日

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ユーザとして認識させる設定は完了!

コメントを残す

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

CAPTCHA