Chapter 6. ドメインメンバーシップ

John H. Terpstra

Samba Team

Jeremy Allison

Samba Team

Gerald (Jerry) Carter

Samba Team

Andrew Tridgell

Samba Team

Jelmer R. Vernooij

The Samba Team

Guenther Deschner

LDAP updates 

Table of Contents

機能と利便性
MicrosoftWindowsワークステーション/サーバーのマシン信頼アカウント
マシン信頼アカウントの手動作成
NT4サーバーマネージャによるドメインマシンアカウントの管理
マシン信頼アカウントの即時作成
Microsoft Windows ワークステーション又はサーバーをドメインメンバーにする
ドメインメンバーサーバー
Samba-3でNT4形式でのドメインに参加する
これがなぜsecurity = serverよりもすぐれているのか?
Samba ADS ドメインメンバーシップ
smb.confの設定
/etc/krb5.confの設定
コンピューターアカウントの作成
サーバー設定のテスト
smbclientによるテスト
注意
Sambaドメインメンバー間でのユーザーIDマッピング共有
よくあるエラー
マシンをドメインに追加し直すことができない
マシンのドメインへの追加に失敗する
Windows 2003 PDC に参加できない

ドメインメンバーシップはきわめて重要な事項である。Sambaは Microsoftドメインセキュリティコンテキスト中においてメンバーサーバーとして 参加できねばならず、Sambaはドメインマシンメンバー信頼アカウントを 付与できねばならない。これなしには多くのユーザーに実行可能なオプション を提供できないだろう。

この章では、ドメインメンバーシップに関する背景情報、Sambaの設定と、 Microsoft Windows クライアントのドメインに参加方法について説明する。 なぜそれが必要なのであろうか?なぜならば、現在のMicrosoft Windows ネットワーキングと、特にUNIX/Linuxネットワーキングおよび管理の世界に関して かなりの間違った情報、誤解があり、また知識の欠如が顕著だからである。 この章によってその欠如を埋めることを望みたい。

機能と利便性

Microsoft Windows ワークステーションおよびサーバーがドメイン セキュリティに参加するためには、ドメインメンバーにならなければならない。 ドメインセキュリティに参加することは、しばしばシングルサインオン か省略してSSOと呼ばれる。この章では、ワークステーション (かあるいはMicrosoft Windows NT4/200xサーバーであるもう一台のサーバー) 又はSambaサーバーを、Microsoft Windowsドメインセキュリティの メンバーにするための手順について説明する。

Samba-3 はNT4形式のMicrosoft Windowsドメインにネイティブなメンバーサーバー として、Microsoft Windows Active Directoryドメインにネイティブな メンバーサーバーとして、あるいは、Sambaドメイン管理ネットワークに参加 できる。ドメインメンバーシップはたくさんの利点を持つ:

  • Microsoft WindowsワークステーションユーザーはSSOの利点を享受できる。

  • ドメインユーザーアカウントの(アクセス)権限とファイルの所有権およびアクセス制御は 単一のドメインセキュリティアカウントマネージャ(SAM)データベース から設定できる(ドメインメンバーであるMicrosoft Windowsワークステーション と同様にドメインメンバーサーバーで動作する)。

  • ドメインメンバーであるMicrosoft Windows NT4/200x/XP Professional ワークステーションのみがネットワークログオン機能を使える。

  • ドメインメンバーのワークステーションを、ポリシーファイル (NTConfig.POL)およびデスクトッププロファイルを使用 してよりよく制御できる。

  • ログオンスクリプトを使用することで、ユーザーはアプリケーションサーバー 上のネットワークアプリケーションへ自由にアクセスできる。 (訳注:意味はこれでよい?)。 Through the use of logon scripts, users can be given transparent access to network applications that run off application servers.

  • ネットワーク管理者にとっては、より優れたアプリケーション管理およびユーザーアクセス 管理が可能になる。ユーザーアカウントを、中央にあるドメインデータベース (NT4/SambaでのSAM形式ドメインか、LDAPによるディレクトリがバックエンドになった NT4ドメインか、Active Directory基盤経由で)以外の任意のネットワーク クライアントかサーバー上でユーザーアカウントを保守する必要がないからである。

MicrosoftWindowsワークステーション/サーバーのマシン信頼アカウント

マシン信頼アカウントは(ユーザーではなく)クライアントマシンを ドメインコントローラーサーバーに対して認証するために使われる。Windowsの用語では、 これはコンピューターアカウントとして知られている。 マシン信頼アカウントの目的は、不正(訳注:rogue)ユーザーとドメインコントローラー が、共謀してドメインメンバーのワークステーションにアクセスすることを 防ぐことである。

