Table of Contents
Samba-3 は NT4 式ドメインの信頼関係をサポートします。NT4 式ドメインから Samba-3 に移行したいけれども、Active Directory や LDAP ベースの認証バックエンドを採用したくない という多くのサイトが使用したいと思う機能です。このセクションでは信頼関係に関する背景情報と 信頼関係の作成方法を説明します。Samba-3 は NT4 を信頼することができ (その逆も可)、また Samba 対 Samba の信頼を作成することも可能です。
Samab-3 は Samba 対 Samba 及び Samba 対 MS Windows NT4 式の信頼関係に参加することができます。 これは Samba が MS Windows NT4 と似た拡張性を持つことを意味します。
Samaba-3 は LDAP のような拡張性のあるバックエンド認証データベースと共に動作でき、 プライマリ及びバックアップ・ドメイン管理モードで動作できますから、 管理者はドメイン間信頼の使用に代わる選択肢を考慮するべきです。 なぜなら、この機能はその動作原理からして、本質的に脆弱なものだからです。 このことこそが、Microsoft Active Directory が開発され採用される主な理由でもあります。
MS Windows NT3/4 タイプのセキュリティ・ドメインは、階層のないセキュリティ構造を採用しています。 この構造の制約が、大規模な組織では MS Windows ネットワークの拡張性に影響を与えることは よく知られています。さらに、この設計の結果であるフラットなネームスペースは大規模で多様性に 富む組織における管理責務の代行に多大な影響を及ぼします。
Microsoft は、古いテクノロジーの制約を回避するために、Active Directory Service (ADS) を、 Kerberos 及び LDAP をベースとして開発しました。しかし全ての組織が ADS を採用する準備ができ、 その意思があるわけではありません。小規模の組織にとっては古い NT-4 式の ドメイン・セキュリティで充分です。また、ADS を採用するために面倒な変更作業を行うことを 望まない保守的なユーザーも残っています。
MS Windows NT で、Microsoft は一つのドメインのユーザーが別のドメインのアクセス権や他の権限を 付与されるような機構を実現するため、多様なセキュリティ・ドメインの存在を可能にする機能を導入しました。 この機能を 信頼 (Trusts) という言葉で言い表します。具体的には、 一つのドメインが別のドメインのユーザーを 信頼する ということです。 あるドメインのユーザーが別のセキュリティ・ドメインのユーザーとなれるとき、 そのようなドメインを信頼される (trusted) ドメインといいます。そのようなユーザーに権利や権限を 与えた方のドメインは信頼する (trusting) ドメインといいます。NT3.x/4.0 では信頼関係は一方向のみです。 そのため双方のドメインのユーザーが他方のドメインで権利・権限を持とうとする場合には、 それぞれの方向に一つずつ、二つの信頼関係を設定する必要があります。
NT4 式の MS セキュリティ・ドメインでは、全ての信頼は非推移的です。この意味は、 例えば三つのドメインがあり (仮に赤、白、青とします)、その赤と白が信頼関係を持ち、 また白と青が信頼関係を持つとします。この場合、赤と青のドメインの間に暗黙に了解された信頼関係を 持つわけではありません。関係は明示的でなければならず、推移的ではありません。
MS Windows 2000 から登場した新たな ADS セキュリティの文脈では、信頼関係はデフォルトで 双方向になっています。また、全ての ADS ドメイン間の信頼は推移的です。 上の赤、白、青ドメインの例では、Windows 2000 及び ADS を使用する場合、 赤と青ドメインは互いに信頼できます。これは ADS ドメインの本質的な特長です。 Samba-3 は MS Windows NT4 式のドメイン間信頼機能を実装し、MS Windows NT4 式ドメインと 類似した方法で、MS Windows 200x ADS セキュリティ・ドメインとの相互運用を実現しています。
ドメイン間信頼関係を作成するには二つのステップがあります。双方向の信頼関係を有効にするためには、 双方のドメイン管理者が相手のドメインのために信頼アカウントを作成し、セキュリティに関する信用情報を 確認する際に使用できるようにしなければなりません。
MS Windows NT4 では、全てのドメインの信頼関係はドメイン・ユーザー・マネジャーを使って設定します。 これはメニューバーのドメイン・ユーザー・マネジャー・ポリシーのエントリーから行います。
メニューから を選択します。 と記された低い方のボックスの隣に二つのボタンがあります。 と です。 ボタンは、 あなたのドメイン内のユーザーにアクセス権限を付与することができるリモートドメイン名を入力する パネルを開きます。また、信頼するドメインが信頼されるドメインのユーザーを認証するときに使用する、 信頼関係のパスワードも入力する必要があります。パスワードは (標準的な確認の手続きとして) 二度入力しなければなりません。信頼関係は、もう一方のドメイン (信頼するドメイン) が信頼されるドメインと適切に接続された場合 のみ作動します。信頼関係を完成するためには、管理者はまず、ドメイン・ユーザー・マネジャーを起動し、 メニューから を選択し、それから を選択し、 と記されたボックスの横の ボタンをクリックします。パネルが開いたらリモートドメイン名とパスワードを入力します。
双方向の信頼関係は二つの一方向の信頼がそれぞれ互いの方向に作成されることで築かれます。二つの MS Windows NT4 ドメイン間で一方向の信頼が確立されている場合 (仮に DomA と DomB とします)、 次の機能が可能になります。
DomA は DomBを 信頼します (DomB への信頼接続を完成します)。
DomA が 信頼する ドメインです。
DomB が 信頼される ドメインです (信頼アカウントの起点です)。
DomB のユーザーは DomA のリソースにアクセスすることができます。
DomA のユーザーは DomB のリソースにアクセスすることはできません。
DomB のグローバル・グループは DomA で使用できます。
DomA のグローバル・グループは DomB では使用できません。
DomB は DomA のクライアント・ワークステーションのログオン・ダイアログ・ボックスに表示されます。
DomA は DomB のクライアント・ワークステーションのログオン・ダイアログ・ボックスに表示されません。
信頼するドメインのユーザー/グループは信頼されるドメインへの権限、許可、アクセスは与えられません。
信頼するドメインは信頼されるドメインにアクセスしたり (ユーザー/グローバル・グループの) アカウントを使用することができます。
信頼されるドメインの管理者は信頼するドメイン内で管理権限を付与されます。
信頼されるドメインのユーザーは信頼するドメインで権利や特権を付与されます。
信頼されるドメインのグローバル・グループは信頼するドメインで権利や許可を与えられます。
信頼されるドメインのグローバル・グループはMS Windowsドメイン・メンバー・マシンの ローカル・グループのメンバーになることができます。
ここでは、Samba サーバーがドメイン間の信頼関係に参加できるようにするための設定方法を、 簡潔に紹介します。Samba における信頼関係のサポートは初期段階なので、正しく機能しないことが あっても驚かないで下さい。
下記の手順説明では、信頼関係の相手先のドメインは、Windows NT4 サーバーで管理されていると 想定します。しかし、リモート側は Samba-3 ドメインであっても構いません。 この説明書を読み終わるころには明らかになることですが、以下に書かれている説明のうち、 Samba に特有の部分のみを合わせると、純粋な Samba 環境におけるドメイン信頼の構築の説明となる、 ということです。
Samba PDC を、信頼関係のある二者のうち信頼される側に設定するためには、まず信頼する側の ドメインのための特別なアカウントを作成する必要があります。そのためには smbpasswd ユーティリティを使います。信頼されるドメイン・アカウントを 作成するのは信頼されるマシン・アカウントを作成するのに似ています。仮にドメイン名を SAMBA とし、リモートドメインを RUMBA とします。 はじめのステップは好きなシェルからこのコマンドを出すことです。
root# smbpasswd -a -i rumba New SMB password: XXXXXXXX Retype SMB password: XXXXXXXX Added user rumba$
-a はパスワード・データベースの中に新規のアカウントを追加することを意味し、 -i は “このアカウントをドメイン間の信頼フラッグ付きで作成せよ” という意味です。
このアカウント名は “rumba$” (リモートドメインの名前) です。 このステップが失敗した場合、信頼アカウントがシステムのパスワード・データベース (/etc/passwd に追加されたか確認して下さい。もし追加されていなければ、 手動で追加し、上のステップを再度行って下さい。
このコマンドを実行すると、そのアカウントのパスワードの入力を求められます。 ここでは任意のパスワードを使用できますが、Windows NT ではアカウント作成後 7 日間は パスワードを変更できないので、注意して下さい。コマンドが成功裡に実行されたら、 新しいアカウントのエントリーを、(ご使用の設定の標準的な方法で) 見ることができますので、 アカウント名が本当に RUMBA$ で、フラッグ・フィールドに “I” が設定されているか 確認します。この信頼の設定を完成するために、次は Windows NT サーバーの方から信頼を設定します。
ドメイン・ユーザー・マネジャー を開き、 メニューから 信頼関係 を選択します。そして という信頼されるドメインの一覧を表示するボックスの隣の ボタンをクリックします。信頼されるドメインの名前と信頼関係のパスワードを聞かれますから、 リモートドメインの名前である「SAMBA」と入力し、アカウント作成時に使ったパスワードを入力します。 をクリックします。 全て問題なく進んだら SAMBA との信頼関係を確立しました というメッセージが表示されます。
ここでは作業の順番が逆になります。今回も、Samba PDC に管理されるドメインを「SAMBA」とし、 NT が管理するドメインを「RUMBA」とします。
一番初めのステップは RUMBA の PDC に SAMBA ドメインのアカウントを追加します。
ドメイン・ユーザー・マネジャー を起動し、メニューから 、 を選択します。 次に のボックスの隣の ボタンを押し、信頼されるドメイン名 SAMBA と信頼関係を確立するために使用するパスワードを 入力します。
パスワードは任意に選択できます。Samba サーバーでは、いつでも容易にパスワードを 変更することができます。パスワードを確定するとアカウントは準備完了です。 次は Samba の番です。
root としてログオンし、好きなシェルを使って、次のコマンドを出します。
root# net rpc trustdom establish rumba
Windows NT4 サーバーのボックスで入力したばかりのパスワードを聞かれます。時々 NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT というエラーメッセージが 現れますが、問題ではなく無視して構いません。これは入力したパスワードが正しく、 このアカウントは普通接続ではなくドメイン間接続のための準備ができていると NT サーバーが言っている、という意味です。その後、(大規模ネットワークの場合は特に) しばらく時間がかかるかもしれませんが我慢して下さい。しばらくすると Success というメッセージが表示されます。 おめでとうございます! これで信頼関係が成立しました。
secrets.tdb ファイルに書き込み権限がなければならないので、 上記のコマンドは root として実行して下さい。
ドメイン・ユーザー・マネジャー はWindows 2000 にはありませんが、 ミックスモードで稼動する Windows 2000 ドメイン・コントローラーを信頼するサーバーとして、 NT4 式の信頼関係を設定することは可能です。また Samba が Windows 2000 サーバーを信頼することも できるはずですが、この領域ではさらにテストが必要です。
Samba サーバーで上記の通りドメイン間信頼アカウントを 作成 したら、Samba ユーザーにアクセスさせたいリソースのあるドメインの AD コントローラー上の Active Directory Domains and Trusts を開きます。 NT4 式の信頼関係は推移的ではないので、あなたのドメインのユーザーが、AD 内の複数の ミックスモードのドメインにアクセスできるようにしたい場合は、一つ一つのドメインについて 上の手順を繰り返さなければならない、ということを覚えておいてください。 Active Directory Domains and Trusts を開いた状態で、Samba ドメインを信頼する Active Directory ドメインの名前を右クリックし、 を選択し、Trusts タブを クリックします。パネルの上部にこのドメインによって信頼されるドメインを一覧する Domains trusted by this domain: と記されたボックス、その隣に Add... ボタンがあります。このボタンを押すと、NT4 のように、 信頼されるドメインの名前と関係パスワードを聞かれます。「OK」を押してしばらくすると、 Active Directoryから、信頼されるドメインが追加されて信頼関係が 確認された という回答が返ってきます。これで、あなたのシステムの Samba ユーザーに、AD ドメインのリソースへのアクセス権限が付与されました。
ドメイン間信頼関係は、不安定な、又は頻繁にダウンするようなネットワークで試みるべき ではありません。ネットワークの安定性と整合性は、分散型ネットワークにおけるドメイン間 信頼関係のための必須要件です。
信頼される Windows 200x ドメインのマシンから信頼する Samba ドメインの Windows 200x メンバーをブラウズしようとすると、次のエラーが出ます:
システムはセキュリティを侵害しようとするような行為を検出しました。 認証を受けるサーバーに連絡が取れることを確認してください。
接続しようとしているサーバーのイベントログに、下位レベルのドメインのメンバーであるために グループポリシーが適用されない、というエントリーがあります。
回答: 問題のマシンのコンピュータ・アカウントが Windows 200x ドメインにあり、それが無効化されている場合にこの問題が起こり得ます。 コンピュータ・アカウントがない (削除されたか、もともと存在しない) か、そのアカウントを いじっていない (つまり、そのアカウントを他のドメインに参加させただけという) 場合は、 問題は起こらないようです。デフォルトでは、ドメイン (Windows 200x ドメイン) から退去する際、 コンピュータは自動的にドメイン内のコンピュータ・アカウントを無効にしようとします。 アカウントを無効化する権限をもつアカウントととして操作していた時にドメインからマシンが 退去した場合、アカウントの無効化が実行されます。そうでなければ実行されません。
smbldap-useradd.pl スクリプトを使用して信頼ドメインアカウントを 作成しようとすると失敗します。LDAP データベースに作成されたアカウントのフラッグの フィールドは [W ] のようになっており、本来 ドメイン間信頼に必要である [I ] ではありません。
回答 簡単な答えがあります。 以下を実行してマシン・アカウントを作成します:
root# smbldap-useradd.pl -w domain_name
次に、信頼アカウントのパスワードを設定します:
root# smbldap-passwd.pl domain_name\$
テキストエディタを使用して、以下のようなファイルを作成します:
dn: uid=domain_name$,ou=People,dc={your-domain},dc={your-top-level-domain} changetype: modify sambaAcctFlags: [I ]
以下の操作でテキストファイルを LDAP データベースに適用します。
root# ldapmodify -x -h localhost \ -D "cn=Manager,dc={your-domain},dc={your-top-level-domain}" \ -W -f /path-to/foobar
NT4 のドメイン・ユーザー・マネージャーより信頼アカウントを作成した後、 次のコマンドを実行します。
root# net rpc trustdom establish domain_name
この機能は Samba-3 と NT4 ドメインで動きますし、Samba-3 とミックスモードの Windows 200x ADS でも動作します。samba と NT の両方の DC が同じ WINS サーバーを 使用していなければならず、そうでなければ信頼関係は動作しません。