第3章 サーバータイプとセキュリティモード

Andrew Tridgell

Samba Team

Jelmer R. Vernooij

The Samba Team

John H. Terpstra

Samba Team

目次

機能と利便性
サーバータイプ
Sambaセキュリティモード
ユーザーレベルのセキュリティ
ドメインセキュリティモード(ユーザーレベルのセキュリティ)
ADS セキュリティモード(ユーザーレベルのセキュリティ)
パスワードの検査
共通のエラー
何がSambaをドメインコントローラーにするか?
何がSambaをドメインメンバーにするか?

この章では、Sambaで設定可能なサーバーのタイプに関する情報を提供する。Sambaへのマイグレーションか、 単に使いたいと思っているMicrosoft ネットワーク管理者は、Microsoft Windows管理者にわかりやすい 言葉で、Sambaの文脈においてその意味を知りたいはずである。これは、サーバーそれ自身をどのように 設定するかという詳細を得る前に重要なセキュリティモードの機能を定義すると同様に重要であること を意味する。

この章では、Microsoftサーバーとクライアントにどのように関連することと、Sambaのセキュリティモードが できることについての概要を提供する。

しばしば聞かれる質問は、なぜSambaを使うのかである。ほとんどの章は、機能と利便性 に注目した節を含んでいる。情報がこの質問に答える手助けを提供することを希望している。しかし、 我々は公正で合理的であることを望むので、すべての機能がSambaに対して好ましいとは限らないことを 警告する。利便性は競合他社の方にあるかもしれない。

機能と利便性

2人の人が汚れた道を歩いていたとき、1人が突然小さな赤い石を蹴飛ばした。それは 彼のつま先を傷つけ、サンダルに突き刺さった。彼は石を取り去り、苦しみと激怒 のあまりののしった。もう1人は石を見て、これはガーネットだ。これを 貴重な宝石に変えられる。そして、いつの日かこれはプリンセスを非常に幸福に するだろう!

この物語の教訓:2人の人は同じ石に対して2つの非常に異なった観点を持っていた。それと 同じかどうかにかかわらず、Sambaはその石と似ている。正しく扱えばとても優れた宝物に なるが、それに関わる時間を持つことが出来ないことを強いられるならば、それは非常に 不愉快なものになる。

SambaはUNIXサーバーとMicrosoft Windows 3.xクライアントのための相互運用性を提供する ためのプロジェクトとして開始された。それは、ささやかなスタートから大きく成長し、 いまや巨大システムに適合する機能を提供するようになった。しかし若干の問題点も ある。このような節ではその両方について触れる。

そのため、この章で説明されている機能の利点は何であろうか?

  • Samba はMicrosoft Windows NT4 ドメインコントローラーを置き換えられる。

  • Samba はネイティブの Microsoft Active Directory ドメインと同じように Microsoft Windows NT4スタイルのドメインとのすぐれた相互運用性を提供する。

  • Samba-3は完全なNT4スタイルのドメイン間の信頼関係を許可する。

  • SambaはMicrosoft Windows NT4ドメインコントローラーで出来るよりも より柔軟性のある認証機能を許可するセキュリティモードを持っている。

  • Samba は複数の同時アクセス可能なアカウントデータベースバックエンドを 使える(暗号化パスワードはWindowsネットワーキングのために固有となる形 式でアカウントデータベース中に格納される)。

  • アカウントデータベースバックエンドは複数の方法で複製され配布される。 これは、Samba が Microsoft Windows NT4 よりもより優れた柔軟性を与え、 多くの場合、Microsoft Windows 200xのActive Directory ドメインよりも かなり便利なユーティリティとなる。

サーバータイプ

Microsoftネットワークの管理者はしばしば3つの異なったタイプのサーバーを参照する:

  • ドメインコントローラー

    • Primary Domain Controller (PDC)

    • Backup Domain Controller (BDC)

    • ADS Domain Controller

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

    • Active Directory Domain Server

    • NT4 Style Domain Domain Server

  • スタンドアロンサーバー

ドメイン制御を扱っている節(ドメイン制御), バックアップのドメイン制御(バックアップドメイン制御),と ドメインメンバーシップ(ドメインメンバーシップ)は 3つのサーバーの役割のためのSambaの設定に言及する適切な情報を提供する。Sambaドメイン セキュリティの実装のための基礎を作るために、それらの章のそれぞれについて、精通 しておくことを強く推奨する。