マシン信頼アカウントのパスワードは、ドメインコントローラーとの間で暗号化 通信を行うために共通の秘密鍵(訳注:shared secret:共通鍵?)である。 これは、同じNetBIOS名を持つ未認証マシンがドメインに参加し、ドメインセキュリティ 操作をし、ドメインユーザー/グループアカウントへアクセスすることを得ることを防ぐ セキュリティ機能である。Windows NT/200x/XP Professionalクライアントは マシン信頼アカウントを使うが、Windows 9x/Me/XP Homeは使わない。従って、 Windows 9x/Me/XP Homeクライアントは、マシン信頼アカウントを持たないため、 ドメインコントローラーとの間で、共通の秘密鍵を持つことはなく、決してドメイン の真のメンバーにはなれない。

Windows NT4 PDCはマシン信頼アカウントをWindowsレジストリ中に格納する。 Microsoft Windows 2000の登場と共に、Active Directoryという、 マシン信頼アカウントのための新しいリポジトリが登場した。それに対し、 Samba PDCはマシン信頼アカウントを以下のように2つの部分に分けて格納する:

  • ドメインセキュリティアカウントはsmb.confファイル中で設定される passdb backendに格納される。格納される アカウント情報の性質は、選択されたバックエンドデータベースの タイプに依存する。

    このデータのより古い形式はsmbpasswdデータベースで、 そこにはUNIXのログインID、UNIXのユーザー識別子(UID)、LanManおよびNT形式で 暗号化されたパスワードを格納している。また、ここでは触れないが、その他 にもいくつかの情報が含まれている。

    より新しいデータベースは、ldapsamとtdbsamと呼ばれる。どちらも、以前の smbpasswdファイルよりもかなりより多くのデータを格納する。 その付加情報により、新しいユーザーアカウント管理の新しい方法が可能になる。

  • 対応するUNIXアカウントは通常/etc/passwdに格納される。 UNIX ユーザーアカウントを必要としないような、より簡便なオペレーションの実現 に向けて開発中だが、この機能は Samba-3 の初期リリースまでは実装されない予定 である(訳注:この部分は古い)。

マシン信頼アカウントの作成には3つの方法がある:

  • UNIX/Linuxコマンド行からの手動作成。この方法では、Sambaとそれに対応する UNIXアカウントが手動で作成される。

  • NT4ドメインコントローラーからMicrosoft Windows NT4サーバーマネージャを使うか、 MicrosoftのWebサイトから入手可能なNexusツールキットを使う。このツールは ユーザーが管理者アカウントでログオンしている限り、任意のMicrosoft Windows マシンから実行することが出来る。

  • その場での(on the fly)作成。Sambaマシン信頼アカウントは、 クライアントがドメインに参加したときに、Sambaによって自動的に作成 される(セキュリティ上、この方法が推奨される)。対応するUNIX アカウントは自動でも、手動ででも作成できる。

Microsoft Windows NT4/200x/XP ProfessionalもSambaもマシン信頼アカウントを 強制する方法を提供しない。これは管理者の選択問題である。

マシン信頼アカウントの手動作成

マシン信頼アカウントの手動作成の最初の手順は、/etc/passwd 中に対応するUNIXアカウントを手動で作成することである。 この作業は、vipwか、通常、新規のUNIXアカウント作成時に 使われるadduserコマンドを使用する。以下は、Linux ベースのSambaサーバーにおける例である:

root# /usr/sbin/useradd -g machines -d /var/lib/nobody \
   -c "machine nickname" \
   -s /bin/false machine_name$ 

root# passwd -l machine_name$

上記の例では、全マシンアカウントのプライマリグループとして使われる machinesという、既存のシステムグループがある。以下の例では、 machinesグループのGIDは100である。

*BSDシステム上では、この作業はchpassユーティリティを使うこと もできる:

root# chpass -a \
'machine_name$:*:101:100::0:0:Windows machine_name:/dev/null:/sbin/nologin'

/etc/passwdのエントリは$を追加した マシン名を付けたもので、パスワードは持たず、シェル情報が空白で(訳注: /dev/nullを指定すること)、ホームディレクトリの定義がない。たとえば、 マシン名がdoppyの場合は/etc/passwd のエントリは以下のようになる:

doppy$:x:505:100:machine_nickname:/dev/null:/bin/false

