## Name

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

## Synopsis

`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` ディレクトリにアクセス可能なグループに所属させる必要がある。 セキュリティ上、 このディレクトリは誰もがアクセス可能にすべきでない。

## オプション

--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エンコード値`。単独のピリオド( `.`) は、(ヘルパーがユーザ認証を行なう際に) 一方が他方へ提供するデータの終了を意味する。

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

    ### Warning

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

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

      Example 1.

      Username: bob

      Example 2.

      Username:: Ym9i

    NT-domain

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

      Example 3.

      NT-Domain: WORKGROUP

      Example 4.

      NT-Domain:: V09SS0dST1VQ

    Full-Username

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

      Example 5.

      Full-Username: WORKGROUP\bob

      Example 6.

      Full-Username:: V09SS0dST1VQYm9i

    LANMAN-Challenge

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

      Example 7.

      LANMAN-Challege: 0102030405060708

    LANMAN-Response

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

      Example 8.

      LANMAN-Response: 0102030405060708090A0B0C0D0E0F101112131415161718

    NT-Response

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

      Example 9.

      NT-Response: 0102030405060708090A0B0C0D0E0F101112131415161718

    Password

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

      Example 10.

      Password: samba2

      Example 11.

      Password:: c2FtYmEy

    Request-User-Session-Key

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

      Example 12.

      Request-User-Session-Key: Yes

    Request-LanMan-Session-Key

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

      Example 13.

      Request-LanMan-Session-Key: Yes

--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の名前)のメンバとなるユーザを要求する。

-d|--debuglevel=level

  `level` は0から10までの整数値である。 既定値の値は、パラメータが設定されていなければ0である。

  この値を大きくするほど、サーバの動作に関するより詳細な情報が ログファイルに記録される。レベル 0 では、致命的なエラーと重大な警告 のみが記録される。レベル 1 は日々の運用に適しており、少量の稼働状況 に関する情報を生成する。

  1 より上のレベルは大量のログが生成されるので、問題解決の時にのみ 使用すべきである。 3 より上のレベルは開発者だけが利用するように設計されて おり、莫大な量のログデータが生成される。そのほとんどは非常に謎めいた内容 となっている

  このパラメータの指定は、`smb.conf`ファイル中の、 パラメータの 指定よりも優先する。

-V

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

-s <configuration file>

  サーバーが必要とする詳細な設定を含む設定ファイルを 指定する。このファイルには、サーバーが提供するサービスに関する記述や、 どの printcap ファイルを利用するかといった情報が含まれている。詳細は `smb.conf` を参照のこと。設定ファイルの名前の既定値は、コンパイル時 に決定される。

-l|--log-basename=logdirectory

  ログ/デバッグファイルのファイル名。拡張子として `".progname"` が追加される(例えば log.smbclient, log.smbd,など)。ログファイルはクライアントによって削除されることはない。

-h|--help

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

## セットアップ例

基本と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

### Note

この例は、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を見て，そこに書いてある ことを実行すること。

## バージョン

このマニュアルページは Samba 3 対応のものである。

## 著者

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

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

## 日本語訳

このマニュアルページは Samba 3.4.10 - 3.4.11 対応のものである。

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

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