[Linux] Rocky Linux 8 のKerberos認証設定(ドメイン参加無し)

Linux

はじめに

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サーバ構成OSWindows Server 2019(評価版)
ホスト名win2019-01
ドメイン名ad.right8se.blog
IPアドレス192.168.0.10
Linuxサーバ構成OSRocky Linux release 8.7
ホスト名rocky8-01
IPアドレス192.168.0.150

今回、CentOS環境に作成するユーザーは下記の通りです。以前にActive Directoryで作成したドメインユーザを使用します。

ユーザー名
(ドメインユーザー)
UIDGIDコメント
s23003123003123003yuuzi_miyake
s23004123004123004touya_sikata
p23007523007523007sai_nanao
p23008523008523008raito_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インストールも試したことがありません。

タイトルとURLをコピーしました