上記の例では、machine_nicknameはクライアントに対する 任意の名前を記述する(たとえばBasementComputer)。 machine_nameはドメインに参加するときの クライアントのNetBIOS名でなければならない。$を クライアントのNetBIOS名に必ず付加しなければならず、これがないと、 Sambaはこれをマシン信頼アカウントと認識できない。

対応するUNIXアカウントが作成されると、次の手順は初期マシン信頼 アカウントの、よく知られたパスワードを持つクライアント用のSamba アカウントを作成することである。 これは以下に示すようなsmbpasswdを使用する:

root# smbpasswd -a -m machine_name

ここでmachine_nameはマシンのNetBIOS名である。 新規のマシンアカウントのRIDは対応するUNIXアカウントのUIDから生成される。

クライアントをドメインに即座に参加させる

この方法でマシン信頼アカウントを手動作成することは、 Windows NT PDC で により サーバーマネージャによりマシン信頼アカウントを 作成するのと同等である。アカウントが作成されてからクライアントがドメイン に参加してパスワードを変更するまでの間、同じ NetBIOS 名を持つマシンで ドメインに参加しようとする侵入者の被害を受ける可能性がある。 PDC は、 ドメインのメンバーを信頼するようにできており、多くのユーザー情報をこのような クライアントに渡してしまう。注意すること!

NT4サーバーマネージャによるドメインマシンアカウントの管理

有効なadd machine scriptはマシン信頼アカウントの 自動作成に必須である。これは自動アカウント作成機能を使用する場合でも、 NT4 ドメインサーバーマネージャを使用する場合でも必要である。

ドメインを管理しようとしているマシンが Microsoft Windows NT4 ワークステーション又はMicrosoft Windows 200x/XP Professional の場合、使用するツールはSRVTOOLS.EXEという パッケージである。これをターゲットディレクトリで実行すると、SrvMgr.exe 及びUsrMgr.exe(どちらもMicrosoft Windows NT4 ワークステーション のドメイン管理ツール)が解凍される。

ワークステーションがMicrosoft Windows 9x/Me ファミリー製品であれば、 Microsoft のWebサイトからNexus.exe パッケージをダウンロードする。それをターゲットディレクトリから実行すると、 上記と同じツールで、9x/Meプラットフォーム用のものが解凍される。

これらのツールに関する詳細情報は次のKnowledge Baseの記事で得ることができる: 173673172540

srvmgr.exe(ドメイン用のサーバーマネージャ)を起動し、以下の手順を実行する:

Procedure 6.1. サーバーマネージャによるドメインマシンアカウント管理

  1. メニューからコンピューターを選択する。

  2. Select Domainをクリックする。

  3. Select Domainパネルで管理対象の ドメイン名をクリックし、 OKをクリックする。

  4. 再度メニュー画面からコンピューターを選択する。

  5. Add to Domainを選択する。

  6. ダイアログボックス中で、Add NT Workstation of Server ラジオボタンをクリックし、フィールドにマシン名を入力し、 Addボタンをクリックする。

マシン信頼アカウントの即時作成

マシン信頼アカウント作成の第3の(そして推奨する)方法は、クライアントが ドメインに参加する時、必要に応じて Samba サーバーアカウントを作成する方法である。

Samba の各マシン信頼アカウントは対応するUNIXアカウントを必要とするので、 通常、 UNIXアカウントを自動作成する機能が提供されている。これには smb.conf ファイル内に add machine script オプションを設定する必要がある。 しかし、この方法は必須ではなく、対応するUNIXアカウントを手動で作成しても構わない。

以下は、Red Hat linux での例である:

[global]
add machine script = /usr/sbin/useradd -d /var/lib/nobody -g 100 -s /bin/false -M %u

Microsoft Windows ワークステーション又はサーバーをドメインメンバーにする

Microsoft Windows ワークステーションやサーバーをドメインのメンバー にする手順は Windowsのバージョンによって異なる。

Windows 200x/XP Professionalクライアント

ユーザーがクライアントをドメインメンバーにする時、 Windows 200x は、ドメイン内で マシンアカウントを作成する権限を持つアカウント及びパスワードの入力を要求する。 Samba管理者アカウント(すなわち、Sambaサーバー上でroot権限を 持つSambaアカウント)をここで入力せねばならない。通常のユーザーアカウントが入力さ れると、この作業は失敗する(訳注:net rpc rightsでSeMachineAccountPrivilege権限を 持ったユーザーも出来るのでは?)

セキュリティのため、この管理者アカウントのパスワードは/etc/passwd でルートユーザー用に使用されているパスワード以外のものを設定するべきである。

