22.3. PPTP によるリモートアクセス VPN(Poptop)

PPTP(Point to Point Tunneling Protocol)は、マイクロソフト社により提案された暗号化通信のためのプロトコルです。Windows リモートホストからインターネットなどを経由してプライベートネットワークのサーバーへ VPN を確立しセキュアな通信を実現します。PPTP はクライアントサーバー型のシステムで、Windows OS には、PPTP クライアントソフトが含まれています。Linux 上で動作する PPTP サーバーには、 Poptop があります。Poptop は、GPL に基づいて配布されており、マイクロソフト互換の MS-CHAPv2 といった認証プロトコルや、MPPE による暗号方式をサポートします。PPTP クライアント としては、Windows 95、98、Me、NT、2000、XP の PPTP クライアント、Linux PPTP クライアントをサポートします。

認証プロトコルには、CHAP(Challenge Handshake Authentication Protocol:チャレンジハンドシェイク認証プロトコル)、MS-CHAPv1 、更に強力な MS-CHAPv2 などがあります。CHAP はセキュリティ上の問題があるため利用が推奨されていません。これらは、通常、PPP(Point to Point プロトコル)を使用したダイヤルアップ接続などで使用される認証プロトコルですが、 PPTP では、認証を PPP レイヤにゆだねているためこれらのプロトコルを利用します。暗号化は、MPPE(Microsoft Point-to-Point Encryption)を利用し、鍵長は、40bit、128bit を選択できます。128 bit 長の鍵を使用する場合、Windows 95、98 では MSDun1.4 のアップグレードが必要になります。Windows クライアントの設定例などの情報が、以下サイトの Client configuration に掲載されていますので参考にしてください。

Poptop - The PPTP Server for Linux

http://poptop.sourceforge.net/dox/

22.3.1. Poptop の関連ファイル

Turbolinux 10 Server における Poptop の関連ファイルは以下の通りです。

表 22-11. 関連ファイル

 ファイル名備考
バージョンpptpd-1.1.4 
デーモン/usr/sbin/pptpd 
起動スクリプト/etc/init.d/pptpd 
設定ファイル/etc/pptpd.confpptpd 設定ファイル
/etc/ppp/options.pptpdppp オプションファイル
/etc/ppp/chap-secrets認証用のファイル
ログ/var/log/messages 
ログロテートファイル/etc/logrotate.d/syslog 

22.3.2. 設定ファイルの編集

22.3.2.1. /etc/modprobe.conf

以下のように必要なカーネルモジュールを設定します。Turbolinux 10 Server は初期状態でカーネルモジュールが記述されており特に編集の必要はありません。

alias char-major-108 ppp_generic
alias ppp0 ppp_generic
alias ppp1 ppp_generic
alias /dev/ppp ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate

22.3.2.2. /etc/pptpd.conf

pptpd の設定ファイルです。# ではじまる行はコメントです。Turbolinux 10 Server の初期状態のファイルには、コメントとして各設定項目の説明が記述されています。最低限記述の必要な項目は以下の通りです。

option /etc/ppp/options.pptpd
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

主な設定項目を以下に解説します。

speed

tty/pty ペアのためのインターフェース速度として PPP デーモンに渡す速度を bps で指定します。

option option-file

ppp デーモンに渡すオプション設定ファイルのパスを指定します。Turbolinux 10 Server はデフォルトで /etc/ppp/options.pptpd となっていますのでそのまま使用することができます。

stimeout seconds

Poptop の持つ DOS 攻撃への防御策の一つです。Poptop はコネクションを継続する前に最初のパケットをチェックします。このパケットを保持する秒数を指定します。

debug

指定をすると、syslog により詳細なログを出力します。

bcrelay internal-interface

ブロードキャストリレイモードを有効にします。ここで指定したインターナル用インターフェイスで受信したブロードキャストをすべてクライアントに送信します。

localip ip-specification

ローカル IP アドレス、または範囲の指定です。カンマ(,)で区切った IP アドレス、ハイフン(-)で区切った範囲、および両方を指定することができます。例えば、192.168.0.234,192.168.0.245-249,192.168.0.254 のように指定します。pptp で接続された場合にローカル側に割り当てたいアドレスの指定です。

remoteip ip-specification

クライアント(リモートホスト)に割り当てる IP アドレスのリスト指定です。最低でも同時接続クライアント数分のリモート IP アドレスが必要であり、アドレスの予備も指定すべきです。アドレスプールの不足は syslog に出力されます。指定方法は、localip と同様です。

ipxnets ipx-specification

クライアント(リモートホスト)に割り当てる IPX アドレス範囲の指定です。

listen ip-address

pptpd がリクエストを受け付ける IP アドレスの指定です。省略時にはローカルホストのすべてのネットワークインターフェースの IP アドレスで受け付けます。

pidfile pid-file

pptpd の PID 格納ファイルの指定です。Turbolinux 10 Server の初期状態ではデフォルトと同じ /var/run/pptpd.pid が指定されており変更する必要はありません。

22.3.2.3. /etc/ppp/options.pptpd

認証や暗号化に関する設定を行う ppp オプションファイルです。このファイルのパスは、/etc/pptpd.conf の options で指定され pptpd デーモンから参照されるようになっています。以下は、設定ファイルの例です。Turbolinux 10 Server の初期状態のファイルで最低限編集が必要な項目 name に自分のホスト名を指定すればそのまま使用することができます。# ではじまる行はコメントです。Turbolinux 10 Server の初期状態のファイルには、コメントとして各設定項目の説明が記述されています。