スタンドアロンサーバーはアカウント管理が独立している。スタンドアロン サーバーとして設定することがサーバーにとって何を意味するかについてのより広い評価を 得るために、スタンドアロンサーバーを参照のこと。

Sambaセキュリティモード

この節では、Sambaのセキュリティモードの機能と目的について説明する。おのおののモードの ためにMicrosoft Windows クライアントを設定する方法と同様におのおののセキュリティモード についてどのようにSambaが実装しているかを正確に理解することは、ユーザーの不満と管理者の 心労をとても減らすだろう。

Microsoft Windows ネットワークはもともとServer Message Block(SMB)プロトコルと 呼ばれていたプロトコルを使っている。1996年あたりから、プロトコルは Common Internet Filesystem(CIFS)プロトコルとしてより知られるようになった。

Sambaではuser-levelのセキュリティに3つの実装がある。 総称して、Sambaでのセキュリティレベルの実装を セキュリティモードと呼ぶ。それらは、 user, domain, ADSモードとして知られている。 それらはこの章で解説されている。

clientという語は、たとえばWindowsワークステーション、Windows サーバー、あるいはその他の平凡なSMBまたはCIFSクライアントアプリケーション(たとえば smbclient)のような、SMB/CIFSサーバーによって提供されるサービスを 使うものすべてのエージェントを参照する。

ユーザーレベルのセキュリティ

それが簡単なため、最初にユーザーレベルのセキュリティを説明する。ユーザーレベルの セキュリティでは、クライアントはプロトコルネゴシエーションを伴って、直接 セッションセットアップ要求を送信する。この要求はユーザー名とパスワードを提供 する。サーバーはそのユーザー名/パスワードペアを受け取るか拒否するかのどちらか を行う。この段階で、サーバーはクライアントが結局接続しようと試みる共有が 何であるかを知るすべはなく、そのため、許可/拒否 について、以下の2つ以外をベースと出来ない:

  1. ユーザー名/パスワード ペア

  2. クライアントマシンの名前

もしもサーバーがユーザー名/パスワードペア認証を許可するならば、クライアントは、 その先パスワード指定なしで(tree connectionを使って) 共有をマウントできることを仮定する。クライアントは、すべてのアクセス権限が 最初のsession setup中で指定したユーザー名/パスワード認証 セットであることを仮定する。

複数のsession setup要求をクライアントが送信することも 可能である。サーバーが返信するとき、そのユーザー名/パスワードペアのための、 認証タグとして使うために、uidを送る。クライアントは この方法で複数の認証コンテキストを操作することが可能である(このことを行う アプリケーションの例としてはWinDDがある)。

Windowsネットワークユーザーアカウント名は大文字小文字に依存しない。すなわち、 アカウント名中の大文字小文字はすべて同一視されると言うことである。また、 大文字小文字の状態は保存されるが、大文字小文字の状態は関係ないということ である。Windows NT 3.10より前のWindowsとLanManagerシステムは、大文字小文字 の状態を保存する必要がない、大文字小文字を無視するパスワードを使っていた。 すべてのWindows NT ファミリシステムはパスワードについて、大文字小文字を保 存し、それを意識するように取り扱う。

設定例

ユーザーレベルのセキュリティを実現する smb.conf の例は以下の通り:

security = user

これはSamba-2.2.xの既定値である。

ドメインセキュリティモード(ユーザーレベルのセキュリティ)

ドメインセキュリティは、すべてのユーザーとグループアカウントを、中央の共有されている アカウントリポジトリに保存するメカニズムを提供する。中央のアカウントリポジトリは ドメイン(セキュリティ)コントローラー間で共有される。ドメインコントローラーとして振る舞う サーバーはドメインに対するセキュリティコンテキストに参加するすべてのマシンに、認証と 確認サービスを提供する。プライマリドメインコントローラー(PDC)はセキュリティアカウント データベースの完全性を管理するための責任を負うサーバーである。バックアップドメイン コントローラー(BDC)はドメインログオンと認証サービスのみを提供する。通常、BDCはPDCが 行うよりもより反応性がよいネットワークログオン要求を提供する。

