Solaris のシステム管理 (ネットワークサービス)

接続時の呼び出し元の認証

この節では、PPP 認証プロトコルの動作と認証プロトコルに関連するデータベースについて説明します。

パスワード認証プロトコル (PAP)

PAP 認証は、UNIX の login プログラムと動作が多少似ていますが、PAP はユーザーにシェルアクセスを許可しない点が異なります。PAP は、PPP 構成ファイルと /etc/ppp/pap-secrets ファイルの形式の PAP データベースを使って認証を設定します。また、PAP セキュリティー資格の定義にも /etc/ppp/pap-secrets を使用します。この資格には、ピア名 (PAP の用語では「ユーザー名」)とパスワードが含まれます。また、ローカルマシンへの接続を許可されている呼び出し元に関する情報も含まれます。PAP のユーザー名とパスワードは、パスワードデータベース内の UNIX ユーザー名およびパスワードと同じものにすることも、違うものにすることもできます。

/etc/ppp/pap-secrets ファイル

PAP データベースは、/etc/ppp/pap-secrets ファイルに実装されています。認証が成功するためには、PPP リンクの両側にある各マシンで、/etc/ppp/pap-secrets ファイル内に適切に設定された PAP 資格が必要です。呼び出し元 (認証される側) は、/etc/ppp/pap-secrets ファイルまたは旧バージョンの +ua ファイルの user 列および password 列で資格を提供します。サーバー (認証する側) は、UNIX の passwd データベースまたは PAM 機能により /etc/ppp/pap-secrets 内の情報と対照してこの資格の妥当性を検証します。

/etc/ppp/pap-secrets ファイルの構文は、次のとおりです。


myclient ISP-server mypassword *

パラメータの意味は次のとおりです。

myclient

呼び出し元の PAP ユーザー名。この名前は、呼び出し元の UNIX ユーザー名と同じ場合があります。特に、ダイアルインサーバーが PAP の login オプションを使用する場合は、多くの場合同じになります。

ISP-server

リモートマシンの名前。ダイアルインサーバーである場合がしばしばあります。

mypassword

呼び出し元の PAP パスワード。

*

呼び出し元に関連付けられている IP アドレス。任意の IP アドレスを表すには、アスタリスク (*) を使用します。

PAP パスワードの作成

PAP パスワードは、接続上をクリアテキストで (読み取り可能な ASCII 形式で) 送信されます。呼び出し元 (認証される側) では、PAP パスワードを次のどこかにクリアテキストで格納する必要があります。

サーバー (認証する側) では、PAP パスワードは、次のどれかの方法で隠すことができます。

PAP 認証時の動作

PAP 認証は、次の順序で発生します。

図 22–1 PAP 認証処理

このフロー図に示されている処理については、次で詳しく説明します。

  1. 呼び出し元 (認証される側) がリモートピア (認証する側) を呼び出し、接続ネゴシエーションの一環として PAP ユーザー名とパスワードを伝えます。

  2. ピアは、/etc/ppp/pap-secrets ファイルで呼び出し元の識別情報を検証します。PAP の login オプションを使用する場合は、呼び出し元のユーザー名とパスワードの検証にパスワードデータベースが使用されます。

  3. 認証が成功すると、ピアは呼び出し元との接続ネゴシエーションを継続します。認証に失敗すると、接続は切られます。

  4. (オプション) 呼び出し元がリモートピアからの応答を認証する場合は、リモートピアが自身の PAP 資格を呼び出し元に送信する必要があります。したがって、リモートピアは認証される側になり、呼び出し側は認証する側になります。

  5. (オプション) 最初の呼び出し元が自身の /etc/ppp/pap-secrets を読み取り、リモートピアの識別情報を検証します。


    注 –

    最初の呼び出し元がリモートピアに認証資格を要求する場合は、手順 1 と手順 4 が並行して行われます。


    ピアが認証されると、ネゴシエーションが継続されます。認証されない場合は、接続が切られます。

  6. 呼び出し元とピアのネゴシエーションは、接続の確立に成功するまで継続されます。

/etc/ppp/pap-secrets での login オプションの使用

PAP 資格を認証するための login オプションを PPP 構成ファイルに追加できます。たとえば /etc/ppp/optionslogin を指定した場合、pppd は呼び出し元の PAP 資格が Solaris のパスワードデータベース内に存在するかどうかを検証します。次に、login オプションを追加した /etc/ppp/pap-secrets ファイルの形式を示します。


