2022年2月5日土曜日

RHEL 8のSSSDを使ってActive Directoryと認証連携する

RHELではSSSD (System Security Services Daemon) と呼ばれるソフトウェアを使用することで、OpenLDAPやActive Directoryとの認証連携をすることができる。

以前の記事ではOpenLDAPとの認証連携手順を記載したが、今回は、RHEL 8のSSSDを使ってActive Directoryと認証連携する手順を記載する。なお、OpenLDAPとの連携と比較すると、今回のAD連携の手順の方がシンプルとなっている。

環境

OSはRHEL 8.4を選択し、OSのインストールメディアに同梱されているSSSD関連のパッケージをインストールして構成する。

  • OS : RHEL 8.4
  • SSSD : 2.4.0

手順

1. SSSD及びAD連携に必要となるパッケージインストール

SSSD及びAD連携に必要となるパッケージのインストールを行う。

今回はOSのインストールメディアに同梱されているSSSD関連のパッケージをインストールして構成するため、以下記事を参考にインストールメディアからdnfによるパッケージインストールを行った。

# dnf install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation -y
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

レポジトリ 'dvd-BaseOS' idを使用した設定内に見つかりません。
レポジトリ 'dvd-AppStream' idを使用した設定内に見つかりません。
dvd-BaseOS                                       55 MB/s | 2.3 MB     00:00
dvd-AppStream                                    48 MB/s | 6.8 MB     00:00
メタデータの期限切れの最終確認: 0:00:01 時間前の 2021年12月04日 19時30分01秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ             Arch       バージョン           リポジトリー      サイズ
================================================================================
インストール:
 adcli                  x86_64     0.8.2-9.el8          dvd-BaseOS        115 k
 krb5-workstation       x86_64     1.18.2-8.el8         dvd-BaseOS        956 k
 oddjob                 x86_64     0.34.7-1.el8         dvd-AppStream      80 k
 oddjob-mkhomedir       x86_64     0.34.7-1.el8         dvd-AppStream      49 k
 realmd                 x86_64     0.16.3-22.el8        dvd-BaseOS        237 k
 samba-common-tools     x86_64     4.13.3-3.el8         dvd-BaseOS        498 k
 sssd                   x86_64     2.4.0-9.el8          dvd-BaseOS        102 k

~(以下略)~

2. ドメイン参加前の確認

ドメイン参加対象のドメインコントローラをDNSにて検索できる必要があることから、DNSにて名前解決できるよう、予めnmtuiなどを用いてDNS問い合わせ先の設定をしておこう。

ドメインへの参加や確認、離脱をするためにはrealmコマンドを用いる。以下に簡単にrealmコマンドの使用方法を記載する。

コマンド 説明
realm discover [ドメイン名] ドメインの検索を行う。
realm list ドメイン参加済みのドメイン情報を出力する。ドメイン参加後は、realm discover [ドメイン名]と同じ出力内容となる。
realm join -U [認証に用いるユーザ名] [ドメイン名] ドメインへ参加する。-Uオプションを省略した場合はAdministratorが選択される。
realm leave ドメインから離脱する。

ドメイン参加前にrealm discoverコマンドを実行してドメインの情報を確認しておこう。問題なければ以下の通り、type: kerberosで表示されるはずだ。

# realm discover intrat.local
intrat.local
  type: kerberos
  realm-name: INTRAT.LOCAL
  domain-name: intrat.local
  configured: no

3. ドメイン参加

事前確認で問題なければ、realm joinコマンドにてドメイン参加を行う。なお、今回はドメイン参加時に使用するユーザとしてtuser001という名前のユーザを使用している。

# realm join intrat.local -U tuser001
tuser001 に対するパスワード: ←★指定したユーザのパスワードを入力
# ←★特に問題なければプロンプトが返ってくる

確認はrealm listコマンドを用いる。以下のように各種ドメインの情報が表示されれば問題ない。

# realm list
intrat.local
  type: kerberos
  realm-name: INTRAT.LOCAL
  domain-name: intrat.local
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools
  login-formats: %U@intrat.local
  login-policy: allow-realm-logins

