本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

CentOS8.1の認証にWindowsServer を使う

CentOS 8.1 を Minimum インストールして、これの認証を前回構成した Windows Server 2019 に任せる方法を試してみます。狙っているのは Windows 環境と Linux の環境とで、認証をこの Windows Server に任せて、ユーザー管理を一元化している環境・システムを想定します。

認証だけなら SSSD (System Security Services Daemon) を使ってこちらを使うのが現時点でのオススメのやり方のようです。Samba などファイル共有のことを考えないなら、SSSD ということですね。

CentOS 8.1 のインストール

CentOS 8.1 を最小限のインストールでインストールしておきます。このインストール過程でネットワークが使えるようにも設定しておきます。

ホスト名もまたドメインに登録するために、適切な名前をこの時点で設定しておきます。
この時点でネットワーク有効にしておくことも忘れずに。

後はディスクパーティションを確認して、 root パスワードの設定を行い、システムのインストール完了までを見守ります。インストールが完了したら、とりあえず yum update で最新状態へ更新しておきます。

Samba のインストール

Samba (+winbind) をインストールします。これには以下のコマンドを実行します。

[root@centos8 ~]# dnf install samba samba-winbind samba-winbind-clients oddjob-mkhomedir

設定ファイルである smb.conf を編集します。

[root@centos8 ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.org
[root@centos8 ~]# vi /etc/samba/smb.conf

smb.confにはファイル共有のためのディレクトリ設定を記述しますが、先に認証の設定の方を行います。

ドメインが TECHLABXE.HLOCAL と設定したとして、 smb.conf には以下の記述を行います。
ユーザーが最初にログインしたときにホームディレクトリが作られるようにもしています。

[global]
        realm = TECHLABXE.HLOCAL
        security = ads

        workgroup = TECHLABXE
        template shell = /bin/bash
        template homedir = /home/%U

        winbind enum groups = Yes
        winbind enum users = Yes

        idmap config TECHLABXE:backend = rid
        idmap config TECHLABXE:base_rid = 0
        idmap config TECHLABXE:range = 10000-20000

ここで、backend には rid を使っています。 Windows 側の SID を元にして各Linuxでの UID が振られるようにしており、複数のLinux 環境が入ってきても対応可能としています。Samba サーバー間で UID の不一致という事態を防ぐ役割がこのポイントとなります。

ID マッピングのバックエンドには他の指定も可能で、tdb, ad, autorid などが存在します。

続いて Kerberos の設定をするために、 /etc/krb5.conf ファイルを開き編集します。realm のセクションがコメントアウトされているので、有効化し自分の環境に合わせて書き換えます。以下は今回の krb5.conf の例です。

includedir /etc/krb5.conf.d/

[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 = TECHLABXE.HLOCAL
    default_ccache_name = KEYRING:persistent:%{uid}

[realms]
TECHLABXE.HLOCAL = {
    kdc = techlabxe.hlocal
    admin_server = ws2k19.techlabxe.hlocal
}

[domain_realm]
.techlabxe.hlocal = TECHLABXE.HLOCAL
techlabxe.hlocal = TECHLABXE.HLOCAL

認証プロバイダの変更

以下のコマンドを実行して、認証プロバイダを変更します。

# authselect  select winbind --force
プロファイル "winbind" が設定されました。
以下の nsswitch マップはプロファイルで上書きされます:
- passwd
- group

Make sure that winbind service is configured and enabled. See winbind documentation for more information.

以下のコマンドを実行して、初回ログインの時にディレクトリが作成されるようにしておきます。

# authselect enable-feature with-mkhomedir
# systemctl enable oddjobd.service
# systemctl start oddjobd.service

Active Directory に参加させる

まずは自身のホスト名を正しく引けるように、 /etc/hosts を編集します。(IPアドレスの箇所はCentOSマシンのIPです)

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.xxx.yyy   centos8 centos8.techlabxe.hlocal

そして DNS 設定を Active Directory のサーバーのほうを向くようにします。ここで、IPアドレスの箇所は Windows Serverのものを指定します。また ens33 はネットワークインタフェース名です。各自の環境で読み替えてください。

# nmcli connection modify ens33 ipv4.dns 192.168.xxx.yyy

ドメインに参加させるために以下のコマンドを実行します。
DNS関連でエラーメッセージが出ていますが、コンピュータのドメイン登録が完了しています。

# net ads join -U Administrator
Enter Administrator's password:
No DNS domain configured for centos8. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

Samba を起動させます。ついでに次回起動設定もしておきます。

# systemctl start smb winbind
# systemctl enable smb winbind

ユーザー認証の確認

Windows 側で ActiveDirectory を使ってユーザーを追加しておきます。そのユーザーを用いて、この CentOS8 の環境にログイン出来るかを確かめてみます。

CentOS8 にこのユーザーでログインしてみます。ログインが成功し、初回ログイン時に自身のホームディレクトリが作成されていれば成功です。

このユーザーで、 id コマンドを実行してみると idmap された uid や “domain user”グループに所属していることなどがわかります。

最後に

CentOS 8 を Windows Server 2019 の Active Directory に追加して、ユーザー認証を任せる手順を説明しました。この後は、この環境で Samba によるファイル共有を設定すれば、Windows / Linux 混在環境下でもユーザー管理は Windowsサーバーに一元化できますし、(Linuxでの)ファイル共有時のユーザー情報が狂う、といった点を回避することができます。

なお、検証環境のためセキュリティに甘い点が多々あるので、実運用の時には各所見直すようにしてこのまま使用しないでください。

サーバー構築
すらりんをフォローする
すらりん日記
タイトルとURLをコピーしました