Table of Contents
Samba-3はNT4形式のドメイン信頼関係をサポートする。NT4形式のドメインからSamba-3に移行したいが、Active Directory やLDAPベースの認証バックエンドを採用したくないという多くのサイトが使用したいと思う機能である。この章では、信頼関係に関する背景情報と信頼関係の作成方法を説明する。Samba-3はNT4を信頼することができ(その逆も可)、またSamba対Sambaの信頼を作成することも可能である。
ドメイン間の信頼関係を使う場合、winbind
を使うことが必要であるので、winbindd
が動いていなければならない。このモードにおけるwinbindの動作は、smb.conf
ファイル中の有効なUIDレンジと有効なGIDレンジの指定に依存する。これらは以下のように指定する:
idmap uid = 10000-20000 |
idmap gid = 10000-20000 |
指定されたレンジの値はホストOSで使っている値とPOSIXユーザアカウント用のpassdbバックエンドで使っている値を上書きしてはならない。最大値はホストOSによって許可されている上限の値で制限される。これはUNIXカーネルで制限されるパラメータである。Linux kernel2.6ベースのシステムは最大値として4294967295(符号なし32ビット値)である。
Samba-3はSambaとMicrosoft Windows NT4形式と同じようにSamba間の信頼関係に参加できる。これは、Microsoft Windows NT4と同様な拡張性をSambaに付与する。
Samaba-3はLDAPのような拡張性のあるバックエンド認証データベースと共に動作でき、プライマリ及びバックアップドメイン管理モードで動作できるので、管理者はドメイン間の信頼関係を使用する代わりの選択肢を考慮するべきである。なぜならば、この機能はその動作原理からして、本質的に脆弱なものだからである。このことこそが、Microsoft Active Directory が開発され採用される主な理由でもある。
MS Windows NT3/4形式のセキュリティドメインは、階層がないセキュリティ構造を採用している。この構造の制約が、大規模な組織では Microsoft Windows ネットワークの拡張性に影響を与えることはよく知られている。さらに、この設計の結果であるフラットな名前空間は、大規模で多様性に富む組織における管理責務の代行に多大な影響を及ぼす。
Microsoft は、古いテクノロジーの制約を回避するために、Active Directory Service(ADS)を、Kerberos及びLDAPをベースとして開発した。しかし全ての組織が ADSを採用する準備ができ、その意思があるわけではない。小規模の組織にとっては古い NT形式のドメインセキュリティで充分である。また、ADS を採用するために面倒な変更作業を行うことを望まない保守的なユーザも残っている。
Microsoft Windows NTで、Microsoft はあるドメインのユーザが、別のドメインのアクセス権や他の権限を付与されるような機構を実現するため、多様なセキュリティドメインの存在を可能にする機能を導入した。この機能を信頼(Trusts)という言葉で言い表わす。具体的には、あるドメインが別のドメインのユーザを信頼するということである。あるドメインのユーザが別のセキュリティドメインのユーザになれる時、そのようなドメインを信頼される(trusted)ドメインと言う。そのようなユーザに権利や権限を与えた方のドメインは信頼する(trusting) ドメインと言う。NT3.x/4.0 では信頼関係は一方向のみである。そのため双方のドメインのユーザが他方のドメインで権限と権利を持とうとする場合には、それぞれの方向に一つずつ、二つの信頼関係を設定する必要がある。
NT4形式のMicrosoft セキュリティドメインでは、全ての信頼は非推移的である。この意味は、例えば三つのドメインがあり(仮に赤、白、青とする)、その赤と白が信頼関係を持ち、また白と青が信頼関係を持つとする。この場合、赤と青のドメインの間に暗黙に了解された信頼関係を持つわけではない。関係は明示的でなければならず、推移的ではない。
Microsoft Windows 2000から登場した新たなADSセキュリティの方式では、信頼関係は既定値で双方向になっている。また、全てのADSドメイン間の信頼は推移的である。上の赤、白、青ドメインの例では、Windows 2000及びADSを使用する場合、赤と青ドメインは互いに信頼できる。これはADSドメインの本質的な特長である。Samba-3 はMicrosoft Windows NT4方式のドメイン間信頼機能を実装し、Microsoft Windows NT4方式のドメインと類似した方法で、Microsoft Windows 200x ADS セキュリティドメインとの相互運用を実現している。
ドメイン間信頼関係を作成するには二つのステップがある。双方向の信頼関係を有効にするためには、双方のドメイン管理者が相手のドメインのために信頼アカウントを作成し、セキュリティに関する信用情報を確認する際に使用できるようにしなければならない。
Microsoft Windows NT4では、全てのドメインの信頼関係はドメインユーザーマネジャを使って設定する。これは、メニューバーのドメインユーザーマネジャーポリシーのエントリから行う。 メニューから を選択する。 と記された低い方のボックスの隣に二つのボタンがある。 と である。 ボタンは、自ドメイン内のユーザにアクセス権限を付与することができるリモートドメイン名を入力するパネルを開く。また、信頼するドメインが信頼されるドメインのユーザを認証するときに使用する、信頼関係のパスワードも入力する必要がある。パスワードは(標準的な確認の手続きとして)二度入力しなければならない。
信頼関係は、もう一方のドメイン(信頼するドメイン)が信頼されるドメインと適切に接続された場合のみ動作する。信頼関係を完成するためには、管理者はまず、ドメインユーザーマネジャを起動し、メニューからポリシーを選択し、それから信頼関係を選択し、信頼される側のドメインと記されたボックスの横の ボタンをクリックする。パネルが開いたらリモートドメイン名とパスワードを入力する。
双方向の信頼関係は、二つの方方向の信頼がそれぞれ互いの方向に作成されることで築かれる。二つのMicrosoft Windows NT4ドメイン間で片方向の信頼が確立されている場合(仮にDomAとDomBとする)、次の機能が可能になる:
DomA(DomB への信頼接続を完了する)はDomBを信頼する
。
DomAが信頼する
ドメインである。
DomBが信頼される
ドメインである(信頼アカウントの起点)。
DomB のユーザーは DomA のリソースにアクセスすることができる。
DomA のユーザーは DomB のリソースにアクセスすることはできない。
DomB のグローバル・グループは DomA で使用できる。
DomA のグローバル・グループは DomB では使用できない。
DomB は DomA のクライアントワークステーションのログオンダイアログボックスに表示される。
DomA は DomB のクライアントワークステーションのログオンダイアログボックスに表示されない。
信頼するドメインのユーザー/グループは信頼されるドメインへの権限、許可、 アクセスは与えられない。
信頼するドメインは信頼されるドメインにアクセスしたり(ユーザ/グローバルグループの) アカウントを使用することができる。
信頼されるドメインの管理者は信頼するドメイン内で管理権限を付与される。
信頼されるドメインのユーザは信頼するドメインで権利や特権を付与される。
信頼されるドメインのグローバルグループは信頼するドメインで権利や許可を 与えられる。
信頼されるドメインのグローバルグループはMicrosoft 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を入力し、アカウント作成時に使用したパスワードを入力する。 をクリックし、すべてが何事もなくうまくいくならば、信頼関係が確立しました
(訳注:英文ではTrusted domain relationship successfully established
)が表示される。
ここでは作業の順番が逆になる。今回も、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ドメインコントローラを、信頼するサーバとして、NT4形式の信頼関係を設定することは可能である。また、SambaがWindows 2000サーバを信頼することもできるはずだが、この領域ではさらにテストが必要である。
前述のように、Sambaサーバ上でのドメイン間信頼関係の作成で、信頼関係を作成したら、SambaユーザにアクセスさせたいリソースのあるドメインのADコントローラ上で、Active Directoryドメインと信頼関係ダイアログボックスを開く。NT4形式の信頼関係は推移的ではないので、自ドメインのユーザが、AD内の複数のミックスモードのドメインにアクセスできるようにしたい場合は、各ドメインについて上記の手順を繰り返さなければならない、ということを忘れないこと。Active Directoryドメインと信頼関係を開き、Samba ドメインを信頼する Active Directory ドメインの名前を右クリックし、 を選択し、信頼タブをクリックする。パネルの上部にこのドメインによって信頼されるドメイン:という名前の付いた一覧が表示され、その隣に追加...ボタンがある。このボタンをクリックすると、NT4のように、信頼されるドメインの名前と関係パスワードを聞かれる。OKをクリックし、しばらくすると、Active Directoryから、信頼されるドメインが追加されて信頼関係が確認された
というメッセージが表示される。これで、自システムのSamba ユーザに、ADドメインのリソースへのアクセス権限が付与された。
ドメイン間の信頼関係は、不安定な、又は頻繁にダウンするようなネットワークで試みるべきではない。ネットワークの安定性と整合性は、分散型ネットワークにおけるドメイン間の信頼関係のための必須要件である。
信頼されるWindows200xドメインのマシンから信頼するSambaドメインのWindows200xメンバをブラウズしようとすると、次のエラーが出
システムはセキュリティを侵害しようとするような行為を検出しました。認証を受けるサーバに連絡が取れることを確認してください。
接続しようとしているサーバのイベントログに、下位レベルのドメインのメンバであるためにグループポリシーが適用されない、というエントリがある。
問題のマシンのコンピュータアカウントが Windows200xドメインにあり、それが無効化されている場合にこの問題が起こり得る。コンピュータアカウントがない(削除されたか、もともと存在しない)か、そのアカウントを有効になっていない(すなわち、そのアカウントを他のドメインに参加させただけという)場合は、問題は起こらないようである。既定値では、ドメイン(Windows 200xドメイン) から離脱する場合、コンピュータは自動的にドメイン内のコンピュータ・アカウントを無効にしようとする。アカウントを無効化する権限をもつアカウントととして操作していた時にドメインからマシンを離脱した場合、アカウントの無効化が実行される。そうでなければ実行されない。
ドメイン間の信頼関係を設定するために、信頼アカウントを作成するために、smbldap-useradd
スクリプトを使うと、信頼関係の設定処理は失敗する。LDAPデータベース中に作成されたアカウントはアカウントフラグとして[W ]
となっていて、ドメイン間の信頼関係が動作する時に必要である[I ]
がない。
これに対する簡単な解決方法がある。以下のようにして、マシンアカウントを作成する:
root#
smbldap-useradd -w domain_name
次に、信頼アカウントのパスワードを設定する:
root#
smbldap-passwd domain_name\$
テキストエディタを使って以下のファイルを作成する:
dn: uid=domain_name$,ou=People,dc={your-domain},dc={your-top-level-domain}changetype: modifysambaAcctFlags: [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 サーバーを使用していなければならず、そうでなければ信頼関係は動作しない。