Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから
公開日:2013年11月17日
最終更新日:2014年5月19日

オープンソースの WAF である ModSecurity を CentOS にインストールする

はじめに

ModSecurity はオープンソースで開発されている WAF(Web Application Firewall)で、無償で利用することができます。

WAF とは、Web アプリケーションにリクエストが送信される手前でリクエストを取得して、内容を精査し、問題があればリクエストを拒否します。これにより仮に Web アプリケーションに脆弱性があったとしても WAF が守ってくれます。

WAF にも偽陽性や偽陰性の問題があるので、過信することはよくないですが、改修不能な Web アプリケーションの保護や、多層防御の一手法として有効です。

また、WAF には、ネットワーク型とホスト型がありますが、ModSecurity はホスト型の WAF になります。

構築する WebSecurity 環境

この記事で構築する WebSecurity の環境は以下の通りとします。

  • CentOS 6.4(64bit)
  • Apache 2.2.15
  • ModSecurity 2.7.3-2.el6
  • CRS 2.2.6-3.el6

なお、CRS (Core Rule Set)とは、ModSecurity で使用するルール集になります。

また、今回対応する脆弱性は影響の大きい以下の2つのみとします。

  • クロスサイト・スクリプティング
  • SQL インジェクション

これは、多くのルールを多くすると偽陽性の可能性が高まり、正常に Web アプリケーションが動作しなくなることを防ぐためです。

前準備

ModSecurity をインストールする前準備として、EPEL リポジトリを使用できるようにします。公式サイトだと標準リポジトリから yum でインストールできるように記載されていますが、実際には EPEL リポジトリからでないとインストールできませんでした。

EPEL リポジトリの追加方法は、以下の記事を参考にしてください。

ModSecurity のインストール

ModSecurity と CRS をインストールするには、以下のコマンドを実行するだけです。mod_security_crs を追加するのを忘れないでください。忘れると、ModSecurity は動作しても何も防御しません。

これで、ModSecurity が有効になりました。以下のアドレスにアクセスすると拒否されれば、問題なく ModSecurity が動作しています。

ですが、この状態ですと、たくさんのルールが適用されているため、これをクロスサイト・スクリプティングと SQL インジェクションに限定します。

下記コマンドで設定ファイルを編集します。

以下の3行目をコメントアウトして、その下に2行追加します。これで、2種類のルールのみが適用されるようになります。

Web サーバーを再起動します。

偽陽性のテスト

まず、ModSecurity を攻撃を検知のみにしてログを取るように設定し、Web アプリケーションに全体に対して一通りの操作をします。

ModSecurity をログの取得のみにするには、以下のファイルを編集します。

そして、SecRuleEngine を DetectionOnly に変更して設定を保存します。

Web サーバーを再起動します。

通常の操作が偽陽性として検知されたログは、/var/log/httpd/modsec_audit.log に保存されます。ログの内容を確認して、例外処理を httpd.conf に記述していきます。

modsec_audit.log には、以下のような情報が出力されます。

ちょっと面倒ですが、ログから id を見つけ出し、その id を例外処理として httpd.conf に記述します。

以下を httpd.conf に追記します。

Web サーバーを再起動します。

一通り偽陽性をなくしたら、SecRuleEngine を On に戻して、Web サーバーを再起動して導入終了です。

運用

WAF は導入すれば問題が全て解決する訳ではありません。定期的にログの確認し、偽陽性が起きている場合は対応が必要です。また、ModSecurity または CRS の定義がアップデートされたら分かるように継続的にチェックし、適用可否を判断することになります。

CRS のアップデートは以下のページでチェックできます。
OWASP ModSecurity Core Rule Set (CRS) CHANGES

WAF の導入によって Web アプリケーションはより安全になりますが、それ相応のコストがかかります。導入にあたっては、リスクとコストを含め総合的に判断することが必要です。

まとめ

ModSecurity はオープンソースで無償で使用することができますが、バージョンによって挙動が変わるという話もありますし、日本語情報はあまりない状態です。英語情報も決して多いとは言えません。

サポートには、Web の情報だけでなく、メーリングリストを活用していくとよいと思います(もちろん英語)。

WAF は多層防御として有用なので、環境が許せば導入してみるとよいでしょうね。このサイトにも、ModSecurity を導入したので、様子を見ていきたいと思います。

参考文献・サイト


スポンサーリンク




カテゴリー:ツール

Twitter でも、いろんな情報を発信しています。



“オープンソースの WAF である ModSecurity を CentOS にインストールする” への2件のフィードバック

  1. Maruo より:

    参考になります。たしかに、インストールは簡単だけど、ログチェックって大事だけど面倒くさそうですなぁ。
    いつか、手元のCentOSで試してみます。

    • fnya より:

      >>Maruo さん

      ModSecurity のログは、1つ1つが大きなデータになっているので、チェックするのは目チェックだと確かに厳しいかもしれませんね。

      簡単なプログラムを書いて、id を抽出するとよいかもしれません。

      あと、ModSecurity は運用段階になっても偽陽性の問題がちょくちょく起きるので、その度にログをチェックする必要があります。

      この辺が ModSecurity は大変だと言われる理由でしょうね。

      でも、無料で利用できる WAF ですので、一度試してみるのもいいですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA