はじめに
Linuxサーバのローカルユーザの認証にActive Directoryを使用するためのKerberos認証設定を行います。前回、RHEL7系のCentOS7でKerberos認証設定を行いましたが、RHEL8系ではpam_krb5パッケージが存在せず設定方法が異なりますので、今回はRocky Linux 8でKerberos認証設定を行います。
なお、今回のRHEL8系Kerberos認証設定は、Red Hat Customer Portalのナレッジをベースにしております。参照する為には、Red Hatのアカウント登録が必要です。※無償です。
[公式]Red Hat Customer Portal ナレッジ
検証環境
検証に使用するADサーバ及び、CentOSは下記の通りです。
ADサーバ構成 | OS | Windows Server 2019(評価版) |
ホスト名 | win2019-01 | |
ドメイン名 | ad.right8se.blog | |
IPアドレス | 192.168.0.10 | |
Linuxサーバ構成 | OS | Rocky Linux release 8.7 |
ホスト名 | rocky8-01 | |
IPアドレス | 192.168.0.150 |
今回、CentOS環境に作成するユーザーは下記の通りです。以前にActive Directoryで作成したドメインユーザを使用します。
ユーザー名 (ドメインユーザー) | UID | GID | コメント |
---|---|---|---|
s23003 | 123003 | 123003 | yuuzi_miyake |
s23004 | 123004 | 123004 | touya_sikata |
p23007 | 523007 | 523007 | sai_nanao |
p23008 | 523008 | 523008 | raito_yagami |
※UID、GIDは、ドメインユーザ名の “s” ⇒ “1”、”p” ⇒ ”5” に読み替えています。
作業内容
sssd及び、krb5パッケージのインストール
(1) Kerberos認証に必要な「sssd」関連パッケージ及び、「krb5-workstation」パッケージをインストールします。
# yum install sssd* krb5-workstation -y
Rocky Linux 8 - AppStream 7.2 kB/s | 4.8 kB 00:00
Rocky Linux 8 - BaseOS 7.8 kB/s | 4.3 kB 00:00
Rocky Linux 8 - Extras 5.8 kB/s | 3.1 kB 00:00
…省略…
インストール済み:
adcli-0.8.2-12.el8.x86_64 avahi-libs-0.7-20.el8.x86_64
bind-libs-32:9.11.36-5.el8_7.2.x86_64 bind-libs-lite-32:9.11.36-5.el8_7.2.x86_64
bind-license-32:9.11.36-5.el8_7.2.noarch bind-utils-32:9.11.36-5.el8_7.2.x86_64
cyrus-sasl-gssapi-2.1.27-6.el8_5.x86_64 fstrm-0.6.1-3.el8.x86_64
geolite2-city-20180605-1.el8.noarch geolite2-country-20180605-1.el8.noarch
krb5-workstation-1.18.2-22.el8_7.x86_64 libipa_hbac-2.7.3-4.el8_7.3.x86_64
libjose-10-2.el8.x86_64 libkadm5-1.18.2-22.el8_7.x86_64
libmaxminddb-1.2.0-10.el8.x86_64 libsmbclient-4.16.4-4.el8_7.x86_64
libsss_simpleifp-2.7.3-4.el8_7.3.x86_64 libwbclient-4.16.4-4.el8_7.x86_64
protobuf-c-1.3.0-6.el8.x86_64 python3-bind-32:9.11.36-5.el8_7.2.noarch
python3-ply-3.9-9.el8.noarch python3-sss-2.7.3-4.el8_7.3.x86_64
python3-sssdconfig-2.7.3-4.el8_7.3.noarch python3-systemd-234-8.el8.x86_64
samba-client-libs-4.16.4-4.el8_7.x86_64 samba-common-4.16.4-4.el8_7.noarch
samba-common-libs-4.16.4-4.el8_7.x86_64 sssd-2.7.3-4.el8_7.3.x86_64
sssd-ad-2.7.3-4.el8_7.3.x86_64 sssd-common-pac-2.7.3-4.el8_7.3.x86_64
sssd-dbus-2.7.3-4.el8_7.3.x86_64 sssd-idp-2.7.3-4.el8_7.3.x86_64
sssd-ipa-2.7.3-4.el8_7.3.x86_64 sssd-krb5-2.7.3-4.el8_7.3.x86_64
sssd-krb5-common-2.7.3-4.el8_7.3.x86_64 sssd-ldap-2.7.3-4.el8_7.3.x86_64
sssd-polkit-rules-2.7.3-4.el8_7.3.x86_64 sssd-proxy-2.7.3-4.el8_7.3.x86_64
sssd-tools-2.7.3-4.el8_7.3.x86_64 sssd-winbind-idmap-2.7.3-4.el8_7.3.x86_64
完了しました!
Kerberos認証設定
(1) Kerberos認証設定前に各種認証設定ファイルをバックアップします。
# cp -p /etc/krb5.conf /etc/krb5.conf.org
# cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.org
# cp -p /etc/pam.d/password-auth /etc/pam.d/password-auth.org
(2) Kerberos認証設定ファイルを編集します。
# vi /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
spake_preauth_groups = edwards25519
# default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
AD.RIGHT8SE.BLOG = {
kdc = win2019-01.ad.right8se.blog
admin_server = win2019-01.ad.right8se.blog
}
[domain_realm]
.ad.right8se.blog = AD.RIGHT8SE.BLOG
ad.right8se.blog = AD.RIGHT8SE.BLOG
(3) Kerberos認証設定ファイルの編集内容を確認します。
# diff /etc/krb5.conf /etc/krb5.conf.org
22,25c22,25
< AD.RIGHT8SE.BLOG = {
< kdc = win2019-01.ad.right8se.blog
< admin_server = win2019-01.ad.right8se.blog
< }
---
> # EXAMPLE.COM = {
> # kdc = kerberos.example.com
> # admin_server = kerberos.example.com
> # }
28,29c28,29
< .ad.right8se.blog = AD.RIGHT8SE.BLOG
< ad.right8se.blog = AD.RIGHT8SE.BLOG
---
> # .example.com = EXAMPLE.COM
> # example.com = EXAMPLE.COM
(4) sssd設定ファイルを新規作成します。
# vi /etc/sssd/sssd.conf
[sssd]
services = nss, pam
domains = AD.RIGHT8SE.BLOG
[domain/AD.RIGHT8SE.BLOG]
id_provider = files
auth_provider = krb5
krb5_realm = AD.RIGHT8SE.BLOG
krb5_server = win2019-01.ad.right8se.blog
krb5_validate = false
debug_level = 0
(5) sssd設定ファイルのパーミッションを設定します。
# chmod 600 /etc/sssd/sssd.conf
# chown root:root /etc/sssd/sssd.conf
# ls -l /etc/sssd/sssd.conf
-rw------- 1 root root 264 3月 1 07:09 /etc/sssd/sssd.conf
(6) pam認証設定ファイルを編集します。
※変更箇所が多い為、初期ファイルから全て書き換えてよいかと思います。
# vi /etc/pam.d/system-auth
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
(7) 別のpam認証設定ファイルにも同様の設定をします。
※初期状態で同一ファイルの為、コピーします。
# cp -p /etc/pam.d/system-auth /etc/pam.d/password-auth
cp: '/etc/pam.d/password-auth' を上書きしますか? y
hostsファイル編集
(1) hostsファイルをバックアップします。
# cp -p /etc/hosts /etc/hosts.`date "+%Y%,%d"`
(2) hostsファイルを編集して、ADサーバのホスト名を登録します。
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.10 win2019-01.ad.right8se.blog
ssshサービスの再起動(設定反映)
(1) sssd.serviceを再起動して、Kerberos認証設定を反映します。
# systemctl restart sssd.service
# systemctl status sssd.service
● sssd.service - System Security Services Daemon
Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-03-01 07:59:15 EST; 6s ago
...省略...
ユーザー・グループ作成
(1) 次のコマンドを実行して、グループを作成します。
# groupadd -g 123003 s23003
# groupadd -g 123004 s23004
# groupadd -g 523007 p23007
# groupadd -g 523008 p23008
(2) 次のコマンドを実行して、ユーザーを作成します。
# useradd -u 123003 -g 123003 -m -G wheel -c "yuuzi_miyake" s23003
# useradd -u 123004 -g 123004 -m -G wheel -c "touya_sikata" s23004
# useradd -u 523007 -g 523007 -m -G wheel -c "sai_nanao" p23007
# useradd -u 523008 -g 523008 -m -G wheel -c "raito_yagami" p23008
(3) 次のコマンドを実行して、ユーザが作成されたことを確認します。
# cat /etc/passwd
…省略…
s23003:x:123003:123003:yuuzi_miyake:/home/s23003:/bin/bash
s23004:x:123004:123004:touya_sikata:/home/s23004:/bin/bash
p23007:x:523007:523007:sai_nanao:/home/p23007:/bin/bash
p23008:x:523008:523008:raito_yagami:/home/p23008:/bin/bash
(4) 次のコマンドを実行して、wheelグループに属していることを確認します。
# grep wheel /etc/group
wheel:x:10:right,s23003,s23004,p23007,p23008
動作確認
(1) ターミナルソフト(TeraTerm等)を使用して、Linuxサーバへドメインユーザでログインを行います。
(2) ドメインユーザでLinuxサーバにログインができます。
(3) 次のコマンドを実行して、ドメインユーザのパスワードを変更します。
※対象ユーザがドメインユーザの為、ドメインユーザのパスワードが変更されます。
$ passwd
ユーザー p23008 のパスワードを変更。
Current password:*********** ←現在のPW
現在のパスワード:*********** ←現在のPW
新しいパスワード:*********** ←新しいPW
新しいパスワードを再入力してください:*********** ←新しいPW
passwd: すべての認証トークンが正しく更新できました。
(4) 次のコマンドを実行して、sudoコマンドが使用できることを確認します。
$ sudo su -
あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:
#1) 他人のプライバシーを尊重すること。
#2) タイプする前に考えること。
#3) 大いなる力には大いなる責任が伴うこと。
[sudo] p23008 のパスワード:*********** ←自身のPW
最終ログイン: 2023/03/01 (水) 08:18:54 EST日時 pts/0
あとがき
RHEL 7系、RHEL 8系 OSでのKerberos認証はこれで以上です。現在最新のOSは、RHEL 9系ですが今回と同様のKerberos認証設定でよいか、まだ確認しておりませんので別の機会に試してみたいと思います。※RHEL 9系は、まだOSインストールも試したことがありません。