既存システムとの連携にはX-Forwarded-Forを活用

2016年1月20日by 林正人

WAFの導入時の注意点について前回までのブログ記事で説明しましたが、今回はWAFの導入でネットワークの変更をする際に課題となる送信元IPアドレス(以下、ソース元IP)の取得方法をご紹介します。この設定をせずにWAFを設定する手段が無いわけではありませんが、その場合セキュリティは弱くなります。その為、近年増加の一途をたどるウェブサイトへ対する攻撃にWAFに求められる防御力を活用するためには強く推奨される手法です。

1.x-forwarded-forによる対策

今回の記事のタイトルにもなっているx-forwarded-for(以下、xff)による対策は、ウェブサイトのユーザとウェブサーバを繋ぐネットワークの間に別の機能を持たせる機器やサービスを入れる場合に、ウェブサイトのユーザのソース元IPを拾う手法として一般的な方法です。具体的には、HTTPのヘッダ情報に「x-forwarded-for」というフィールドが存在していて、ロードバランサ、WAFなどの機器・サービスがウェブサイトのユーザのソース元IPを下記の例のように付加して、お客様のウェブサイトに受け渡す仕組みです。

X-Forwarded-For: xxx.xxx.xxx.xxx(ソース元IP)

これによってユーザのソース元IPをウェブサイトが特定することができるようになります。なお、Google Analytics のようなビーコン型の解析ツールはソース元IPを利用していないので、xffによる対応は必要としません。しかし、ログ収集型の分析ツールやリスクベース認証を実装している場合はソース元IPを利用することがありますのでxffによる情報収集ができるか確認が必要となります。分析ツールやリスクベース認証の提供者にソース元IP利用の有無を確認したり、テスト環境でテストを行ってみることを推奨します。

2.WAFの設置による違い

WAFの設置方法には大きく2つあり(ソフトウェアをサーバに直接インストールする手法などもあるため厳密には他にもありますが特徴的な違いが際立ち、かつ普及している2つの手法を比較して解説します)、ネットワーク構成をプロキシ型(図1)にするかブリッジ型(図2)にするかです。xffの対策はすべてのケースにおいて必要なわけではなく、プロキシ型でWAFが一度通信を受ける場合に必要になります。しかし、同じ機器で比較した場合でも、ブリッジ型に変更するとセキュリティ能力が低下する為、セキュリティを主眼に置くならプロキシ型を選択し、どうしてもネットワーク変更が難しい場合はブリッジ型を選択することになります。ブリッジ型では通信を横から見ている為、止めるべき攻撃が通ってしまう(攻撃が成功してしまう)リスクがあると言われます。その為、他の対策も含めてセキュリティがしっかりなされていて、ウェブサイトがxffから、ソース元IPを拾う事が出来ない場合のネットワーク構成として考えてください。

図1 WAF導入方法イメージ(プロキシ型)

図2 WAF導入方法イメージ(ブリッジ型)

3.xffに対応するウェブサーバ側設定

ウェブサーバソフト毎にxffへ対応する設定方法には違いがあります。詳細はバージョンにより違うことがありますので、あくまで利用バージョンを確認の上、バージョンに合った方法を確認の上ご利用ください。xffは一般的に使われている手法なので、それぞれの環境に合わせた設定はアプリやサービス提供者のウェブサイトなどをご確認ください。

IISの場合

従来はサードパーティー製のDLLなどを利用する必要がありましたが、今はMicrosoftから提供されている「Advanced Logging」と呼ばれるソフトウェアをダウンロードして使うことができます。(2015年12月現在、IIS 7、 IIS 7.5、 IIS 8に対応したバージョンが提供されています。)ダウンロードと利用方法については、Microsoftのサイトで確認ください。

Apache/nginxの場合

それぞれ設定ファイルでxffへの対応が可能です。ログファイルにソース元IPを集めたいのか、ソース元IPによってアクセス制限をしたいのといった目的により設定項目が変わることがありますので、ご利用のウェブサーバソフトのバージョンを確認の上、設定を行ってください。

4.まとめ

今回のブログではxffの対策に関して、出来るだけシンプルに説明しました。ただ前述した通り、WAF以外にもロードバランサやIPSなどの導入の際にもxffは利用されることがあります。そのようなネットワークにWAFを追加する場合には、xffで認識できるソース元IPは、一階層外のIPアドレスまでです。そのため、本当のソース元IPを拾うことが出来なくなってしまいます。このような場合、機器やサービスによって準備されている回避策が違いますのでWAFのベンダーや社内のネットワーク管理者とどのように対応するのかを調整することが重要になります。