## CHANGE TO SUIT YOUR SYSTEM
lock

## turn pppd syslog debugging on
#debug

## change 'pptpd' to whatever you specify as your server name in chap-secrets
name pptpd
auth
proxyarp
bsdcomp 0

# This option applies if you use ppp with chapms-strip-domain patch
#chapms-strip-domain

# These options apply if you use ppp with mppe patch
# NB! You should also apply the ChapMS-V2 patch
# for ppp-2.4.2
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128


# These options will tell ppp to pass on these to your clients
# To use ms-wins or ms-dns in options.pptpd it must exist in /etc/resolv.conf
#ms-wins your.server.here
#ms-dns your.server.here

主な設定項目を以下に解説します。

lock

シリアルデバイスに対する排他アクセスのためのロック指定です。

name name

認証するホスト名として pptpd サーバーのホスト名を指定します。

auth

通信をはじめる前に認証を行います。

proxyarp

自システムの ARP(Address Resolution Protocol])テーブルに相手の IP アドレスと自システムの IP アドレスを追加します。他のシステムに対して、相手がローカルネットワーク上にあるように見せることになります。

bsdcomp nr[,nt]

BSD-Compress 方式を使った送出時のパケット圧縮の指定です。nr には 最大コードサイズ、nt には相手側の最大サイズを指定します。nt 省略時には、nrが使用されます。0 は圧縮しません。

refuse-chap

認証に CHAP を使用しません。

refuse-chapms

認証に MS-CHAP を使用しません。

require-chapms-v2

認証に MS-CHAPv2 を使用します。

require-mppe-128

暗号化にアルゴリズム 128 ビットの MPPE(Microsoft Point-to-Point Encryiption)を使用します。

ms-wins addr

クライアントに WINS サーバーのアドレスを提供する場合に指定します。

ms-dns addr

クライアントに WINS サーバーのアドレスを提供する場合に指定します。

22.3.2.4. /etc/hosts.allow

Turbolinux 10 Server の pptpd は、TCP Wrappers を使用したアクセス制限を行います。/etc/hosts.allow を編集しクライアントからのアクセスを許可する必要があります。以下の例はすべてのクライアントからのアクセスを許可しています。TCP Wrapper の詳細は 項19.1 を参照してください。

pptpd : ALL

22.3.2.5. /etc/ppp/chap-secrets

認証のためのユーザー名とパスワードを /etc/ppp/chap-secrets ファイルに指定します。書式は以下の通りで 1 行に 1 接続ユーザーずつ指定します。

client server secret IP Address

client

ユーザー名を指定します。

server

/etc/ppp/options.pptpd の name で指定をした pptpd サーバー名を指定します。

secret server

このユーザーに設定するパスワードを指定します。

IP Address

リモートホストの 接続元 IP アドレスを指定します。* を指定することも可能です。

22.3.3. パケットフィルタリングの指定

PPTPは、TCP ポート 1723 と、GRE プロトコル(IPプロトコル 47 番)を使用します。ファイアーウォールで、これらのパケットを通すよう設定する必要があります。iptables で設定をする場合には以下の例のようにルールを追加します。実際には環境にあった設定を行ってください。

# iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
# iptables -A INPUT -p 47 -j ACCEPT

iptables の設定は以下のように確認できます。

# iptables -L
# iptables -t nat -L

次回起動時にも設定を有効にするには以下のように入力して保存します。

# /etc/init.d/iptables save
# chkconfig iptables on

iptables についての詳細は、第21章 を参照してください。

22.3.4. pptpd の起動と停止

PPTP サーバープログラムの実体は、pptpd というデーモンです。Turbolinux 10 Server で pptpd の起動や停止を行うには、/etc/init.d/pptpd スクリプトに以下のオプションを指定して実行します。

表 22-12. /etc/init.d/pptpd

オプション操作
startpptpd デーモンを起動します。
stoppptpd デーモンを停止します。
restartpptpd デーモンを再起動します。
statusデーモンの状況を確認します。

pptpd を起動するには、以下のコマンドを実行します。

# /etc/init.d/pptpd start

pptpd を停止するには、以下のコマンドを実行します。

# /etc/init.d/pptpd stop

Turbolinux 10 Server 起動時に pptpd を自動的に開始するには以下のように chkconfig コマンドを実行しておきます。

# chkconfig pptpd on

設定ファイルを変更した場合は、変更を反映するために pptpd を再起動します。

# /etc/init.d/pptpd restart

22.3.5. モバイルクライアントからの接続

Windows クライアントからの接続を確認します。以下は、クライアントが WindowsXP の場合の例です。

  1. マイネットワークの "ネットワークタスク" メニューから "ネットワーク接続を表示する" をクリックします。

  2. "新しい接続を作成する" をクリックします。

  3. 「新しい接続ウィザード」画面が起動しますので、[次へ]ボタンをクリックします。

  4. "職場のネットワークへ接続する(O)" を選択し[次へ]ボタンをクリックします。

  5. "仮想プライベートネットワーク接続(V)" を選択し[次へ]ボタンをクリックします。

  6. 任意の接続名を入力し[次へ]ボタンをクリックします。

  7. Turbolinux 10 Server で構築した PPTP サーバーの IP アドレスを入力し[次へ]ボタンをクリックします。

  8. 「新しい接続ウィザードの完了」画面が表示されたら[完了]ボタンをクリックします。以下の画面が表示されますので、PPTP サーバー の /etc/ppp/chap-secrets に登録したユーザー名とパスワードを入力し、[接続(C)]ボタンをクリックします。