![]() |
【連載】
セキュアなWebサイトを運営するための
Webアプリケーションに潜むセキュリティホール
第11回 Webアプリケーションファイアウォールによる防御
中村隆之
三井物産セキュアディレクション
2004/8/7
| mod_securityとは |
mod_securityは、GNUライセンスの下で公開されている、オープンソースのWAFである。mod_securityの公式サイトでは、「intrusion detection and prevention engine」と説明されている。
| 【mod_security】 http://www.modsecurity.org/ |
●mod_securityをApacheに組み込む
本稿ではmod_securityを動かす環境として、
RedHat Linux 9.0
apache 1.3.31(DSO対応版でソースからコンパイルしてインストール)
を使用した。ほかの環境でも導入手順は大して変わらないだろう。なお、Windows上のApacheでは試していないのだが、Windows版のmod_securityはソースではなくDLLで提供されているので、インストールに関しては特に難しいことはないと思う。
mod_securityは、以下のURLから最新版をダウンロードできる。
| 【mod_security最新版ダウンロード】 http://www.modsecurity.org/download/index.html |
本稿執筆時点での最新版は1.8.2である。筆者は「mod_security-1.8.2.tar.gz」を使用した。コンパイル/インストールは以下の4ステップで終了する。
(1) tar zxvf mod_security-1.8.2.tar.gz
(2) cd mod_security-1.8.2
(3) cd apache1
(4) sudo /usr/local/apache-1.3.31/bin/apxs -cia mod_security.c
apache 2.xを使用している場合は、ステップ(3)で、ディレクトリ「apache2」に移動する。それ以外の手順は同じである。以上でモジュールが作成され、モジュールを読み込む設定がhttpd.confに書き込まれているはずである。
以降では、mod_securityの設定を行っていくことにしよう。mod_securityの設定は、ほかのモジュールと同じく、httpd.confを編集する。
| mod_securityの主な機能 |
mod_securityは、apacheに組み込むモジュールであるため、apacheが使用するデータすべてに対して処理を行うことができる。mod_security が行う主なチェックを以下に示す。
| ・データのエンコードチェック(URLエンコード、Unicodeエンコード) ・データのバイト値の範囲チェック ・Serverヘッダの書き換え ・接続元IP、ホストのチェック ・URLパラメータに対するチェック ・POSTデータに対するチェック ・URLパラメータ/POSTデータの各パラメータ名のチェック ・URLパラメータ/POSTデータの各パラメータ値のチェック ・Cookie名、Cookie値のチェック ・特定のHTTPヘッダのチェック ・特定の環境変数のチェック ・特定のパラメータ(URL/POST)の値のチェック ・特定のCookieの値のチェック |
また、それぞれのチェックに引っ掛かった場合の動作として、
| ・許可/不許可 ・リターンコード ・リダイレクト ・プログラムの実行 ・ロギング |
などを指定することができる。
| 設定サンプル |
まずは以下の設定を見てほしい。
|
これは、非常に簡単なクロスサイトスクリプティング対策用の設定である。順に説明していこう。
| 3行目 | mod_securityの機能をONにする。ONにしないと全く動かない。 |
| 4行目 | POSTデータもスキャンするようにする。 |
| 6行目 | フィルタにマッチした場合のデフォルト動作。 ここでは、 ・不許可 ・ロギング(apacheのエラーログに出力) ・ステータスは406(Not Acceptable)を返す という設定。 |
| 8行目 | フィルタにマッチした場合のみAuditログに記録。 このAuditログはデフォルト動作でのロギング用ファイルとは別物。 |
| 9行目 | mod_securityのAuditログファイル。 ここに出力される内容は8行目で指定したもの。 |
| 11行目 | URLパラメータとPOSTデータのすべてをチェック対象とする。 データ中に、正規表現「("|>|<|'|script|onerror)」にマッチする個所があるかどうかチェックする。 |
まずは上記のような簡単な設定を用いて、正しく動作するかどうか確認するところから入ろう。上記の設定をhttpd.confに書き込んだら、apacheを再起動しよう。このとき、ログファイル「audit_log」が生成されているか確認しておく。このファイルが生成されていない場合はインストールがうまくいっていない可能性があるので、インストール手順をもう一度見直してほしい。
| 動作確認 |
mod_securityをインストールしたapache上に適当なCGIを作成しておこう。本稿では以前より使用しているショッピングサイトを使用することにする。
ログインフォームに「"><s>a</s>」と入力してみる(図3)と、エラー画面が表示される(図4)。このときステータスコードは406と表示されている。
![]() |
| 図3 ログインフォームに「"><s>a</s>」と入力 |
![]() |
| 図4 エラー画面 |
また、同時にAuditログファイルにも出力されているので確認しておこう。攻撃リクエストがそのままの状態でログに出力されていることが分かる。
|
今回は、非常に簡単なサンプル設定を用いて、mod_securityの動作説明を行った。mod_securityは、手軽にインストールでき、正しく設定すれば、かなり強固な防御策となり得る。前述したように、残念ながらmod_securityではロジック系の攻撃には対処することはできないが、オープンソースであるので、今後そのような機能が実装されていくことを期待しよう。次回はもう少し実践的なmod_securityの使用方法について説明することにする。
|
2/2
|
「第12回」へ |
| Index | |
| Webアプリケーションファイアウォールによる防御 | |
| Page1 Webアプリケーションファイアウォール ポジティブモデルとネガティブモデル WAFの種類 |
|
| Page2 mod_securityとは mod_securityの主な機能 設定サンプル 動作確認 |
|
Webアプリケーションに潜むセキュリティホール バックナンバー
- 第1回 サーバのファイルが丸見え?!
- 第2回 顧客データがすべて盗まれる?!
- 第3回 気を付けたい貧弱なセッション管理
- 第4回 エラーメッセージの危険性
- 第5回 Webアプリケーションの検査テクニック
- 第6回 Webサイトのセッションまわりを調べる方法
- 第7回 攻撃されないためのセッション管理の検査方法
- 第8回 Webサイトの問い合わせ画面に含まれる脆弱性
- 第9回 オンラインショッピングにおける脆弱性の注意点
- 第10回 安全なWebアプリケーション開発のススメ
- 第11回 Webアプリケーションファイアウォールによる防御
- 第12回 mod_securityのXSS対策ルールを作成する
- 第13回 OSコマンドインジェクションを防ぐルールを作成する
- 最終回 Webアプリケーションの脆弱性を総括する
| Profile |
| 中村隆之(なかむらたかゆき) 三井物産セキュアディレクション株式会社勤務。 セキュリティコンサルタントとして主にWebアプリケーションのセキュリティ検 査に従事しており、大手ポータルサイト、オンラインバンキングなどの数多くの 検査実績を持つ。また、セキュアネットワーク及び暗号関連の研究に携わり、大 手製造、官公庁、金融機関へのセキュリティシステム導入など数多くの実績を持 つ。 三井物産セキュアディレクション株式会社 主に、不正アクセス監視サービス、セキュリティ検査、セキュリティポリシー策定支援などのサービス提供している。また、セキュリティに関する教育サー ビスも実施中。 |
|
||||||||
| Security&Trust記事一覧 |
TechTargetジャパン
- Facebook タイムライン利用時の「鉄則」 (2012/2/9)
ユーザーインターフェイスの変更措置に伴い浮上した、Facebookの「過剰な情報提供」のリスクと対策とは - 無料サービスなら通信内容を記録してもいいの? (2012/1/13)
無料の公衆無線LANサービスが、ユーザーに無断で通信履歴を記録していたことが判明し、話題に - 攻撃はまるでレーザービーム (2011/12/26)
2011年に話題となった標的型攻撃は「人」という弱点ををねらい打ちにしました。では、人に教育さえしておけば防げるものなのでしょうか? - 見せたくないなら「持たせない」が鉄則! (2011/12/15)
逆コンパイル対策で難読化したのに、大事なデータが解析されちゃった? Androidアプリのセキュリティの道は深い
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



