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 件のコメント:
コメントを投稿