ドメインメンバーのマシンアカウントを作成するために使用するアカウント名は ネットワーク管理者が任意に選択する。もしそれがroot以外なら smb.conf中のパラメーター username map = /etc/samba/smbusers で指定するファイル名中で容易にマッピングできる。

Samba管理者アカウントのセッションキーは、マシン信頼アカウントのパスワード 設定の際、暗号化キーの機能を果たす。マシン信頼アカウントはその場でで作成 されるか、または、既に存在していれば更新される。

Windows NT4 クライアント

マシン信頼アカウントが手動作成された場合、Identification Changes メニュー画面でドメイン名を入力するが、 Create a Computer Account in the Domain チェックボックスにはチェックを入れない。こうすることでマシン がドメインに参加する際に既存のマシン信頼アカウントが使用される。

もしマシン信頼アカウントがその場で作成される場合は、Identification Changes メニュー画面でドメイン名を入力し、 Create a Computer Account in the Domain チェックボックスにチェックを入れる。この場合、上記 Windows2000用 の手順に従いドメインに参加する(プロンプトに対してSamba管理者 アカウント名を入力する)。

Sambaクライアント

Joining a Sambaクライアントをドメインに参加させる方法は 次の章に記述されている。

ドメインメンバーサーバー

このモードのサーバー操作は、Sambaマシンをドメインセキュリティコンテキスト のメンバーにすることを含む。またこれは定義上、全てのユーザー認証は中央で 定義された認証機構(訳注:authentication regime)で行われることを意味する。 この認証機構は NT3/4形式(旧式のドメインテクノロジー)サーバー又は Microsoft Windows 2000以降で実装されているActive Directory server(ADS) が提供する。

もちろん、認証バックエンド自体はSambaがサポートしている分散ディレクトリ 構造のサーバーなら、いずれでも構わない。LDAP(OpenLDAPベース) 、Sunの iPlanet、Novellの e-Directoryなどが使用可能である。

Note

SambaがLDAPやその他のアイデンティティ管理、あるいは、ディレクトリ サービスを使用するように設定される場合、ユーザー及びマシン認証を継続して 実行するのはSambaである。Sambaが行う認証をLDAPサーバーが代替するわけでは ないことに注意。

ドメインメンバーサーバーのドメインマシンアカウント作成に関する詳細情報や Sambaドメインメンバーマシンがドメインに参加し完全に信頼されるようにする 方法に関しては、ドメイン管理の章を参照のこと。

Samba-3でNT4形式でのドメインに参加する

下記の表に、この後この章で使用される名前を示す。

Table 6.1. 前提

Samba DMSのNetBIOS名:SERV1
Windows 200x/NTドメイン名:MIDEARTH
ドメインのPDCのNetBIOS名:DOMPDC
ドメインのBDCのNetBIOS名:DOMBDC1とDOMBDC2

まずsmb.confファイルを編集し、Sambaが以後ドメインセキュリティを 使用するように設定しなければならない。

smb.conf中の[global]セクション中にsecurity 行を、下記のように変更(又は追加)する:

security = domain

もしも、パラメーターsecurity = userが使われている ならば、このマシンはスタンドアロンサーバーで動作するのでドメインメンバー サーバーではないことに注意。ドメインセキュリティモードはSambaにドメイン セキュリティコンテキスト内で動作するようにさせる。

次に、[global]セクション中の workgroup行を下記のように修正する:

workgroup = MIDEARTH

これが参加するドメイン名である。

ユーザーが NT PDC で認証されるようにencrypt passwords パラメーターをyesに設定しなければならない。もしこの パラメーターが特に指定されていなければ、既定値で設定されている。 このパラメーターを設定する必要はないが、もしもsmb.confファイル中で指定 されたならば、必ずYesに設定されねばならない。

最後に、[global]セクションのpassword server行 を下記のように追加(又は修正)する:

password server = DOMPDC DOMBDC1 DOMBDC2

これらはSambaがユーザー認証のために通信を行うプライマリ及びバックアップの ドメインコントローラーである。Sambaは各サーバーに対し、リスト順に接続するので、 複数のドメインコントローラーの間で認証負荷を分散するためには、このリストの 順番を適宜変更してもよい。

代わりに、認証に使用するドメインコントローラーのリストを smbdが自動的に決める ようにしたい場合、この行を次のように設定する:

password server = *

この方法で、NTと全く同じメカニズムをSambaが使用するようにできる。この方法は ブロードキャストベースの名前解決を使用するか、WINS データベースの検索により 認証するドメインコントローラーを決めるか、DNSによる名前解決によりドメイン コントローラーを見つける。

ドメインに参加するために次のコマンドを実行する:

root# net rpc join -S DOMPDC -UAdministrator%password

もしも、-S DOMPDC引数が与えられない場合、ドメイン名はsmb.conf から入手し、PDCのNetBIOS名は、WINS検索を使うか、NetBIOSブロードキャストベースの名前 検索のどちらかで入手する。

マシンがDOMドメインに参加しようとしていて、そのドメインのPDC(ドメインのSAMデータ ベースへの書き込み権限のある唯一のマシン)がDOMPDCなので、 -Sオプションを使用する。 Administrator%passwordは、はマシンをドメインに追加する のに必要な権限を持つアカウントのログイン名とパスワードである。これが成功すれば、 使用しているターミナルの画面に下のようなメッセージが表示される。 古いNT4式のドメイン環境使用の場合:

Joined domain DOM.

Active Directory使用の場合、ADSドメインへ参加するためのコマンドは以下の通り:

root#  net ads join -UAdministrator%password

成功すると以下の結果が表示される:

Joined SERV1 to realm MYREALM.

詳細情報については、netのマニュアルページと リモート管理の章を参照のこと。

この手順により、事前にPDC上でマシン信頼アカウントを作成する必要はなく、 サーバーがドメインに接続できる。

このコマンドは、マシンアカウントパスワード変更プロトコルを通して、 Sambaサーバーの新規(任意の)マシンアカウントパスワードを、smbpasswdファイルが 通常格納されているディレクトリと同じディレクトリにあるファイルに書き込む。 DMSによって必要とされる信頼アカウント情報は /usr/local/samba/private/secrets.tdb/etc/samba/secrets.tdbファイル中に書かれる。

このファイルはrootにより作成・所有され、root 以外のユーザーは読めない。これが、 システムのドメインレベルのセキュリティの鍵を握る部分であり、シャドウ パスワードファイル同様に慎重に扱わなければならない。

最後に、Sambaのdaemonを再起動し、クライアントがドメインセキュリティを使用開始する 準備をする。Samba デーモンの再起動方法はディストリビューションにもよるが、ほとんど の場合は次のとおりである:

root# /etc/init.d/samba restart

これがなぜsecurity = serverよりもすぐれているのか?

現在、Samba のドメインセキュリティでは、サーバーに紐づくユーザーに対応するローカルUNIXユーザーを 作成しなければならない。このことは、もしも、ドメインユーザーDOM\fred がドメインセキュリティのSambaサーバーに紐づく場合、UNIXファイルシステム上にそれに対応する fred というローカル UNIXユーザーがいなければならないことを意味する。これは以前のSambaの セキュリティモードであるsecurity = serverと似ているが、 このモードでは、Windows 95又はWindows 98サーバーと同じように、 Sambaが認証リクエストを Windows NT サーバーに回送していた。

UNIX の UID 及び GID を自動的に Windows NT ドメインユーザー及びグループへ割り当てる システムについての情報はWinbind: ドメインアカウントの使用 を参照のこと。

ドメインレベルのセキュリティの利点は、NT サーバーと全く同じように、ドメインレベルセキュリティ における認証が、認証されたRPC チャンネルを通ることである。これは、Sambaサーバーが NT サーバーと 全く同じやり方でドメインの信頼関係に参加できることを意味する(すなわち、Sambaサーバーをリソース ドメインに追加し、リソースドメインPDC からアカウントドメイン PDC に認証を渡してもらうことができる)。

さらに、security = server(訳注:サーバーレベルのセキュリティ) を使う場合、サーバー上のすべてのSambaデーモンは、起動している限り認証サーバーと接続し続けなければ ならない。これはMicrosoft NTサーバーの接続リソースを使い果たし、利用可能な接続がなくなることに なりかねない。それに対しsecurity = domain (訳注:ドメインレベルのセキュリティ)の場合は、Sambaデーモンはユーザー認証に必要な時のみPDC/BDCに 接続し、その後接続を切断する。これにより PDC の接続リソースを節約することができる。

最後に、NT サーバーと同じように PDC 認証を行うということは、認証の返答の一部として、ユーザー SIDや ユーザーが属する NTグループなどのユーザー識別情報を、Samba サーバーが受け取ることを意味する。

Note

この文書の内容の大半は、ウェブマガジン LinuxWorldの記事 http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html Doing the NIS/NT Sambaとして最初に発表された(訳注:リンク切れ)。

