Active Directory は認証に Kerberos 5 を利用しているため、技術的には UNIX などで構築した汎用の Kerberos レルム (Realm) との相互接続性がある。 これにより、以下のようなことが可能になると考えられる。
以下当方で確認を行った際の具体的な設定手順について解説する。 なお今回は、以下のような環境にて検証を行った。
参考情報などに記載された手順に基づき、 PAM を利用して UNIX ホストにアクセスする際の認証を Active Directory 側で行うことが可能であることを確認した。 以下手順を示す。
Windows 2000 側は、通常どおり Active Directory のドメインコントローラとして構成を行っておく。 テスト用のユーザ (今回は test1 という名前にした) を作成し、このユーザで正常にログオンなどができることを確認しておく。 Kerberos 認証を行うために、 NTP などを利用して時刻を同期しておくことも必要である。 DNS は名前解決を行うためにあると望ましいが必須ではなく、 IP アドレスを直接指定することも可能である。
なお、今回はドメイン名 krb5.com 、ドメインコントローラ (DC) 名は dcmed.krb5.com(172.21.168.29) という環境を構築して確認を行っている。 dcmed は、ルートドメインの DC であり、 DNS サーバでもある。
まずは以下のパッケージのインストールを確認する
更に Red Hat Linux 7.1J の設定によっては、セキュリティ対策のため外部からのアクセスが禁止されている場合があるため、 ipchains コマンドなどを用いて予め設定を確認しておく。 今回の環境では lokkit コマンドを利用して、 LAN 側の NIC を trust した。 trust した NIC 経由の通信についてはパケットフィルタは無効となるため、すべて許可される。
以下、 3, 4, 5 の設定を順不同で行う。
デフォルトのファイルに対して修正を行なった。
以下下線部が修正を行った部分である。
Active Directory の場合、Kerberos のレルム(Realm)名として、ドメイン名が用いられるため、レルムに Active Directory 側のドメイン名を指定している。 また、 DC が kdc として機能するため、 kdc として、 dcmed を指定している。 なお、暗号形式としては des-cbc-md5 を指定する必要がある。
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] ticket_lifetime = 24000 default_realm = KRB5.COM default_tkt_enctypes = des-cbc-md5 default_tgs_enctypes = des-cbc-md5 dns_lookup_realm = false dns_lookup_kdc = false [realms] KRB5.COM = { kdc = dcmed.krb5.com:88 # admin_server = kerberos.example.com:749 default_domain = krb5.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM [kdc] profile = /var/kerberos/krb5kdc/kdc.conf [pam] debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false
下線部が追加を行った部分になる。
これにより、 PAM による認証を行う際に Kerberos 認証が利用されるようになる。
ただし、以下の設定では sufficient や optional の指定を行なっているため、 Kerberos 認証が利用できなかった場合は、その他の方式を用いる設定としている。
なお、 PAM の設定によっては、特定のサービスについてのみ Kerberos 認証を有効とするなど、詳細な設定も可能である。文法の詳細などについては、 pam.conf(8) などを参照してほしい。
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth sufficient /lib/security/pam_krb5.so auth required /lib/security/pam_env.so auth sufficient /lib/security/pam_unix.so likeauth nullok auth required /lib/security/pam_deny.so account required /lib/security/pam_unix.so password required /lib/security/pam_cracklib.so retry=3 password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadow password required /lib/security/pam_deny.so session required /lib/security/pam_limits.so session required /lib/security/pam_unix.so session optional /lib/security/pam_krb5.so
アカウント名は、 Windows 側と同じ (この例ではtest1) とする。 パスワードを設定する必要はなく、単に以下のようにして作成するだけでよい (もちろん GUI などで作成しても構わない)。
#useradd test1
以上で、 Linux 側にテスト用のアカウント (ここでは test1) で telnet や ssh などを用いてログインを行い、パスワードとして Windows 側の Active Directory で設定したものを入力することで、 Linux ホストへのログインが可能となっているはずである。
なお、 Linux 側のインストール方式によっては、 telnet や ssh が起動していない、もしくは起動しているが IP アドレスレベルでアクセスを拒否されている場合などがあるため、事前に Linux 上に存在するアカウントでログインができることを確認しておくとよい。