Active Directory は認証に Kerberos 5 を利用しているため、技術的には UNIX などで構築した汎用の Kerberos レルム (Realm) との相互接続性がある。 これにより、以下のようなことが可能になると考えられる。
以下当方で確認を行った際の具体的な設定手順について解説する。 なお今回は、以下のような環境にて検証を行った。
参考情報などに記載された手順に基づき、Windows 2000 Professional のログオン時の認証を Linux で構築した Kerberos サーバ (KDC) で行なえることを確認した。以下手順を示す。なお、環境は以下のとおりである。
また Kerberos 認証を行うために、マシン間で NTP などを利用して時刻を同期しておくことも必要である。
Linuxホスト上で以下のパッケージがインストールされていることを確認する。
インストールされていることを確認したら設定を開始する。
なお Kerberos 関連のパッケージは /usr/kerberos 以下にインストールされるため、デフォルトのパスには含まれていないことに注意すること。
更に 設定によっては、セキュリティ対策のため外部からのアクセスが禁止されている場合があるため、 ipchains コマンドなどを用いて予め設定を確認しておく。 今回の環境では lokkit コマンドを利用して、 LAN 側の NIC を trust した。 trust した NIC 経由の通信についてはパケットフィルタは無効となるため、すべて許可される。
ここでは、Windows 2000 との相互接続性を検証するのが目的のため、 Kerberos サーバの構成は、必要最低限の設定のみ行っている。
Kerberosレルム名としては、 KRB5.COM という名称を設定している。
#/usr/kerberos/sbin/kdb5_util create -r KRB5.COM -s Initializing database '/var/kerberos/krb5kdc/principal' for realm 'KRB5.COM', master key name 'K/M@KRB5.COM' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: ←管理パスワードを入力 Re-enter KDC database master key to verify:←もう一度入力
# /usr/kerberos/sbin/kadmin.local Authenticating as principal root/admin@KRB5.COM with password. kadmin.local: ank root/admin WARNING: no policy specified for root/admin@KRB5.COM; defaulting to no policy Enter password for principal "root/admin@KRB5.COM": ←設定するパスワードを入力 Re-enter password for principal "root/admin@KRB5.COM":←もう一度入力 Principal "root/admin@KRB5.COM" created. kadmin.local: quit
root/admin@KRB5.COM *
デフォルトのファイルに対して修正を行なった。
以下下線部が最低限修正の必要な部分である。
[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 = linux.krb5.com:88 admin_server = linux.krb5.com:749 default_domain = krb5.com } [domain_realm] .krb5.com = KRB5.COM krb5.com = KRB5.COM [kdc] profile = /var/kerberos/krb5kdc/kdc.conf [pam] debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false
設定が完了したら、以下のようにして、Kerberos サーバを起動する。
#/etc/init.d/krb5kdc start #/etc/init.d/kadmin start
BIND の場合、以下のようなゾーンファイルを作成する。その他の DNS サーバでも、これに準じた設定を行なうこと。ログオンを行なうためには、以下に記載したSRVレコードが必須である。
$TTL 86400 $ORIGIN krb5.com @ IN SOA linux.krb5.com. root.linux.krb5.com. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS linux.krb5.com. linux IN A 192.168.1.1 may IN A 192.168.1.10 _kpasswd._tcp IN SRV 0 100 464 linux _kpasswd._udp IN SRV 0 100 464 linux _kerberos-adm._tcp IN SRV 0 100 749 linux _kerberos-adm._udp IN SRV 0 100 749 linux
設定が完了したら、以下のようにして、 DNS サーバを起動する。
#/etc/init.d/named start
プリンシパルの追加には kadmin.local コマンドを利用する。 ここでは、ユーザ名 test2 、ホスト名の FQDN が may.krb5.com の場合の例を示す。 なおパスワードは、両方とも pass に設定している。
# /usr/kerberos/sbin//kadmin.local -q "ank -pw pass test2" Authenticating as principal root/admin@KRB5.COM with password. WARNING: no policy specified for test2@KRB5.COM; defaulting to no policy Principal "test2@KRB5.COM" created. # /usr/kerberos/sbin//kadmin.local -q "ank -pw pass host/may.krb5.com" Authenticating as principal root/admin@KRB5.COM with password. WARNING: no policy specified for host/may.krb5.com@KRB5.COM; defaulting to no policy Principal "host/may.krb5.com@KRB5.COM" created.
注意: ホスト名は、必ず FQDN で指定すること。例えば上記の例で may.krb5.com の代わりに may としてはいけない。また大文字と小文字は区別されるため、注意すること。
Windows 2000 側の Kerberos の設定では、 ksetup というコマンドを利用する。 このコマンドは Support Tools に含まれているため、事前に Windows 2000 の CD-ROM に同梱されている Support Tools をインストールしておく必要がある。
C:\>ksetup /setdomain KRB5.COM Setting Dns Domain C:\>ksetup /addkdc KRB5.COM 192.168.1.1 C:\>ksetup /setmachpassword pass Setting computer password C:\>ksetup /mapuser * *
ksetup /setdomain
コマンドでは、参加する Kerberos レルムを設定する。ksetup /addkdc
コマンドでは、 Kerberos レルムの KDC を設定する。ksetup /setmachpassword
コマンドにより、 Windows 2000 マシンを Kerberos のレルムに参加させる際のパスワードを設定する。
ここで pass は、先ほどホストのプリンシパルを追加した際に用いたパスワードを指定する。
ksetup /mapuser
コマンドでは、 Windows 側のユーザと Kerberos 側のユーザとの対応付けを行っている。
Kerberos レルム側のパスワードでログオンができる筈である。また以下の画面からパスワードの変更も可能である。