名前

ntlm_auth — Winbind 機構の NTLM 認証機能を外部から利用可能とするツール

書式

ntlm_auth

説明

このツールは samba(7) システムの一部である。

ntlm_auth はユーザーを NTLM 認証方式で認証するためのヘルパーユーティリティである。ユーザー認証が成功した場合 0 を返し、アクセスが拒否された 場合は 0 を返す。ntlm_auth は winbind を使用してドメインのユーザーと認証データに アクセスする。このユーティリティは外部プログラム(現在は Squidmod_ntlm_winbind) で用いることを目的としている。

その他の必要条件

多くの機能については、 winbindd(8) デーモンが機能している必要がある。

幾つかの機能については、上記に加えて $LOCKDIR 中の winbindd_privileged ディレクトリへアクセスできることも必要である。 これには、コマンドを root で実行するか、 winbindd_privileged ディレクトリにアクセス可能なグループに所属させる必要がある。 セキュリティ上、 このディレクトリは誰もがアクセス可能にすべきでない。

オプション

--helper-protocol=PROTO

標準入出力を用いるヘルパープログラムとして動作させる。 認識可能なプロトコルは以下のとおり:

squid-2.4-basic

Squid 2.4 のベーシック(平文)認証で用いるためのサーバー側ヘルパー

squid-2.5-basic

Squid 2.5 のベーシック(平文)認証で用いるためのサーバー側ヘルパー

squid-2.5-ntlmssp

Squid 2.5 の NTLMSSP 認証で用いるためのサーバー側ヘルパー

これは、 $LOCKDIR 内の winbindd_privileged ディレクトリへのアクセスが必要である。 利用されるプロトコルについての詳細は http://devel.squid-cache.org/ntlm/squid_helper_protocol.html を参照のこと。 このプロトコルでは YR コマンドの引数として NTLMSSP のネゴシエートパケットが含まれるように拡張されている。 (これにより、プロトコル情報の交換における情報の消失を回避している)。

ntlmssp-client-1

Samba の NTLMSSP 認証の結果を用いる任意の外部プログラムのためのクライアント側ヘルパー

このヘルパーはクライアントであり、任意のユーザーから実行可能である。 用いられるプロトコルは前述したプロトコルを逆転させたものである。 YR コマンド (引数無し) により、 認証情報の交換が開始される。

gss-spnego

GSS-SPNEGO を実装するサーバー側ヘルパー。 これは squid-2.5-ntlmssp とほぼ同様のプロトコルを用いるが、微妙な違いがある。この違いについては現時点ではドキュメント化されておらず、ソースコードを確認するしかない。

これは、 $LOCKDIR 内の winbindd_privileged ディレクトリへのアクセスが必要である。

gss-spnego-client

GSS-SPNEGO を実装するクライアント側ヘルパー。 これは前述したヘルパーとほぼ同様のプロトコルを用いる。 現在のところドキュメント化されていない。

ntlm-server-1

RADIUS サーバー、もしくは pppd の「winbind」プラグインに、 MSCHAP や MSCHAPv2 認証を提供するために用いられるサーバー側ヘルパー。

このプロトコルは、以下の形式の行からなる: Parameter: 値 および Paramter:: Base64エンコード値。単独のピリオド( .) は、(ヘルパーがユーザー認証を行なう際に) 一方が他方へ提供するデータの終了を意味する。

外部プログラムからヘルパーに情報を提供するために現在実装されているパラメーターは以下のとおりである:

Username

ユーザー名。これは Samba の unix charset でエンコードされているとみなされる。

例:
NT-Domain

ユーザーの所属するドメイン。これは Samba の unix charset でエンコードされているとみなされる。

例:
Full-Username

完全なユーザー名。これは Samba の unix charset でエンコードされているとみなされる。 また、ディリミタには winbind separator が用いられる。

例:
LANMAN-Challenge

8 バイトの LANMAN Challenge の値。 これはサーバー側でランダムに生成されるか、サーバーとクライアントの双方である規則に従って生成される(MSCHAPv2 の場合)。

例:
LANMAN-Response

24 バイトの LANMAN Response の値。 これはユーザーのパスワードと提供された LANMAN Challenge から計算される。 通常、この値は認証を受けようとするクライアントからネットワーク経由で提供される。

例:
NT-Response

24 バイト以上の NT Response 。 これはユーザーのパスワードと提供された LANMAN Challenge から計算される。 通常、この値は認証を受けようとするクライアントからネットワーク経由で提供される。

例:
Password

ユーザーのパスワード。 これは、ヘルパーが平文のパスワードを用いるレガシーな環境で用いられている場合に、ネットワーククライアントから提供される。

