目次
このセクションを読み始める前に、ドメイン制御 中で説明されている Samba ドメインコントローラーの設定に問題がないようにして おくこと。
この章は、説明するのが最も困難な章の一つである。何を書いても、誰かがまだ 実現できていない項目、あるいはまったく異なるアプローチを使った方が遥かに 効果的に実現できる項目について、実現されたはずだと期待して Samba チームに 問い合わせてくることを防止することはできないと思われる。もしこの章で説明 されているはずなのに、いくら読んでも言及されない事項というのがある場合は、 要件あるいは質問内容を明確に書いて John H. Terpstra まで電子メールで問い合わせてほしい。
Samba は別の Samba プライマリドメインコントローラー (PDC) に対するバックアップ ドメインコントローラー (BDC) として機能することができる。Samba PDCは、LDAP アカウントバックエンドとともに運用することができる。LDAP バックエンドは、 共用のマスターLDAPサーバーかスレーブサーバーのどちらでも使える。スレーブ LDAP サーバー を使用する利点は、マスターがダウンしている時でもクライアントがネットワークに ログオンできるということである。これにより Samba が高いレベルの拡張性を持つ ことになり、大規模な組織のための効果的なソリューションとなり得る。PDC に LDAP スレーブサーバーを使用する場合、マスターの継続的な可用性を確保する必要がある。 悪い時にスレーブ側から見てマスターがダウンしていると、安定性の問題や運用上の 問題となる。
Samba BDC を LDAP でないバックエンドで運用することは不可能なので、 バックエンドが何らかの形で「双方向の」伝達を許容し、BDC 側からマスター への変更が可能であるようにしなければならない。現段階でこれをできるのは LDAP のみである。PDC が、そのプライマリとして LDAP マスターサーバーを使うことが 好ましい間、BDC はスレーブ LDAP サーバーを使うことが出来る。
ドメインコントローラーは、ネットワーク上のワークステーションからのログオン 要求に答えることが出来るマシンである。Microsoft LanManagerとIBM LanServer はこの機能を提供していた初期のプロダクトの2つである。その技術は、LanMan NetLogonサービスとして知られるようになった。
Microsoft Windows NT3.10 の最初のリリースで、新しいドメイン制御形式が サポートされ、同時に機能を拡張した新しい形のネットワークログオンサービスが サポートされることになった。このサービスは、NT NetLogon サービスとして知ら れている。このサービスの性質は、 Microsoft Windows NT の進化に伴って変更され、 今日では洗練された各種技術の上に広範で複雑な各種サービスを実現している。
NT4/200x/XP Professionalワークステーションにユーザーがログオンするときは いつでも、ワークステーションはユーザーが入力したユーザー名/パスワードペア が正しいかを検証するためにドメインコントローラー(認証サーバー)に接続する。 もしも入力された情報がドメイン制御データベース(SAM、すなわちセキュリティ アカウントマネージャデータベース)に格納されているアカウント情報と 一致しない場合、認証要求を出したワークステーションに一連のエラー コードを返す。
ユーザー名/パスワードペアが検証されたとき、ドメインコントローラー(認証サーバー) はそのドメインに対するユーザーとマシンアカウントデータベース中の、そのユーザー に関係するアカウント情報の完全な項目一覧を返す。この情報はそのユーザーに対する 完全なネットワークアクセスプロファイルを含むが、ユーザーのデスクトッププロファイル に特有の情報は含まないか、あるいはそれに関して、ユーザーが属してもよいグループ のためのすべてのデスクトッププロファイルも含まれない。また、それには、 パスワード満了時間、パスワードの一意性制御情報、ネットワークアクセス時間制限 情報、アカウント検証情報、ユーザーがアクセスできるネットワークからのマシン名 や空にその他の情報が含まれている。すべての情報はMicrosoft Windows NT(3.10, 3.50, 3.51, 4.0)バージョン中のSAM中に格納される。
ドメインコントローラー上のアカウント情報(ユーザーとマシン)は2つのファイルに格納
される。そのうちの1つにはセキュリティ情報を含み、もう1つはSAMである。それらは
%SystemRoot%\System32\config
ディレクトリ中に同名の
ファイルに格納される。これは通常C:\WinNT\System32\config
に変換される。ネットワーク上にBDCがあるとき、この2つのファイルがSAMデータベース
の複製に関与するファイルである。
BDCをインストールすることが好ましい状況が2つある:
真のWindows NT4環境中でのPDCとBDCのやりとりについてここで触れておく。PDCは SAMのマスターコピーを持っている。管理者がPDCの持つローカルネットワーク上に物理的に 存在するユーザーアカウントデータベースに変更を加えると、この変更内容は、SAMの マスターコピーのPDC上の記録に直接行われる。 このような情報更新が別のオフィスで行われると、この変更内容はローカルBDC 上の差分ファイルに格納される。BDCはその後SAM同期を行うプロセスを開始するために、 PDCに対してトリガを送る。PDCは当該ドメインの全BDCに接続し、全BDCが更新情報を入手し、 それぞれのSAMのコピーに最新の情報を反映させるようにトリガを出す。
Samba は真の SAM 複製に参加できないので、Microsoft Windows NT4で 使われているのと同じプロトコルを使用することが出来ない。 Samba BDC は SAM 更新差分ファイルを作成できない。BDC が持っている差分 ファイルから SAM の同期をとるために、PDC(NT4またはSamba) 間とやりとりもしない。
Samba はMicrosoft Windows NT4 BDC としては動作できず、Samba は Microsoft Windows NT4 BDC に対する PDC として正しく動作できない。 Samba と Microsoft Windows NT4 はそれぞれのタイプの PDC への BDC として 機能することは出来る。
BDCはネットワークログオン要求とユーザー認証が出来るので、 読み出し専用のSAMを保持していると言える。 BDCはこのサービスを提供し続けることができる。特に、PDCへのWANの リンクがダウンしている場合などに有効である。BDCは、ドメインの セキュリティとネットワークの整合性の維持に大変重要な役割を果たす。
NT4のPDCを稼働停止しなければならない場合や故障した場合、NT4 のBDCの
一つをPDCに昇格することができる。このようなことを NT4 PDCがオンライン
中に行うと、NT4 PDCは自動的に NT4 BDCに降格する。これはドメインコントローラー
の管理の中で特に重要な一面である。昇格および降格を実行するのに使用される
ツールはドメインサーバーマネジャーである。ここで注意しなければならない
ことは、Samba の BDCは同様の方法で格上げすることはできないということである。
これは、そのような Samba の再設定を行うには smb.conf
ファイルの変更が必要に
なるからである。作業は、smb.conf
ファイルの手動での変更と、Samba ネットワーク
サービスに関連するものの再起動をおこなうだけでよい。
バージョン2.2の最初からSambaは公式に、Windows NT4、2003とXP Professional
を含む現行Windowsクライアントすべてでドメインログオン機能を公式にサポート
している。PDCを有効にしたSambaではsmb.conf
中の[global]
セクション内にいくつかのパラメーターを設定しなければならない。最低限
必要な設定の例はBDCと共に使う、PDC上にLDAP
サーバーがあるPDCのための最低限のsmb.conf の節
を参照のこと。
[homes]
と[netlogon]
共有などの項目や、プロファイルパス、ユーザーのホームドライブや
その他を設定するための設定も一緒に行う必要がある。それらはこの章では
触れない。詳細な情報については、ドメイン制御
を参照のこと。PDC設定のための特定の推奨パターンは
ドメイン制御の章を参照のこと。また別に、
地域の、あるいはオンライン書店から入手できる「Samba-3 by Example」という
書籍(book)
中にOpenLDAPとSambaのネットワーク動作設定例が完全に記述されている。
マスターとスレーブLDAPサーバーを設定する時、マスターLDPサーバーをPDCに、スレーブLDAPサーバー をBDCで使うことが推奨される。スレーブLDAPサーバーを使うことは不可欠ではないが、 サービスの冗長性を提供するために多くの管理者はそのことを好んでいる。もちろん、 1つ以上のBDCがどののスレーブLDAPサーバーを使ってもかまわない。また、 ネットワーク全体で1つのLDAPサーバーを使うことも可能である。
スレーブLDAPサーバーサーバーを持つマスターLDAPサーバーを設定する時、このことを
/etc/openldap/slapd.conf
ファイル中に設定する
ことを忘れないように。サーバー証明書のDNは、サーバーの名づけるためにCN属性を
使わなければならず、CNはサーバーの完全に的確性のあるドメイン名を含んでいなければ
ならないことに注意。証明書の subjectAltNameエクステンション中に追加の別名や
ワイルドカードを持っていても構わない。サーバー証明書についてのより詳細
な情報はRFC2830を参照のこと。
この文書の範囲内にはうまく一致しないが、LDAPをインストールすることは、LDAPを
有効にしているSamba操作の基本である。トランスポートレイヤのセキュリティ
(TLS)を有効にしてOpenLDAPを使う場合、/etc/ssl/certs/slapd.pem
中のマシン名は/etc/openldap/sldap.conf
と同じものである
必要がある。Red Hat Linuxスタートアップスクリプトはホスト名として、
「localhost.localdomain」としたslapd.pem
ファイルを生成する。これだと、正しいホスト名で証明書が再作成されない限り、
スレーブLDAPサーバー(すなわちSamba BDC)からLDAPサーバーにアクセスできない。
LDAPスレーブサーバーを使うようにSamba PDCをインストールしてはいけない。ドメインへ クライアントマシンを参加する時、LDAPデータベース中へのマシンアカウントの変更がマスター LDAPサーバー上で行わなければならないという理由で、この設定ではうまくいかない。 PDCが出した問い合わせがスレーブサーバーに複製されるまで時間がかかりすぎる。そのため、 クライアントマシン上で、アカウントの証明書がセットアップできないというエラー メッセージが出る。LDAPサーバー上でマシンアカウントが作成されるが、パスワード欄は空となる。 残念なことに、いくつかのサイトはこのような設定を防げず、そのため、それらのサイトでは、 複製に追いつくために、Sambaの処理を十分に遅くするための、 ldap replication sleepパラメーターを検討すべきである。 これは、その場しのぎの解決方法であり、管理者が何らかのスクリプト(たとえば、 add machine scriptのようなもの)を使って手動で複製 しなければならない。
PDC/BDCとLDAPを使う、設定可能なパターンは以下の通り:
PDC+BDC -> 1つの集中LDAPサーバー。
PDC -> LDAP マスターサーバー、 BDC -> LDAPスレーブサーバー。
PDC -> LDAPマスター、第二のスレーブLDAPサーバーあり。
BDC -> LDAPマスター、第二のスレーブLDAPサーバーあり。
PDC -> マスター、第二のスレーブLDAPサーバーあり。
BDC -> スレーブ、第二のスレーブサーバーあり。
(セカンダリ)LDAPサーバーサーバーを持つためには、
smb.conf
に記述する複数LDAPサーバーの例
のように指定する。
Microsoft Windows 2000とActive Directoryのリリース以降、この情報は 複製可能で、管理コントロールの部分的あるいは全体を複製できるディレクトリ 中に格納される。Samba-4.0 はActive Directory内でドメインコントローラー になれ、また、Active Directoryサーバーにもなれる。これをどのようにやるかの 詳細については、 Samba 4.0 as an AD DC HOWTO を参照のこと。
ドメインMIDEARTH用のドメインコントローラーであるすべてのマシンは、 WINSサーバーかローカルネットワークに対するブロードキャストを使って NetBIOSグループ名MIDEARTH<1C>を登録しなければならない。 またPDCはWINSサーバーで一意のNetBIOS名MIDEARTH<1B>を登録する。 名前タイプ<1B>はドメインマスターブラウザー(DMB)のために通常予約ていて、 認証には通常何ら関係ないが、Microsoft ドメインの導入時はDMBがPDCと同じマシンであることが用件となる。
WINSサーバーを使っていないとき、名前登録はブロードキャストするだけで 十分なはずである。ネットワークブラウジング とDiscussionに、TCP/IPネットワーク プロトコル関連と、どのようにSMB/CIFS名を取り扱うかについてのより詳細な 情報があるので参照すること。
ドメインコントローラーを見つけるメカニズムは2つある:1つは NetBIOS over TCP/IPが有効なときに使われ、もう1つはTCP/IPネットワーク設定 で無効になっているときに使われるものである。
NetBIOS over TCP/IPが無効になっているとき、すべての名前解決は、 Active Directory通信技術のような、DNS、UDP上のブロードキャストを使う。 このタイプの環境では、すべてのマシンが適切なDNSエントリを持つことが必要である。 より詳細な情報はDNSとActive Directory を参照のこと。
ドメインMIDEARTH内のMicrosoft Windows NT4/200x/XP Professional ワークステーションがローカルユーザーを認証させたい場合、 MIDEARTHのドメインコントローラーを見つける必要がある。これは、グループ名 MIDEARTH<1C>に対するNetBIOS名前解決を行うことによって行われる。 ワークステーションは、問い合わせに返事を返すマシンの1つ1つがドメインコントローラーで あり、ログイン要求に答えることが出来ることを仮定している。セキュリティ ホールを造らないために、ワークステーションと選択されたドメインコントローラー はおのおのを認証する。その後、ワークステーションはユーザーの認証情報( ユーザー名/パスワードペア)を認証のためにローカルのドメインコントローラーに 送る。
realm quenya.org
中の
Microsoft Windows NT4/200x/XP Professional workstationが
ユーザーログオン認証をしたい場合、DNSサーバーに対して
_ldap._tcp.pdc._msdcs.quenya.org
レコードを
再度問い合わせすることでドメインコントローラー見つける。
この項目に対する関連したより詳細な情報は、
DNSとActive Directoryを参照のこと。
BDCの作成には最初にsmbdを動かす前にSamba サーバーを準備するため のいくつかのステップが要求される。
ldap admin dnの指定は必須である。
また、smbpasswd -w
を使って、mysecret
secrets.tdb
中にLDAP管理用パスワードを
設定しなければならない。
The ldap suffixパラメーターとldap idmap suffix
パラメーターはsmb.conf
ファイル中で指定しなければならない。
UNIXユーザーデータベースはPDCからBDCへ同期しなければならない。
これは、/etc/passwd
と
/etc/group
の両方がPDCからBDCに複製されなければ
ならないことを意味している。これは変更が発生した時点で、手動で
行うことが出来る。別のやり方として、PDCをNISマスターサーバーとして設定し、
BDCをNISスレーブサーバーとして設定する。BDCをNISクライアントとして設定
するのでは、PDCが止まっているときにそのユーザーデータベースにアクセス
出来ないので不十分である。NISはパスワード同期の唯一の手法というわけ
ではない。LDAPを使う解も同様に動作する。
SambaパスワードデータベースはPDCからBDCに向けて複製されねばならない。 解決方法は、各BDCに対してスレーブ LDAPサーバーを、PDCにマスターLDAPサーバーを設定することである。 rsyncを使う方法は、一定間隔毎にデータが複製されるという理由で、本質的に 欠陥がある。すべての瞬間に、現在のマシンとユーザーアカウントの正しい情報で BDCが操作できるという保証がない。このため、この方法では、首尾一貫しない セキュリティデータのために不連続なネットワークサービスへのアクセスによって ユーザーに不都合が生じる危険性がある。Windows ワークステーションが通常の 間隔でマシン信頼アカウントパスワードを更新(変更)することを心にとめて おかねばならず、管理者は通常それが起きていることを知らない。
POSIX(UNIXユーザーとグループ)アカウントとSambaSAMAccountデータ両方のために LDAPを使うと、すべてのアカウント変更情報が共有ディレクトリに書かれること を自動的に保証する。これは、LDAPがその要求に適合するため、アカウント情報の 同期のための、何らかの特別な動作が必要ないことを意味する。
netlogon共有はPDCからBDCに向けて複製されねばならない。これは、ログインスクリプト
が変更されるたびごとに手動で行うことができ、また、rsync
のような
ツールを使うことで、この共有中のディレクトリ構造を複製する、cron
ジョブを使うことで自動的に行える。netlogon共有内のファイルの複製に
rsync
を使うことは、ネットワークセキュリティに対して特段
問題になることはない。管理者が netlogon 共有に対するすべての変更を明示的に
行ないたいと考えている場合は、手作業で管理するために用いることも可能である。
最後に、ワークステーションがBDCを見つけなければならない。
これは、SambaをBDCになるための最低限の設定中にある
Samba smb.conf
ファイルの[global]
セクションのように設定
することで行える。
例5.3 BDCになるための最低限の設定
完全な、OpenLDAPとSambaを使うネットワーク設定の例の説明は、近所又はオンライン 書店で買える、「Samba-3 by Example」という 本 を参照のこと。
この設定はWINSサーバーに、MIDEARTH<1C>という名前のみをBDCによって 登録させる。これは、MIDEARTH<1C>というNetBIOSグループ名が、 複数のマシンが登録に使用することを意図した NetBIOS グループ名であることを 考えれば問題ではない。パラメーター domain master = noは、PDCのために 予約されている固有のNetBIOS名であるMIDEARTH<1B>をBDCが登録時に 使用させないことを確保する。
idmap backend
パラメーターが、
winbindd
ユーティリティをリダイレクトして、共有される
リポジトリ内にある、
UNIXアカウントに関するすべての、Windows SIDからUIDとGIDへの解決のために
LDAPサーバーデータベースを使用させる。
BDCはnss_ldap
ユーティリティとNSS経由の、ローカルでのUIDとGIDの
解決にも依存する。
Samba は新しい ID マッピング機能を導入した。その機能の特徴の1つは、
NTドメインのユーザーとグループ SID に関してユーザーとグループ ID を取り扱うやり方に、
より高い柔軟性を備えているということである。新しい機能の1つは、UNIX/Linuxの
UID と GID の値が、PDC、すべての BDC とすべてのドメインメンバーサーバー上で
一貫していることを明確に確保する。これを制御
するパラメーターは、idmap backend
である。その動作
に関連する詳細な情報は、smb.conf
マニュアルページを参照してほしい。
BDC上のみでidmap backend = ldap:ldap://master.quenya.org オプションを使用することは、PDC上でldapsamが使われている時に意味をなす。 LDAPベースのバックエンドのもう1つの目的は、(固有のpassdbバックエンドを持たない)ドメインメンバー がWindowsネットワークユーザーとグループを共通のUID/GIDに割り当てるためにwinbindd を使えるようにすることである。別の言い方をすると、一般的にこのオプションは、 BDCとドメインメンバーサーバー上で使うことを意図している。
ドメイン制御はSambaの新しい領域であるが、現在では参照可能なたくさんの事例がある。
更新情報は、それが有効になった時点で、Sambaの新規リリース情報か、
Samba Websiteで公開される。
SambaリリースパッケージのWHATSNEW.txt
を特に参照すること。
「Samba-3 by Example」という本には、よくテストされ、検証された
例が記述されている。これをSamba Webサイト上の
本
からコピーを入手することもできる。
この問題は、passdb(SAM)ファイルが中央のサーバーからコピーしていて、しかもローカルのBDC がPDCとして動作する時に発生する。これはローカルマシン信頼アカウントのパスワードを ローカルSAMへ更新を実行することで解決する。そのような更新は中央の サーバーにコピーは戻されない。新しいマシンアカウントのパスワードは、PDCからの SAMが再度コピーされたときに上書きされてしまう。その結果、起動時のドメインメンバー であるマシンの起動時に、そのパスワードがデータベース中と一致しないことになり、起動時の セキュリティチェックに失敗するため、このマシンはログオン要求が許可されず、 アカウント満了エラーが出ることになる。
解決策は、ldapsamバックエンドのようなより堅牢なpassdbバックエンドを使うことである。 すなわち、各BDCにスレーブLDAPサーバーを立て、PDCにマスターLDAPサーバーを 立てることである。
できない。オリジナルのNT4 SAM複製プロトコルはまだ完全に実装されていない。
SambaでBDCを使う利点はあるかと言われればもちろんある。しかし、それはSamba PDC あるいは Samba 4.0 Active Directoryドメインコントローラー に対してのみである。 BDCを使う理由は可用性という点である。もしもPDCがSambaだった 場合、2番目のSambaマシンは、PDCがダウンしている時にログオン要求 をサービスするように設定できる。