「Debian(login)の認証をActive Directoryで行うには」でKerberosの仕組みがなんとなくわかりました。
Active Directory + PAM + Kerberosでは、Linux側にユーザーを追加しておく必要がありましたが winbindを使用することでユーザー管理をWindowsのみで行うことができます。
ただし、私が構築した環境ではWindows側からSambaを使用する際、IPアドレスでしか使用できていません。
認証サーバーとなるWindows2000 ServerのActiveDirectoryを構築します。
[参考:Active Directoryの構成[Windows2000 Server]]
krb5-userをインストールします。
# aptitude install krb5-user
インストールが完了したら、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にドメインが設定されています。 設定されていない場合、Windows2000で指定したドメインへ設定します。
realmは大文字で指定するというルールがあるようですので次のようになっているのを確認します。
[libdefaults]
default_realm = BNOTE.NET
realmsにdefault_domain = bnote.netを追加します。
[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 <- 修正
sambaおよびWinbindをインストールします。
# aptitude install samba // WORKGROUP名の設定が行われる # aptitude install winbind
Winbindを使用して認証が行えるようにsmb.confを修正します。(/etc/samba/smb.conf)
smb.confのグローバルセクションを次のように修正します。
workgroup = BNOTE realm = BNOTE.NET security = ads #netbios name = DEP <- あるとエラーになる idmap uid = 10000-50000 idmap gid = 10000-50000 winbind cache time = 3 winbind separator = @ winbind use default domain = yes template homedir = /home/%U template shell = /bin/bash password server = kdc.bnote.net encrypt passwords = true obey pam restrictions = yes
nsswitchを修正しユーザーの問い合わせをWinbindになるよう修正します。(/etc/nsswitch.conf)
passwd: compat winbind shadow: compat winbind group: compat winbind
WinbindとSambaを再起動します。
# /etc/init.d/samba restart # /etc/init.d/winbind restart
設定した内容で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
以上で認証の確認は終了です。
次のように net コマンドを実行し、Linuxマシンを Active Directory ドメインに参加させます。
# net ads join Using short domain name -- BNOTE Joined 'DEP' to realm 'BNOTE.NET'
次のコマンドでドメインへ参加できているか確認します。
# net ads testjoin Join is OK
Windows2000 ServerのActive Directory ユーザーとコンピュータでも確認することができます。
[Active Directory ユーザーとコンピュータ] -> Computers(ツリー)
次のコマンドを実行することで、参加したドメインの情報を取得できます。
# net ads info LDAP server: 192.168.123.105 LDAP server name: kdc.bnote.net Realm: BNOTE.NET Bind Path: dc=BNOTE,dc=NET LDAP port: 389 Server time: The, 29 Jan 2008 18:27:06 JST KDC server: 192.168.123.105 Server time offset: 7-22
次のコマンドを実行することで、参加したドメインのユーザーを取得できるか確認します。
# wbinfo -u administrator guest krbtgt bnote
次のコマンドを実行することで、参加したドメインのグループを取得できるか確認します。
# wbinfo -g BUILTIN@administrator BUILTIN@users domain admins domain users
次のコマンドを実行することで、RPCによる動作確認をします。
# wbinfo -t checking the trust secret via RPC calls succeeded
次のコマンドを実行することで、Windows上に作成したユーザーの認証が行えるか確認します。 (ユーザーは、あらかじめ作成しておきます。ここでは、ユーザー名をbnoteとしています。)
# wbinfo -a bnote%パスワード plaintext password authentication succeeded challenge/response password authentication succeeded
ユーザーID、所属グループを確認します。
# id bnote uid=10000(0001) gid=10002(domain users) groups=10002(domain users)
loginの認証にKerberosを使用するよう設定します。
/etc/pam.d/ディレクトリ内のcommon-***にKerberos認証を追加します。
/etc/pam.d/common-authに次のように追加します。use_first_passを 指定することで、最初に入力されたパスワードを使用するように指定しています。
auth sufficient pam_winbind.so <- 失敗した場合、次のpam_unixで認証を行う auth required pam_unix.so nullok_secure use_first_pass
/etc/pam.d/common-accountに次のように追加します。
account sufficient pam_winbind.so account required pam_unix.so
/etc/pam.d/common-sessionに次のように追加します。これは、Winbindを利用することで ユーザー情報は作成されるのですが、ホームディレクトリは作成されません。PMAを経由するアプリケーションは 以下の設定で、ログイン時にホームディレクトリが作成されるようになります。
session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel umask=0022
また、smb.confに「obey pam restrictions = yes」を設定することでsambaへアクセスした際にも ホームディレクトリを作成されるようになります。
以上でPAMの設定は終了です。Turbolinux FUJI のログイン認証を Active Directory で行なう
Linux の認証を Active Directory で行なう方法
Active Directoryへの参加に失敗する場合、smb.confのnetbios nameとhostsの記述を確認する。
# net ads join Using short domain name -- BNOTE Failed to set servicePrincipalNames. Please ensure that the DNS domain of this server matches the AD domain, Or rejoin with using Domain Admin credentials. Disabled account for 'BNOTE' in realm 'BNOTE.NET'
wbinfo -t でエラーが発生する場合、smb.confのnetbios nameが問題。コメントアウトで対応。
Copyright 1997-2008 BBB All rights reserved.