ntlm_auth — Winbind 機構の NTLM 認証機能を外部から利用可能とするツール
ntlm_auth
このツールは 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 セッション鍵を返却するか。
実装の際は、改行文字のような微妙なデータが混入されることを考慮して、すべてのデータ(ユーザー名やパスワードを含む)を base64 エンコードするように考慮すべきである。 ただしこの場合、ヘルパー側で base64 でエンコードされている文字列をデコードする必要が発生する。
認証するユーザーのユーザー名を指定する
認証するユーザーのドメイン名を指定する
認証するユーザーが使用するワークステーション名を指定する
NTLM チャレンジ (HEXADECIMAL エンコード)
チャレンジに対する LM レスポンス (HEXADECIMAL エンコード)
チャレンジに対する NT もしくは NTLMv2 レスポンス (HEXADECIMAL エンコード)
ユーザーの平文パスワード
コマンドラインでこの指定がない場合、必要時にはプロンプトが表示される。
NTLMSSPベースのサーバーロールのために、このパラメーターは拡張 されたパスワードを指定し、winbinddの動作なしでテストすることを可能 にする。
LMセッションキーの検索
NTキーの要求
認証チェーン上での診断の実行。
--password
によるパスワードを使うか、
パスワード要求のプロンプトを出す。
成功のために、認証のために指定したグループ (かSIDの名前)のメンバーとなるユーザーを要求する。
pam_winbind.confファイルへのパスを定義する。
ターゲットのホスト名を定義する。
ターゲットのサービスを定義する。
winbinddによってキャッシュされた資格情報を使うかどうか。
明示的に MSCHAPv2 を許可する。
平文認証においてオフラインでのログオンを許可する。
コマンドラインオプションの要約を表示する。
簡単な使用法を表示する。
level
は0から10までの整数値である。
このパラメータが設定されていない場合の規定の値は、
クライアントアプリケーションに対しては、1 である。
この値を大きくするほど、サーバーの動作に関するより詳細な情報が ログファイルに記録される。レベル 0 では、致命的なエラーと重大な警告 のみが記録される。レベル 1 は日々の運用に適しており、少量の稼働状況 に関する情報を生成する。
1 より上のレベルは大量のログが生成されるので、問題解決の時にのみ 使用すべきである。 3 より上のレベルは開発者だけが利用するように設計されて おり、莫大な量のログデータが生成される。そのほとんどは非常に謎めいた内容 となっている。
このパラメーターの指定は、${prefix}/etc/smb.conf
ファイル中の、
log level パラメーターの
指定よりも優先する事に注意。
このパラメータはデバッグ出力を STDOUT にリダイレクトする。既定では、 すべてのクライアントはログを STDERR に出力する。
クライアントが必要とする詳細な設定を含むファイルを指定する。
このファイル中にある情報は、クライアントまたはサーバに対して
一般的であるか、あるいは、
client smb encrypt
のような、クライアント固有のオプションのみを提供することが
できる。詳細については ${prefix}/etc/smb.conf
を参照のこと。既定の
設定ファイルの名前はコンパイル時に決定される。
コマンドラインから smb.conf(5) オプション "<name>" に値 "<value>" を設定する。 これはコンパイル時の既定値と設定ファイルから読み込まれた オプションを上書きする。名前または値に空白が入っていた場合、 引用符で --option=name=value 全体を囲む。
プログラムのバージョン番号を表示する。
基本と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を見て,そこに書いてある ことを実行すること。