Sambaがsecurity = domainモードで動作中の時、 Sambaサーバーはドメインセキュリティ信頼アカウント(マシンアカウント)を持ち、ドメイン コントローラーに対してすべての認証要求をパススルーする。別の言い方をすると、この設定は、 実際、それがドメインコントローラーとして振る舞う場合にも、Sambaサーバーをドメインメンバー サーバーにする。ドメインセキュリティに参加するすべてのマシンはセキュリティデータベース 中にマシンアカウントを持たなければならない。

ドメインセキュリティ環境ないで、セキュリティアーキテクチャの基盤は、ユーザーレベルの セキュリティを使う。ドメインメンバーであるマシンは開始時に認証を行わなければならない。 アカウントデータベース内にあるアカウントエントリの一部であるマシンアカウントは、 その名前がマシンのNetBIOS名であり、パスワードはランダムに生成され、ドメインコントローラー と他のマシンの両方に知られている。もしもマシンアカウントがセットアップ中に認証 されなければ、ユーザーは、それが認証できないため、そのマシンを使ってドメインにログオン できない。マシンアカウントはマシン信頼アカウントとして参照される。

ドメインメンバーの設定には以下の3つのパターンがある:

  1. プライマリドメインコントローラー(PDC) - ドメインに1つのみ。

  2. バックアップドメインコントローラー(BDC) - ドメインに複数配置可能。

  3. ドメインメンバーサーバー(DMS) - ドメインに複数配置可能。

それぞれについて別の節で解説する。まずはじめに、もっとも関心のある基本的なDMSの設定について 説明する。

設定例

Sambaをドメインメンバーサーバーとする

この方法はsmb.confファイル中に以下のパラメーターを必要とする:

security = domain
workgroup = MIDEARTH

この方法を動作させるために、SambaサーバーはMicrosoft Windows NTセキュリティドメイン にジョインする必要がある。これは以下の方法で行う:

  • UNIX/Linuxシステム上で以下を実行する:

    root# net rpc join -U administrator%password

Windowsドメインコントローラーによってアカウントが認証される時に、UIDを割り当てるため、 このモードを使う認証は、おのおののユーザーに対する標準UNIXアカウントがあることを要求 する。このアカウントは、/etc/passwdエントリ中で不正なシェルと して設定するような方法で、Microsoft Windows以外のクライアントによってログオンする ことをブロックすることができる。ユーザーアカウントに対して不正なシェルを割り当てる 最も良い方法は、シェルに/bin/falseを割り当てることである。

ドメインコントローラーは、利便性のために任意の場所に配置できる。BDCを配置する推奨は、 物理ネットワーク毎に配置し、もしもPDCがリモートネットワークセグメントにあるならば、 WINS(詳細はネットワークのブラウジングを参照)を 使うのが基本である。

Sambaサーバー上でWindowsユーザーにUIDを割り当てる別の方法は、 WinbindWinbind: Use of Domain Accountsにある。

ドメインメンバーシップについてのより詳細な情報は Domain Membershipを参照のこと。

ADS セキュリティモード(ユーザーレベルのセキュリティ)

Sambaは、NT4スタイルのRPCベースのセキュリティを使って Active Directoryドメインに参加することが出来る。これは、ドメインがネイティブ モードで動作しているときに可能である。ネイティブモードのActive Directory は完全にNT4スタイルのドメインメンバーを許可する。これは世間一般の考えに反して である。

もしも、Active Directory をSamba と一緒に使っているとき、ネイティブな AD メンバーとしてジョインできる。なぜそれを望むか?NT互換の認証プロトコルの使用 をセキュリティポリが禁止するかもしれない。Windows2000とそれ以降のすべての マシンはKerberosを使用している。この場合、NT4スタイルのドメインとしての SambaはNT互換の認証データを引き続き要求する。ADメンバーモード中のSambaは、 Kerberosチケットを受け取ることが出来る。

Microsoft WindowsのActive Directoryサービス(ADS)を使うサイトは、以下の 用語の重要性に気づくべきである: native modemixed modeの ADS操作。 The term realmという単語はKerberosベースのセキュリティアーキテクチャ (Microsoft ADSによって使われるような)を説明するのに使われる。

設定例

realm = your.kerberos.REALM
security = ADS

以下のパラメーターを必要としても良い:

password server = your.kerberos.server