Samba ADS ドメインメンバーシップ

これは、Windows 200x KDC に対し Kerberos認証を行うSamba-3の設定方法の概略である。 Kerberosの知識を有することを前提としている。

smb.confの設定

最低以下の3つのオプションをsmb.confで使用しなければならない:

realm = your.kerberos.REALM
security = ADS
# もしも存在するときのみ、以下のパラメーターを指定する必要がある。
# もしも存在しないときの既定値はYesである。
encrypt passwords = yes

Samba がレルム名を使用して適切な ADS サーバーを正確に識別できない場合、 smb.conf中のpassword serverオプションを使用する:

password server = your.kerberos.server

ADSドメインコントローラーを識別できない最も共通的な理由は、ADS基盤のDNS要求条件 に関係なくUNIXシステム上でいくつかのDNSサーバーを保守しているサイトの問題である。 password serverを使って、優先するADSドメインコントローラー を指定することは問題ない。

Note

smbpasswdファイルは必要でなく、古いクライアントは あたかもsecurity = domainのように 認証され、何の害もなく、ドメインに入らないローカルユーザーを持つことが できる。

/etc/krb5.confの設定

MIT 及び Heimdal Kerberosでは、/etc/krb5.confの 設定は必要なく、時に害となることがある。

Microsoft ADSは、DNSの_kerberos._tcp.REALM.NAMEに、 レルム内の各KDCのSRVレコードを、自動的に作成する。 これは、Active Directory ドメインを作成するために使われるインストールと設定プロセスの一部である。 KDCはKerberosのキー配信センタであり、Microsoft Active Directory基盤の 不可欠な部分として構成されている。

UNIXシステムは、Windows2000 KDCにで認証を行うために、kinitとDES-CBC-MD5 又はDES-CBC-CRCという種類の暗号手法を使える。Windows 2000 ADSのkerberos 相互運用性に関連する詳細情報は、 Interoperability というガイドを参照のこと。もう1つの、とても有用な、Kerberosの相互運用性に関する 一般的な情報として参照できる文書は、 RFC1510 である。このRFCはKerberosの操作についてのたくさんの不可思議な背景について説明している。

MITとHeimdalでは、最新のKRB5ライブラリがSRVレコードをチェックするように 既定値で設定されていて、従って、自動的にKDCを見つける。さらに、 krb5.confは、たとえ2つ以上あったとしても単一のKDCの 指定のみ許可する。DNSルックアップを使用することによりKRB5ライブラリは使用 可能な任意のKDCを使用できる。

手動でkrb5.confを設定する場合の最小限の設定は次のとおり:

[libdefaults]
	default_realm = YOUR.KERBEROS.REALM

[realms]
	YOUR.KERBEROS.REALM = {
	kdc = your.kerberos.server
	}

[domain_realms]
	.kerberos.server = YOUR.KERBEROS.REALM

Heimdal のバージョン 0.6 以前を使用する場合は次のように設定する:

[libdefaults]
	default_realm      = YOUR.KERBEROS.REALM
	default_etypes     = des-cbc-crc des-cbc-md5
	default_etypes_des = des-cbc-crc des-cbc-md5

[realms]
        YOUR.KERBEROS.REALM = {
        kdc = your.kerberos.server
	}

[domain_realms]
        .kerberos.server = YOUR.KERBEROS.REALM

kinitUSERNAME@REALM を実行して設定をテストし、パスワードが Windows 2000 KDC に認証されることを確認 する。

Heimdal 0.6.x 以前のバージョンでは、ADSで新規に作成されたアカウントであるか、 移行後にパスワードが変更されたアカウントであるか、インストール後に Administratorであれば使用できる。現行、Windows 2003 KDCは Heimdal のバージョン 0.6 以降のリリース(かつkrb5.conf内にetypesの既定値の設定が ないもの)とのみ使用できる。残念ながらこの領域はいまだに流動的な状態である。

Note

レルムは大文字でなければ、 Cannot find KDC for requested realm while getting initial credentials (最初の認証情報取得時にリクエストされたレルムの KDC を見つけられない) というエラーが表示される(Kerberos は大文字・小文字を区別する)。

Note

2つのサーバーは時間の同期を取らなければならない。もし時間差が5分以上になると メッセージ kinit(v5): Clock skew too great while getting initial credentials (kinit(v5): 最初の認証情報取得時にクロックスキューが過大) が表示される。

Kerberos プロトコルではクロックスキューの限界値を設定できる。既定値は5分である。