例:
Request-User-Session-Key

認証に成功した際に、ログインに対応するユーザーのセッション鍵を返却するか。

例:
Request-LanMan-Session-Key

認証に成功した際に、ログインに対応する LANMAN セッション鍵を返却するか。

例:

警告

実装の際は、改行文字のような微妙なデータが混入されることを考慮して、すべてのデータ(ユーザー名やパスワードを含む)を base64 エンコードするように考慮すべきである。 ただしこの場合、ヘルパー側で base64 でエンコードされている文字列をデコードする必要が発生する。

--username=USERNAME

認証するユーザーのユーザー名を指定する

--domain=DOMAIN

認証するユーザーのドメイン名を指定する

--workstation=WORKSTATION

認証するユーザーが使用するワークステーション名を指定する

--challenge=STRING

NTLM チャレンジ (HEXADECIMAL エンコード)

--lm-response=RESPONSE

チャレンジに対する LM レスポンス (HEXADECIMAL エンコード)

--nt-response=RESPONSE

チャレンジに対する NT もしくは NTLMv2 レスポンス (HEXADECIMAL エンコード)

--password=PASSWORD

ユーザーの平文パスワード

コマンドラインでこの指定がない場合、必要時にはプロンプトが表示される。

NTLMSSPベースのサーバーロールのために、このパラメーターは拡張 されたパスワードを指定し、winbinddの動作なしでテストすることを可能 にする。

--request-lm-key

LMセッションキーの検索

--request-nt-key

NTキーの要求

--diagnostics

認証チェーン上での診断の実行。 --passwordによるパスワードを使うか、 パスワード要求のプロンプトを出す。

--require-membership-of={SID|Name}

成功のために、認証のために指定したグループ (かSIDの名前)のメンバーとなるユーザーを要求する。

--pam-winbind-conf=FILENAME

pam_winbind.confファイルへのパスを定義する。

--target-hostname=HOSTNAME

ターゲットのホスト名を定義する。

--target-service=SERVICE

ターゲットのサービスを定義する。

--use-cached-creds

winbinddによってキャッシュされた資格情報を使うかどうか。

--allow-mschapv2

明示的に MSCHAPv2 を許可する。

--offline-logon

平文認証においてオフラインでのログオンを許可する。

--configfile=<configuration file>

指定されたファイルは、サーバによって必要とされる詳細設定 を含んでいる。このファイル中の情報は、たとえば、どのprintcapファイルを使うか、 サーバが提供するすべてのサービスの説明のような、のようなサーバ固有の情報を 含んでいる。より詳細については smb.conf を参照のこと。 既定値の設定ファイル名はコンパイル時に決定される。

-V|--version

プログラムのバージョン番号を表示する。

-?|--help

コマンドラインオプションの要約を表示する。

--usage

簡単な使用法を表示する。

セットアップ例

基本とNTLMSSP認証の両方でsquid 2.5用に設定するには、 squid.confファイル中に以下を設定する。

auth_param ntlm program ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param basic program ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

注記

この例は、ntlm_authのパスが通っていることと、それが、上記で説明 されている、winbindd_privileged上のグループ パーミッションが設定されていることを仮定している。

上記の例で、グループ制限を追加して、squid 2.5用にntlm_auth をセットアップするには、以下の記述を、squid.conf に書く。

auth_param ntlm program ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of='WORKGROUP\Domain Users'
auth_param basic program ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of='WORKGROUP\Domain Users'

トラブルシューティング

もしも、ntlm_authの、NTLMSSP認証ヘルパ (--helper-protocol=squid-2.5-ntlmssp) に対して、MS Windows 9X または Millennium Edition 配下で MSIEを動かして認証の問題が発生したら、 の、Microsoft Knowledge Baseの#239869を見て,そこに書いてある ことを実行すること。

バージョン

このマニュアルページは Samba バージョン 4.13.2 用である。

著者

オリジナルの Samba ソフトウェアと関連ユーティリティは、 Andrew Tridgellによって作成された。 現在 Samba は、Samba Team によってLinux カーネルの 開発と同様に、オープンソースプロジェク トとして開発されている。

The ntlm_authのマニュアルページは Jelmer Vernooij と Andrew Bartlett によって書かれた。

日本語訳

このマニュアルページは Samba 4.5.0 - 4.13.2 に対応する。

このドキュメントの Samba 3.0.24 対応の翻訳は たかはしもとのぶ (monyo@samba.gr.jp) によって行なわれた。

このドキュメントの Samba 3.2.4 - 4.13.2 対応の翻訳は 太田俊哉 (ribbon@samba.gr.jp) によって行なわれた。