なお、ドメイン参加を行うと、Active Directoryの「Computers」のOUにドメイン参加したOSのホスト名でコンピューターアカウントが登録がされる。

なお、コンピューターアカウントのプロパティを確認すると「redhat-linux-gnu」となっていた。

4. sssd.confの修正

realmコマンドでドメイン参加をすると、自動的に必要な情報が記載された/etc/sssd/sssd.confが作成される。

ただし、デフォルトの設定のままドメインユーザにてログインを試みると、/var/log/secureにて4 (System error)のエラーが出力されログインできない場合がある。

# tail -10 /var/log/secure
Dec  4 17:54:00 t1193rhel sshd[10615]: Failed password for invalid user tuser001 from 192.168.11.1 port 59546 ssh2
Dec  4 17:54:05 t1193rhel sshd[10615]: Received disconnect from 192.168.11.1 port 59546:11: authentication cancelled [preauth]
Dec  4 17:54:05 t1193rhel sshd[10615]: Disconnected from invalid user tuser001 192.168.11.1 port 59546 [preauth]
Dec  4 17:54:25 t1193rhel sshd[10617]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.11.1 user=tuser001@intrat.local
Dec  4 17:54:25 t1193rhel sshd[10617]: pam_sss(sshd:account): Access denied for user tuser001@intrat.local: 4 (System error)
Dec  4 17:54:25 t1193rhel sshd[10617]: Failed password for tuser001@intrat.local from 192.168.11.1 port 59548 ssh2
Dec  4 17:54:25 t1193rhel sshd[10617]: fatal: Access denied for user tuser001@intrat.local by PAM account configuration [preauth]
Dec  4 17:54:38 t1193rhel login[1065]: pam_sss(login:auth): authentication success; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost= user=tuser001@intrat.local
Dec  4 17:54:38 t1193rhel login[1065]: pam_sss(login:account): Access denied for user tuser001@intrat.local: 4 (System error)
Dec  4 17:54:38 t1193rhel login[1065]: System error

/var/log/sssd/sssd_[ドメイン名].logを確認すると、GPO-based access control failedのエラーメッセージにてログイン失敗していることがわかる。

# tail -f /var/log/sssd/sssd_intrat.local.log
(2021-12-05 11:04:59): [be[intrat.local]] [ad_gpo_get_som_attrs_done] (0x0040): no attrs found for SOM; try next SOM
(2021-12-05 11:04:59): [be[intrat.local]] [gpo_cse_done] (0x0020): ad_gpo_parse_gpo_child_response failed: [22][無効な引数です]
(2021-12-05 11:04:59): [be[intrat.local]] [ad_gpo_cse_done] (0x0040): Unable to retrieve policy data: [22](無効な引数です}
(2021-12-05 11:04:59): [be[intrat.local]] [ad_gpo_access_done] (0x0040): GPO-based access control failed.
(2021-12-05 11:04:59): [be[intrat.local]] [child_sig_handler] (0x0020): child [11773] failed with status [1].

このような場合は、sssd.confに以下★箇所の設定を追加する。

# echo "ad_gpo_access_control=permissive" >> /etc/sssd/sssd.conf
# cat /etc/sssd/sssd.conf
[sssd]
domains = intrat.local
config_file_version = 2
services = nss, pam

[domain/intrat.local]
~(中略)~
ad_gpo_access_control=permissive ←★追加

# systemctl restart sssd

5. ログイン確認

それでは、実際にTera Termなどで、以下のようにドメインユーザ ([ユーザ名]@[ドメイン名]) にてログインを実施してみよう。



以下の通り問題なくログインできれば、ADとの認証連携は成功となる。

[tuser001@intrat.local@t1193rhel ~]$ pwd
/home/tuser001@intrat.local
[tuser001@intrat.local@t1193rhel ~]$ id
uid=383402117(tuser001@intrat.local) gid=383400512(domain admins@intrat.local) groups=383400512(domain admins@intrat.local),383400519(enterprise admins@intrat.local),383400572(denied rodc password replication group@intrat.local),383402134(vcenter admins@intrat.local)

参考

0 件のコメント:

コメントを投稿

人気の投稿