更に、使用するKDCのIP アドレスによる逆引きDNS検索をできるようにしなければならない。 また、この逆引きDNS検索がマッピングする先の名前はKDCのNetBIOS名(すなわち、ドメイン に紐づかないホスト名)またはレルムが後に付くNetBIOS名のどちらでもよい。

以上を確実に行うための最も簡単な方法は、使用するKDCのIPアドレスをマッピングする /etc/hostsのエントリを、KDCのNetBIOS名に追加することである。 もし正しくなければ、レルムに参加しようとするとlocal error が発生する。

smbclient中でのKerberos のサポートのみが必要な場合は、次の項は飛ばして直接 smbclientでのテストに進むこと。 コンピューターアカウントの作成サーバー設定のテストは、 smbdwinbinddでKerberosのサポートをしたい場合にのみ必要である。

コンピューターアカウントの作成

Samba のプライベートディレクトリに書き込み権限があるユーザー(通常はroot)として以下を実行する:

root#  net ads join -U Administrator%password

管理者アカウントは、ADSドメインにマシンを追加することを許可されているADSドメインセキュリティ の設定中で指定された任意のアカウントでも良い。それはもちろん、Administrator以外のアカウント を使うことは良いアイデアである。UNIX/Linuxシステム上では、このコマンドはUID=0(root)である アカウントによって実行されねばならない。

複雑な組織内でWindowsクライアントをADSドメインのメンバーにする場合、特定の組織単位内で マシンアカウントを作成しても良い。Samba-3では次の構文でこれを実現できる:

root#  kinit Administrator@your.kerberos.REALM
root#  net ads join createcomputer="organizational_unit"

ADS管理者は"organizational_unit"パラメーターに指定すべきものを助言することも可能である。

例をあげると、ある組織ディレクトリComputers/BusinessUnit/Department, の配下のServersというコンテナーにマシン信頼アカウントを作成したい場合 は以下のようになる:

root#  net ads join "Computers/BusinessUnit/Department/Servers"

このコマンドは、コンテナーComputers/BusinessUnit/Department/Servers 中に、Sambaサーバーのマシン信頼アカウントを置く。コンテナーはこのコマンドを実行する前に ADS ディレクトリ中に存在しなければならない。バックスラッシュはOU名とその他の文字に 対するエスケープ文字の両方として有効な文字のため、普通のスラッシュを使わなければ ならないことに注意。もしもOU名にバックスラッシュを使う必要があるならば、シェルによる 解釈と、LDAPによる解釈を考慮して4重にする必要がある。

よくあるエラー

ADS サポートがコンパイルされていない

Kerberosライブラリとヘッダーファイルのインストール後に、Samba を再設定(config.cache を削除) して、リコンパイルする(make clean all install)。

net ads joinがユーザー名の入力を要求する

kinit USERNAME@REALM を使ってドメインにログインする必要がある。 USERNAMEはマシンをドメインへ追加する権限を持つユーザーでなければならない。

サポートされない暗号/もしくはチェックサムタイプ

/etc/krb5.confシステムにインストールされているKerberosの タイプとバージョンに対して適切に設定されているか確認する。

サーバー設定のテスト

参加に成功したら、Active DirectoryにSambaサーバーのNetBIOS名の付いた 新規のコンピューターアカウントが表示される(ユーザーとコンピューター配下の コンピューターフォルダー中)。

Windows 2000 クライアントでは、net use * \\server\share を試してみること。パスワードを知らないでもKerberos にログインできるはずである。 もしも失敗したら、klist ticketsを実行すること。 サーバー用のチケットを取得できたか?それには暗号タイプ DES-CBC-MD5 があるか?

Note

SambaはDES-CBC-MD5暗号及びARCFOUR-HMAC-MD5符号を使用できる。

smbclientによるテスト

Sambaサーバー上でsmbclientとKerberosを使用してWindows2000サーバー又はSambaサーバー にログインすることを試みる。smbclientは通常通り使用するが、Kerberos認証を選択 するように、-kオプションを指定する。

注意

ドメインコントローラーインストール後は、正しい暗号化タイプを作成するために、少なくとも 一度は管理者パスワードを変更しなれけばならない。

Windows200xは既定値のDNS設定では_kerberos._udp_ldap._tcpを作成しないようである。おそらく今後 サービスパックで修正されるだろう。

Sambaドメインメンバー間でのユーザーIDマッピング共有

