さくらのVPSでiPhone用の野良WiFi通信傍受対策のPPTPサーバ(VPN)を設定したメモ(CentOS5)
野良WiFiの危険性については、こちら[FONなど野良WiFiの通信内容傍受の危険性について - nori_no のメモ]に書いた通りですが、さくらのVPSを借りたので、iPhone で FON などの野良WiFiに接続したときの通信傍受対策用 PPTP (VPN)サーバの設定をしてみました。
※見よう見まねで設定していますので、突っ込み歓迎です。
ほんとは 王道の L2TP/IPsec を設定したかったのですが、こちらの通り[さくらのVPSでiPhone用の野良WiFi通信傍受対策のL2TP/IPsecを設定しようとして挫折したメモ(CentOS5) - nori_no のメモ]挫折してしまいましたので、ネットワークセキュリティ屋さん的には過去のプロトコルと言われている? PPTP で設定したいと思います。
(2010/9/19追記)L2TP/IPSecでも設定できたのでこちらに追記しました[さくらのVPSでiPhone用の野良WiFi通信傍受対策のL2TP/IPsec(VPN)を設定したメモ(CentOS5) - nori_no のメモ]
まぁ、野良WiFi盗聴対策用としては、PPTPでもまずは充分かなと思います[ITmedia エンタープライズ:How-To:特別企画:PPTPによるVPNの構築]。
インストールと設定
こちらの方のサイトの通り pptpd (PoPToP)をインストールします[http://yanagi-oomori.blogspot.com/2010/03/centos-54pptp.html]。
ファイルパスの”i386”の部分はさくらVPS標準のCentOS5.5の場合”x86_64”になります。そこだけ修正したものを以下に引用させていただきます。
1.pppのインストール ※nori_no注:pppはすでにインストール済みかもしれません。 # yum instal ppp 2.pptpd最新版ソースの取得 # wget http://downloads.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz 3.ソースの展開 # tar zxvf pptpd-1.3.4.tar.gz 4.ソースの一部書き換え ※nori_no注:これをやらないとlogwtmpでエラーを吐きます。 # cd pptpd-1.3.4 # vi pptpd.spac ← SPEC ファイルを修正 plugins/patchlevel.h ← 57行目 "2.4.3" を "2.4.4" に修正 (echo '#undef VERSION'; echo '#define VERSION "2.4.4"') 5.ソースの再圧縮 # cd .. # tar czvf pptpd-1.3.4-1.tar.gz pptpd-1.3.4 6.rpmパッケージ生成 # rpmbuild -ta pptpd-1.3.4-1.tar.gz 7.rpmパッケージインストール # cd /usr/src/redhat/RPMS/x86_64 # rpm -ivh pptpd-1.3.4-1.x86_64.rpm
設定もだいたい上記サイトの通りなのですが、私が設定した内容を書いておきます(コメント行と空行は削除しています)。
/etc/pptpd.conf
option /etc/ppp/options.pptpd localip 192.168.252.1 (PPTPサーバ自身のIPとして任意のプライベートIPセグメントから振る) remoteip 192.168.252.128-254 (iPhoneなどのPPTPクライアントに振るIPレンジとして、任意のプライベートIPセグメントから振る)
/etc/ppp/options.pptpd
name (任意の接続名。chap-secretsのserver欄を*以外にする場合にはこれと合わせる必要がある) refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns (さくらさんのDNS IP一つ目を書きました) ms-dns (さくらさんのDNS IP二つ目を書きました) #proxyarp (デフォルトで設定されていますが今回の構成では不要なのでコメントアウトします) lock nobsdcomp novj novjccomp nologfd
/etc/ppp/chap-secrets
"ユーザ名" * "接続パスワード" *
OS側の設定(iptables と sysctl)
ここで、さくらのVPSにはグローバルIPが一つ割り当てられていますが、PPTP クライアントからの通信は、そのグローバルIPにNATして出て行ってもらわないといけません。よって以下の設定を入れます。
iptables -t nat -A POSTROUTING -s 192.168.252.0/24 -j MASQUERADE
※IPセグメントはpptpd.confで書いたセグメントと合わせる必要があります。
iptables の内容は、忘れないうちに save してしまいましょう(さくらのVPSはiptablesの設定に失敗してもWebからシリアルコンソールが使えますので、安心してsaveできますね)。
service iptables save
※メモ:iptables の NAT 設定内容確認は "iptables -t nat -L"
また、ルーティングしてもらう必要があるので、/etc/sysctl.conf の以下の行を 1 に書き換えます。
# Controls IP packet forwarding net.ipv4.ip_forward = 1
あと、念のため同じ /etc/sysctl.conf の最後に以下の行を付け加えています。
net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.accept_redirects = 0
sysctl.conf の設定を反映させます。
# sysctl -p
なお、さくらのVPSサービスでは、IPの詐称や変なIPでパケットを出してしまった場合の対策がされている[http://twitter.com/nori_no/status/23057398842] という事ですので、よっぽど変な事しても他の方のサービスには影響が出ないようになっているようです。さすがです。
クライアントの設定
[PPTPクライアントの設定メモ - nori_no のメモ]
私の確認できる以下のすべての環境で接続できる事を確認しました。
| クライアント | 回線 | IPセグメント | 接続可否 |
|---|---|---|---|
| iPhone | SoftBank 3G | global IP | OK |
| iPhone | 自宅WiFi | NAT配下(private IP) | OK |
| iPhone | 自宅から見えてる野良 FON_FREE_INTERNET WiFi | NAT配下(private IP) | OK |
| iPhone | (9/28追記)東京メトロのHOTSPOT | global IP | OK |
| Windows7 | 自宅有線LAN | NAT配下(private IP) | OK |
| WindowsXP | EMOBILEデータ通信カード | global IP | OK |
| WindowsXP | 自宅WiFi | NAT配下(private IP) | OK |
※自宅のルータはプロバイダ(KDDI)提供のものですので、PPTPパススルーに対応しているのかなどの詳細な仕様を知りません。