トップ «Pound v1.6 リリース メイン 要らないギ術者一覧»

ad-hocな人生 - TAKESAKO (仮)


2003.12.05 mod_rpaf を試してみました

2003年12月18日 22:23更新

Miyauchiさんの日記 2003-12-03 - ReverseProxy を使う場合のアクセス解析 で指摘されていますが、 リバースプロキシ(Pound)を使うとバックエンドのApacheのアクセスログに記録される リモートIPがすべてプロキシのIPになってしまうといった問題があります。

実はその通りで、このままだと、Apache側のログで正常なアクセス分析ができないといった問題の他に、 リバースプロキシ経由でアクセスした場合、 リモートIPによるアクセス制限(allow from 192.168.xx.など)が有効にならないといった セキュリティ上の問題も発生します。

このままではまずいので、バックエンドの Apache に mod_rpaf というモジュールをインストールします。

# tar zxvf mod_rpaf-0.4.tar.gz
# cd mod_rpaf-0.4
# apxs -i -a -c mod_rpaf.c 

設定方法は簡単で、httpd.conf に以下の3行を追加するだけです。

RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1

mod_rpaf は、RPAFproxy_ips に書かれているIPアドレスからアクセスがあったときのみ、 リクエストヘッダ中の X-Forwarded-For: に書かれている内容を信用し、 Apache内部の r->connection->remote_ip のアドレスを書き換える といった処理を実行してくれます。 なお、localhost ではなく、別のサーバ上でリバースプロキシを動作させているときは、 RPAFproxy_ips にそのIPアドレスを追加してあげる必要があります。

したがって、リバースプロキシ経由でアクセスした場合の リモートIPによるアクセス制限もばっちり有効になりますし、 アクセスログに記録されるIPも外部のアドレスになります。 しかも、RPAFproxy_ips て指定しているIPアドレス以外のホストから X-Forwarded-Forヘッダを偽装しようとしても、 それができない仕組みになっていますので安心です。

Apacheと同一サーバ上でPoundを運用している場合、 外部からのアクセスログは以下のように変化します。

(使用前)
127.0.0.1 - - [05/Dec/2003:18:17:13 +0900] "GET / HTTP/1.1" 200 7243
127.0.0.1 - - [05/Dec/2003:18:17:46 +0900] "GET / HTTP/1.1" 200 7243
  ↓
(使用後)
218.239.251.xx - - [05/Dec/2003:21:08:48 +0900] "GET / HTTP/1.1" 200 7243
203.176.229.xx - - [05/Dec/2003:21:09:23 +0900] "GET / HTTP/1.1" 200 7243

mod_rpaf 便利です。 Apacheのフロントエンドに、 リバースプロキシ(Pound)を導入している方は 是非試しに使ってみてください。

※ ちなみに、現時点で mod_rpaf を Google で検索したら日本語のページ0件、全言語のページ約1,670件でした。 まだ日本ではあまり知られていないのかもしれません・・・

名前:
E-mail:
コメント:

編集