Debian(login)の認証をActive Directoryで行うには
環境:
・Windows2000 Server
・Debian 4.0r2
ここは、Windows2000 ServerとLinux(Debian)が混在している環境で、ユーザー管理の統一を目指し 設定した記録です。最終的には、winbindを検討していますがとりあえずloginをKerberosで行うように設定します。
Windows2000(Active Directory)の認証には、Kerberos5が使用されており、互換性(相互接続性)があるそうです。 そこで、Windows2000 Serverを認証サーバーとしDebian側のloginの認証に使用します。
Windows2000のActiveDirectoryは、事前に構築しておきます。[参考:Active Directoryの構成[Windows2000 Server]]
Debian側の環境は、libpam-krb5,krb5-userをインストールしました。当初、libpam-krb5のみで構築を試みましたが 認証の確認がうまく行えなかったため krb5-user を追加しました。
libpam-krb5、krb5-userのインストール
libpam-krb5のインストールを行います。
# aptitude install libpam-krb5
インストール中に認証サーバーの設定を行います。次の画面でKDC(Kerberos の認証サーバ)Windows2000 Serverを指定します。
例:kdc.bnote.net
KDC同様にWindows2000 Serverを指定します。
インストール時にドメインを設定していないと、レルムの設定が「.JP」になってしまうので、後でkrb5.confを修正します。
正しく設定していれば、以降の作業も修正する必要はありません。
krb5-userをインストールします。このインストール目的は、kinitやklistを使うことにあります。
# aptitude install krb5-user
インストールが完了したら、krb5.confの修正を行います。
krb5.confの設定
/etc/krb5.conを修正します。
ログに関する追加を次のようにします。
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
次にdefault_realmを変更します。「.JP」をWindows2000で指定したドメインへ設定します。
realmは大文字で指定するというルールがあるようですので次のように修正します。
[libdefaults]
default_realm = BNOTE.NET
realmsの修正をします。「.JP = { 」の部分を修正します。
[realms]
BNOTE.NET = {
kdc = kdc.bnote.net
admin_server = kdc.bnote.net
default_domain = bnote.net
}
domain_realmにbnoteを追加します。
[domain_realm]
.bnote.net = BNOTE.NET
bnote.net = BNOTE.NET
設定例
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = BNOTE.NET <- Windows2000 Serverに指定したドメインを大文字
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
BNOTE.NET = { <- Windows2000 Serverに指定したドメインを大文字で
kdc = kdc.bnote.net <- Windows2000 Serverを指定
admin_server = kdc.bnote.net <- 修正
default_domain = turbolinux.com <- 修正
}
[domain_realm]
.kdc.bnote.net = BNOTE.NET <- 修正
kdc.bnote.net = BNOTE.NET <- 修正
Kerberos認証ができるか確認
設定した内容でKerberos認証が行えるか確認します。kinitコマンドを次のように実行します。
パスワードの入力を求められるので、Windows2000 Serverに登録済みのパスワードを入力します。
# kinit administrator@BNOTE.NET
Password for administrator@BNOTE.NET:
Kerberos認証の特性上、クライアントと認証サーバの時刻が一致している必要があります。(チケットの関係) 時刻が一致していない場合、次のようなエラーが表示されます。
kinit(v5): Clock skew to great while getting initial credentials
認証サーバーとの日時を合わせ kinit を実行します。認証が行えれば、何も表示されないでプロンプトに戻ります。
次にKerberosチケットの取得状態を確認します。
klistコマンドを実行し、チケットが取得できているかを確認します。
# klist
Ticket cache: FILE:tmp/krb5cc_0
Default principal: administrator@BNOTE.NET
Valid starting Expires Service principal
01/28/08 10:12:12 01/28/08 20:12:16 krbtgt/BNOTE.NET@BNOTE.NET
renew until 01/29/08 10:12:12
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached
認証できているようなので、pamの設定を行います。
PAMの設定
loginの認証にKerberosを使用するよう設定します。
/etc/pam.d/ディレクトリ内のcommon-***にKerberos認証を追加します。
/etc/pam.d/common-authに次のように追加します。
auth sufficient pam_krb5.so <- 追加
auth required pam_unix.so
/etc/pam.d/common-sessionに次のように追加します。
session optional pam_krb5.so <- 追加
session required pam_unix.so
以上でPAM(login)の設定は終了です。
検証
Windows2000 Server上に「test」ユーザーを作成します。
次にDebian上で次のコマンドを実行しユーザーを作成します。
# useradd test
Debian側のloginを「test」で行い、Windows上で設定したパスワードでログインできることを 確認します。