ntlm_auth — Winbind 機構の NTLM 認証機能を外部から利用可能とするツール
ntlm_auth
[-d debuglevel] [-l logdir] [-s <smb config file>]
このツールは samba(7) システムの一部である。
ntlm_auth
はユーザを NTLM 認証方式で認証するためのヘルパーユーティリティである。ユーザ認証が成功した場合 0 を返し、アクセスが拒否された
場合は 0 を返す。ntlm_auth は winbind を使用してドメインのユーザと認証データに
アクセスする。このユーティリティは外部プログラム(現在は
Squid
と mod_ntlm_winbind)
で用いることを目的としている。
多くの機能については、 winbindd(8) デーモンが機能している必要がある。
幾つかの機能については、上記に加えて
$LOCKDIR
中の
winbindd_privileged
ディレクトリへアクセスできることも必要である。
これには、コマンドを root で実行するか、
winbindd_privileged
ディレクトリにアクセス可能なグループに所属させる必要がある。
セキュリティ上、
このディレクトリは誰もがアクセス可能にすべきでない。
標準入出力を用いるヘルパープログラムとして動作させる。 認識可能なプロトコルは以下のとおり:
Squid 2.4 のベーシック(平文)認証で用いるためのサーバ側ヘルパー
Squid 2.5 のベーシック(平文)認証で用いるためのサーバ側ヘルパー
Squid 2.5 の NTLMSSP 認証で用いるためのサーバ側ヘルパー
これは、
$LOCKDIR
内の winbindd_privileged
ディレクトリへのアクセスが必要である。
利用されるプロトコルについての詳細は
http://devel.squid-cache.org/ntlm/squid_helper_protocol.html を参照のこと。
このプロトコルでは
YR
コマンドの引数として NTLMSSP のネゴシエートパケットが含まれるように拡張されている。
(これにより、プロトコル情報の交換における情報の消失を回避している)。
Samba の NTLMSSP 認証の結果を用いる任意の外部プログラムのためのクライアント側ヘルパー
このヘルパーはクライアントであり、任意のユーザから実行可能である。
用いられるプロトコルは前述したプロトコルを逆転させたものである。
YR
コマンド (引数無し) により、
認証情報の交換が開始される。
GSS-SPNEGO を実装するサーバ側ヘルパー。
これは
squid-2.5-ntlmssp
とほぼ同様のプロトコルを用いるが、微妙な違いがある。この違いについては現時点ではドキュメント化されておらず、ソースコードを確認するしかない。
これは、
$LOCKDIR
内の winbindd_privileged
ディレクトリへのアクセスが必要である。
GSS-SPNEGO を実装するクライアント側ヘルパー。 これは前述したヘルパーとほぼ同様のプロトコルを用いる。 現在のところドキュメント化されていない。
RADIUS サーバ、もしくは pppd の「winbind」プラグインに、 MSCHAP や MSCHAPv2 認証を提供するために用いられるサーバ側ヘルパー。
このプロトコルは、以下の形式の行からなる:
Parameter: 値
および Paramter::
Base64エンコード値
。単独のピリオド(
.
) は、(ヘルパーがユーザ認証を行なう際に)
一方が他方へ提供するデータの終了を意味する。
外部プログラムからヘルパーに情報を提供するために現在実装されているパラメータは以下のとおりである:
ユーザ名。これは Samba の unix charset でエンコードされているとみなされる。
ユーザの所属するドメイン。これは Samba の unix charset でエンコードされているとみなされる。
完全なユーザ名。これは Samba の unix charset でエンコードされているとみなされる。 また、ディリミタには winbind separator が用いられる。
8 バイトの LANMAN Challenge
の値。
これはサーバ側でランダムに生成されるか、サーバとクライアントの双方である規則に従って生成される(MSCHAPv2 の場合)。
24 バイトの LANMAN Response
の値。
これはユーザのパスワードと提供された
LANMAN Challenge
から計算される。
通常、この値は認証を受けようとするクライアントからネットワーク経由で提供される。
24 バイト以上の NT Response
。
これはユーザのパスワードと提供された
LANMAN Challenge
から計算される。
通常、この値は認証を受けようとするクライアントからネットワーク経由で提供される。
ユーザのパスワード。 これは、ヘルパーが平文のパスワードを用いるレガシーな環境で用いられている場合に、ネットワーククライアントから提供される。
認証に成功した際に、ログインに対応するユーザのセッション鍵を返却するか。
認証に成功した際に、ログインに対応する LANMAN セッション鍵を返却するか。
認証するユーザのユーザ名を指定する
認証するユーザのドメイン名を指定する
認証するユーザが使用するワークステーション名を指定する
NTLM チャレンジ (HEXADECIMAL エンコード)
チャレンジに対する LM レスポンス (HEXADECIMAL エンコード)
チャレンジに対する NT もしくは NTLMv2 レスポンス (HEXADECIMAL エンコード)
ユーザの平文パスワード
コマンドラインでこの指定がない場合、必要時にはプロンプトが表示される。
NTLMSSPベースのサーバロールのために、このパラメータは拡張 されたパスワードを指定し、winbinddの動作なしでテストすることを可能 にする。
LMセッションキーの検索
NTキーの要求
認証チェーン上での診断の実行。
--password
によるパスワードを使うか、
パスワード要求のプロンプトを出す。
成功のために、認証のために指定したグループ (かSIDの名前)のメンバとなるユーザを要求する。
level
is an integer
from 0 to 10. The default value if this parameter is
not specified is 0.
The higher this value, the more detail will be logged to the log files about the activities of the server. At level 0, only critical errors and serious warnings will be logged. Level 1 is a reasonable level for day-to-day running - it generates a small amount of information about operations carried out.
Levels above 1 will generate considerable amounts of log data, and should only be used when investigating a problem. Levels above 3 are designed for use only by developers and generate HUGE amounts of log data, most of which is extremely cryptic.
Note that specifying this parameter here will
override the parameter
in the smb.conf
file.
Prints the program version number.
The file specified contains the
configuration details required by the server. The
information in this file includes server-specific
information such as what printcap file to use, as well
as descriptions of all the services that the server is
to provide. See smb.conf
for more information.
The default configuration file name is determined at
compile time.
Base directory name for log/debug files. The extension
".progname"
will be appended (e.g. log.smbclient,
log.smbd, etc...). The log file is never removed by the client.
Print a summary of command line options.
基本と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 または Millenium Edition 配下で MSIEを動かして認証の問題が発生したら、 の、Microsoft Knowledge Baseの#239869を見て,そこに書いてある ことを実行すること。