SambaはUNIXユーザー及びグループ(それぞれUIDとGIDで識別される)をWindowsユーザー及び グループ(SIDで識別される)にマッピングする。これらのマッピングは Sambaの idmapサブシステムが行う。

これらのマッピングをSambaドメインメンバー間で共有することは、 名前からIDへのマッピングが全マシンで同一になるので便利である。 特に、CIFSとNFSの両方でファイルを共有する場合に有用である。

LDAP ldap idmap suffixを使う場合、以下のように設定する:

ldap idmap suffix = ou=Idmap

詳細情報については smb.conf マニュアルページのldap idmap suffix パラメーターのエントリを参照のこと。

ldap admin dnも設定することと、secrets.tdb 中にLDAP管理用パスワードを設定するのを忘れないこと。これには下記を使用する:

root#  smbpasswd -w ldap-admin-password

ldap-admin-passwordの部分は、システムで使うLDAPサーバー管理用パスワードで 置き換えること。

よくあるエラー

ドメインメンバーのマシンアカウントの追加/削除/再追加の手順の中には、不注意により 陥りやすい多くの落とし穴や間違いを招きかねない多くの事細かなこと がある。興味深いことにSambaメーリングリストの購読者の中には、マシンアカウントの 追加を繰り返し失敗し、最終的にMicrosoft Windows をマシンに再インストール しなければならないという結論を出す人がよくいる。しかし、実際はこのような種類の問題で 再インストールが必要になることはめったにない。正しい解決法は単純である場合が多く、 Microsoft Windowsのネットワーク機能を理解していれば容易に解決できる。

マシンをドメインに追加し直すことができない

Windowsワークステーションを再インストールした。元々のドメインマシンアカウントが削除され その直後に再度追加された。同じマシン名を使用するとワークステーションはドメインに参加 できない。マシンの追加に失敗する際に、マシンはネットワーク上に存在していないにもかか わらず、マシンが既に存在するというメッセージが表示される。なぜこのように失敗するのか?

前の名前がまだNetBIOS 名キャッシュに残っているためである。マシンアカウントが削除されると、 同じ名前のマシンをドメインメンバーとして再度追加できるようになるには、まず、その名前が 期限切れにならなければならない。最もよい方法は、古いアカウントを削除し、新しい名前で マシンを追加することである。そのほかに、Windows上のクライアントから以下のnbtstat コマンドを使って、名前キャッシュにある現在のデータをフラッシュし、再ロードする。

C:\>  nbtstat -R

マシンのドメインへの追加に失敗する

Windows200xもしくはXP ProfessionalマシンをSamba PDCドメインに追加しようとすると失敗する。 エラーメッセージは 今回はネットワークの問題によりマシンを追加できませんでした。後ほどやり直して下さい。 である(訳注:実際に表示されるメッセージとは違います)。なぜか?

smb.confファイル中にadd machine scriptがあることを確認する。 もしも存在していないならば、OSプラットフォームに適したスクリプトを追加する。もしも、 スクリプトがすでに定義されているならば、その動作をデバッグする必要がある。 smb.confファイル中のlog levelの値を10まで増やし、 ドメインへの参加を試行してみる。そのログをチェックし、どの動作が失敗しているか突き止める。

可能性のある原因:

  • スクリプトが実際には存在していないか、指定したパスにない。

    是正処置:修正する。スクリプトを手動で実行すると、UNIX システム アカウントとSamba SAM アカウントの両方が追加されることを確認する。

  • マシンをUNIXシステムアカウントファイル/etc/passwdに追加できない。

    是正処置:マシン名が有効なUNIXシステムアカウント名であるか確認する。 もしもUNIXユーティリティuseraddが呼び出されるならば、このツールを 使用して追加したいマシン名を追加できることを確認する。一部のシステム上の Useraddは大文字やスペースを名前に使用することを許可しない。

add machine scriptはSamba バックエンドデータベースでは、 マシンアカウントを作成しない。Sambaバックエンドデータベースアカウントがマッピング される先のUNIXシステムアカウントを作成するためにのみあるものである。

Windows 2003 PDC に参加できない

Windows 2003はSMB署名を必要とする。クライアント側のSMB署名はSamba-3.0で 実現されている。Windows 2003サーバーと通信する際には client use spnego = yesに設定する。 この機能は、クライアントは単純にそれ自身とサーバーと両方がサポートする プロトコルをネゴシエートするので、Windows 2003が持つより高度なセキュリティ 機能をサポートしない他のWindowsクライアントとインタフェースを取れない。 これは、SMB/CIFSプロトコル中で構築されているよく知られたフォールバック 機能である。