この設定オプションの参考情報として、 ドメインメンバーシップSamba ADS ドメインメンバーシップを参照してほしい。

パスワードの検査

Microsoft Windows クライアントはチャレンジ/レスポンス認証モデル(NTLMv1と NTLMv2として知られる)の一部としての暗号化パスワードか、単独か、あるいは 単純なパスワードベースの認証のための平文パスワードを使うことが出来る (訳注:aloneがよく分からない)。これはSMBプロトコルで実現され、パスワード は平文または暗号化されてネットワーク経由で渡されるが、同じ認証要求では 両方は使われない。

暗号化パスワードが使われるとき、以下の2つの方法でユーザーが入力した パスワードは暗号化される:

  • unicodeのパスワード文字列をMD4でハッシュ。 これはNTハッシュとして知られているものである。

  • パスワードは大文字化され、14バイトに短縮 される。この文字列に5バイトのNULL文字が追加され、"magic" な8バイト値に暗号化するために、2つの56ビットDESキー形式 に分割される。結果はLanManハッシュという16ビットの値である。

Microsoft Windows 95 サービスパック1より前とWindows NT バージョン3.xとバージョン 4.0のサービスパック3より前では、パスワード認証のどちらかのモードを使う。すべての それより後のMicrosoft Windowsバージョンはもはや既定値で平文パスワードをサポート しない。

Microsoft Windows クライアントは10分またはそれより長くアイドルな時にネットワーク マッピングを切断するという習性がある。切断した、マップされたドライブ接続を 使うためにユーザーが試みるとき、クライアントはキャッシュされたパスワードの コピーを使って再接続する。

Microsoftが既定値のパスワードモードを変更したとき、平文パスワードのキャッシュ サポートをやめた。これは、平文パスワードを使うためにレジストリパラメーターを修正 したときに、それは動くようになるが、もしもリモートの認証サーバーが暗号化パスワード をサポートしないときに、切断されたサービスのマッピングを試みるときに失敗する ことを意味する。そのようなクライアントで平文パスワードを再度有効にすることは 良い考えではないと確かに言える。

以下のパラメーターは、平文テキストでの認証を使うときに、Windows 9x/Meクライアントが 大文字化したユーザー名とパスワードをSMBサーバーに送る前に問題になる時に使うことが できるものである:

既定値では、Sambaはローカルのシステムアカウントデータベース中でユーザー名を検索する前に ユーザー名を小文字に変更する。これは、UNIXユーザー名が慣習的に小文字のみで構成されている ことによるためであり、username-levelパラメーターは滅多に必要と さない。

しかしながら、UNIXシステム上のパスワードはしばしば大文字小文字を混ぜた文字で構成され ている。これは、平文認証を使ってSambaサーバーに接続しようとするWindows 9x/Meクライアント 上でのユーザーは、小文字のパスワードが必須であるということである。

最も適用するのによいオプションは、Sambaが使われている所はどこでも、暗号化パスワード をサポートすることを有効にすることである。平文パスワードを使うためにレジストリを 変更する試みは、結局はユーザーの苦情と不便を導くことになるだろう。

共通のエラー

我々はいつでも間違いを犯す。正しい場所で正しい時間と同じくらいの長さで間違いを犯す のは問題ない(訳注:意味がよく取れない)。製品版での重要な障害は重要視されるが、 ラボでの開発バージョンにおいてのバグは期待されるものである。

Sambaメーリングリスト上の議論の題名となる共通の誤解と間違いを見てみよう。 その多くは、Samba実装を試みる前にあなたの宿題としてその多くが回避可能である。 そのいくつかは、英語を母国語としない人にとって、潜在的に曖昧で、とても紛らわしい 多くのフレーズを持つ英文の誤解釈の結果である。

何がSambaをドメインコントローラーにするか?

smb.conf パラメーター security = domainは 実際にSambaをドメインコントローラーとして振る舞わさせるのではない。この設定は Sambaがドメインメンバーになることを期待することを意味する。より詳細については PDCとしてのSambaを参照のこと。

何がSambaをドメインメンバーにするか?

想像してみよう!So many others do. But whatever you do, security = userはSambaをドメインメンバー として振る舞わせることを考えてはいけない。保証期限が切れる前に製造者の マニュアルを読みなさい。より詳細については、 ドメインメンバーシップを参照のこと。