joe    *  ""  *
sally  *  ""  *
sue    *  ""  *

パラメータの意味は次のとおりです。

呼び出し元

joesallysue は、承認された呼び出し元の名前です。

サーバー

アスタリスク (*) は、任意のサーバー名が有効であることを示します。name オプションは PPP 構成ファイルでは必須ではありません。

パスワード

二重引用符は、任意のパスワードが有効であることを示します。

この列にパスワードがある場合、ピアからのパスワードは、PAP パスワードと UNIX passwd データベースの両方に一致しなければなりません。

IP アドレス

アスタリスク (*) は、任意の IP アドレスが許可されることを示します。

チャレンジハンドシェーク認証プロトコル (CHAP)

CHAP 認証は、「チャレンジ」と「応答」という概念を使用します。つまり、ピア (認証する側) は識別情報を証明するために呼び出し元 (認証される側) にチャレンジします。チャレンジには、乱数、および認証する側によって生成された一意の ID が含まれます。呼び出し元は、ID、乱数、および呼び出し元の CHAP セキュリティー資格を使って適切な応答 (ハンドシェーク) を生成しピアに送信します。

CHAP セキュリティー資格には、CHAP ユーザー名と CHAP「シークレット」が含まれます。CHAP シークレットは、PPP リンクネゴシエーションを行う前に、あらかじめ呼び出し元とピアの両方が知っている任意の文字列です。CHAP セキュリティー資格は、CHAP データベース /etc/ppp/chap-secrets 内で設定します。

/etc/ppp/chap-secrets ファイル

CHAP データベースは、/etc/ppp/chap-secrets ファイルに実装されています。認証が成功するためには、PPP リンクの両側にある各マシンで、/etc/ppp/chap-secrets ファイル内に互いのマシンの CHAP 資格が必要です。


注 –

PAP と異なり、共有シークレットは、両方のピアでクリアテキストでなければなりません。CHAP では、crypt、PAM、または PPP ログインオプションは使用できません。


/etc/ppp/chap-secrets ファイルの構文は、次のとおりです。


myclient myserver secret5748 *

パラメータの意味は次のとおりです。

myclient

呼び出し元の CHAP ユーザー名。呼び出し元の UNIX ユーザー名と同じ名前にすることも、違う名前にすることもできます。

myserver

リモートマシンの名前。ダイアルインサーバーである場合がしばしばあります。

secret5748

呼び出し元の CHAP シークレット。


注 –

PAP パスワードと異なり、CHAP シークレットは送信されません。CHAP シークレットは、ローカルマシンが応答を処理するときに使用されます。


*

呼び出し元に関連付けられている IP アドレス。任意の IP アドレスを表すには、アスタリスク (*) を使用します。

CHAP 認証時の動作

CHAP 認証は、次の順序で発生します。

図 22–2 CHAP 認証手順

このフロー図に示されている処理については、次で詳しく説明します。

  1. 通信を開始しようとする 2 つのピアが、PPP リンクのネゴシエーション時に認証に使用するシークレットについて合意します。

  2. 両方のマシンの管理者が、シークレット、CHAP ユーザー名、その他の CHAP 資格をそれぞれのマシンの /etc/ppp/chap-secrets データベースに追加します。

  3. 呼び出し元 (認証される側) がリモートピア (認証する側) を呼び出します。

  4. 認証する側が乱数と ID を生成し、それらを認証される側にチャレンジとして送信します。

  5. 認証される側は、/etc/ppp/chap-secrets データベース内でピアの名前とシークレットを調べます。

  6. 認証される側は、シークレットとピアの乱数チャレンジに MD5 計算アルゴリズムを適用することにより、応答を計算します。次に、認証される側は、認証する側に結果を応答として送信します。

  7. 認証する側は、/etc/ppp/chap-secrets データベース内で認証される側の名前とシークレットを調べます。

  8. 認証する側は、チャレンジとして生成された数値と /etc/ppp/chap-secrets 内の認証される側のシークレットに MD5 を適用することにより、自身の数値を計算します。

  9. 認証する側は、呼び出し元からの応答と結果を比較します。2 つの数字が同じ場合、ピアは、呼び出し元の認証に成功し、接続ネゴシエーションが続けられます。認証されない場合は、接続が切られます。