TCP/IP とデータ通信

PAP/CHAP セキュリティのための asppp.cf の編集

asppp.cf ファイルを編集することによってセキュリティを設定し、リンクの各部分が、パスワード認証プロトコル (PAP) またはチャレンジハンドシェーク認証プロトコル (CHAP) に応答するかどうかを指定できます。PAP と CHAP については、「PPP のセキュリティ」で説明してます。asppp.cf ファイルを編集するには、一連のキーワードを追加します。この節では、認証システムはリンクまたはチャレンジを開始するシステムであり、これは多くの場合サーバーです。対等システムはリンクの反対側にあるシステムであり、これは多くの場合クライアントです。

追加するキーワードは、require_authenticationwill_do_authentication です。認証システムつまりサーバーは一般に認証を要求し、対等システムつまりクライアントは一般に認証を行います。

表 11-1 認証システムのキーワードと関連の文字列

require_authentication pap

require_authentication chap

pap_peer_id

chap_peer_secret

pap_peer_password

chap_peer_name

表 11-2 対等システムのキーワードと関連の文字列

will_do__authentication pap

will_do_authentication chap

pap_id

chap_secret

pap_password

chap_name

PAP/CHAP のインストール方法

  1. サーバーでスーパーユーザーになり、/etc/asppp.cf ファイルを編集する準備を整えます。

  2. リンク上の各マシンについて require_authentication キーワードを追加して、PAP セキュリティと CHAP セキュリティのどちらを使用するかを指定します。

    1. 各 pap キーワードについて、関連の pap_peer_idpap_peer_password 文字列を追加します。

    2. 各 chap キーワードについて、関連の chap_peer_secretchap_peer_name 文字列を追加します。

      これらのキーワードは明示的に指定することも、パスのデフォルト値を使用することもできます。各キーワードによって指定される内容については、表 11-3 を参照してください。また、例 11-4 は、/etc/asppp.cf ファイルの例を示します。

  3. will_do_authentication キーワードを使って、リンク上で PAP または CHAP セキュリティを使用する各リモートホストについて、リモートホストの /etc/asppp.cf ファイルにエントリを追加します。

    1. 各 pap キーワードについて、関連の pap_idpap_password 文字列を追加します。

    2. 各 chap キーワードについて、関連の chap_secretchap_name 文字列を追加します。

これらのキーワードは明示的に指定することも、パスのデフォルト値を使用することもできます。各キーワードによって指定される内容については、表 11-3 を参照してください。また、例 11-4 は、/etc/asppp.cf ファイルの例を示します。

PAP/CHAP キーワードに関する規則

表 11-3 PAP/CHAP のキーワードの定義

キーワード 

値の定義 

require_authentication keywords1

対等システムがそれ自身を認証することを指定する。papchap のどちらかがある場合は、対等システムは認証に参加するか、または接続を終了する必要がある。デフォルト値は off

pap_peer_id peername2

現在のパスについて認証される必要のある対等システムの名前を指定する。peername 文字列の長さは 1 オクテット3 以上。長さがゼロの文字列を指示するには、このキーワードを省略する

pap_peer_password string4

対等システムのパスワードを 1 オクテット以上の長さで指定する。長さがゼロの文字列を指示するには、このキーワードを省略する 

chap_peer_secret string

対等システムが送る応答を生成するためにチャレンジ値とともに使用されるシークレットを指定する。形式は 1 オクテット以上の長さで、少なくとも 16 オクテット以上が望ましい 

chap_peer_name peername

パケットを伝送する対等システムの識別情報を指定する。名前には、NULL と、CR/LF で終わる文字列は使用できない。名前は、対等システムからの応答パケットの一部として受信されるもので、1 オクテット以上の長さからなる 

will_do_authentication keywords

システムが、指定した認証プロセスに認証された対等システムとして参加する意志があるかどうかを指定する。papchap の両方が存在する場合は、システムはどちらの認証プロトコルにも参加する意志を持つことになる。デフォルト値は off

pap_id peername

応答パケットに入れて認証システムに送るシステムの名前を指定する。長さがゼロの文字列を指示するには、このキーワードを省略する 

pap_password string

応答パケットに入れて認証システムに送るシステムのパスワードを指定する。長さがゼロの文字列を指示するには、このキーワードを省略する 

chap_secret string

認証システムに送る応答を生成するために、受信したチャレンジ値とともに使用するシークレットを入れる。形式は 1 オクテット以上の長さで、少なくとも 16 オクテット以上が望ましい 

chap_name peername

システムの識別情報を指定する。名前は、NULL または CR/LF で終わるものであってはならない。この名前は、応答パケットに入れて認証システムに送られる 

1. キーワード として使用できるのは off|pap[chap] | chap[pap]

2. peername は、認証システムから見てポイントツーポイントリンクの反対側にあるシステムの名前です。これは、 4. に示す構文の文字列です。

3. オクテットはバイトの厳密な定義です。

4. string はホワイトスペースを含まない単一トークンです。特殊文字を含めるには、標準 ANSI の ¥ エスケープ文字を使用できます。空白文字を入れるには、¥s を使用します。文字列の先頭にポンド記号がある場合は、コメントとして解釈されないようにするために、エスケープ (¥#) する必要があります。NULL (¥0) は文字列を切り捨てます。

PAP/CHAP の例

例 11-4 は、PAP と CHAP の認証を必要とするサーバー mojave 用の asppp.cf ファイルを示しています。対等システムは、nomada (PAP) と nomadb (CHAP) です。


例 11-4 サーバー mojave 用のコード例

ifconfig ipdptp0 plumb mojave nomada up
ifconfig ipdptp1 plumb mojave nomanb up
path
      peer_system_name tamerlane
      require_authentication pap  #tells nomada that mojave
                                  #requires pap authentication
      pap_peer_id desert
      pap_peer_password oasis
path
      peer_system_name lawrence
      require_authentication chap  #tells nomadb that mojave
                                   #requires chap authentication
      chap_peer_name another¥sdesert
      chap_peer_secret secret¥soasis¥swith¥007bell

例 11-5 に示された mojave のリモートホスト nomada は、PAP と CHAP の両方を認証しようしています。


例 11-5 リモートホスト nomada 用のコード例


ifconfig ipdptp0 plumb tamerlane mojave up
path
      interface ipdptp0
      peer_system_name mojave
      will_do_authentication chap pap #nomada tells mojave
                                      #that it will do chap and
                                      #pap authentication
      pap_id desert
      pap_password oasis
      chap_name desert¥srain
      chap_secret %$#@7&*(+|`P'12

例 11-6 に示された mojave のリモートホスト nomadb は、CHAP を認証しようしています。


例 11-6 リモートホスト nomadbe 用のコード例


ifconfig ipdptp0 plumb nomadb mojave private up
path
     interface ipdptp0
     peer_system_name mojave
     will_do_authentication chap   #nomadb tells mojave that it
                                   #will do chap authentication
     chap_name another¥sdesert
     chap_secret secret¥soasis¥swith¥007bell

一般に、CHAP と PAP の両方が構成ファイルに組み込まれていて、サーバーが認証を要求し、リモートホストが認証を行おうとするのが、理想的な形です。しかし、逆にリモートホストの方が認証を要求するようにすることも可能です。CHAP シークレットは安全な手段で送付する必要があります。通常、CHAP シークレットは人間が直接先方に渡すという方法をとっています。