Web Application Security Memo

ウェブセキュリティに関するメモ書き

OWASP BWAを使って気楽にModSecurityを試す方法

※当サイトにはプロモーションが含まれています。

公開日: 更新日:

OWASP BWA

OWASP BWAにはModSecurityが最初から導入されています。簡単に有効/無効の切り替えができるので、ModSecurityがどんな動きをするのかちょっと見てみる場合に便利です。

  • OWASP BWA (The Broken Web Applications) とは?
  • ModSecurityとは、Apache・IIS・Nginxに対して、HTTPリクエストをフィルタリングする機能やその他の機能を提供するソフトウェアです。これはWebアプリケーション層のファイアーウォール(WFA)となります。Apache License 2.0の基にリリースされているオープンソースのソフトウェアです。

OWASP BWAを導入した時点での状態

  • ApacheのモジュールとしてModSecurityが使用可能な状態になっていますが、機能的には無効になっています。
  • 検知を行うルール(検出パターン)として、OWASP ModSecurity Core Rule Setがセットアップされています。
    • 基本的なルールは /etc/apache2/modsecurity-crs/base_rules/ 以下に配置されています。
  • ModSecurityのログは以下のファイルに出力されます。
    • /var/log/apache2/error.log

用意されているModSecurity操作スクリプト

OWASP BWAには、ModSecurityを操作するシェルスクリプトが3つ用意されています。これらは/usr/local/binに配置されており、パスが通っているのでターミナルで以下のファイル名を入力すれば実行できます。

  1. owaspbwa-modsecurity-crs-log.sh
    • OWASP ModSecurity Core Rule Set を使って、HTTPリクエストの検知(ログに記述されます)を行いますが、そのHTTPリクエストをブロックしません。
  2. owaspbwa-modsecurity-crs-block.sh
    • OWASP ModSecurity Core Rule Set を使って、検知(ログに記述されます)とブロック行います。
  3. owaspvwa-modsecurity-crs-off.sh
    • ModSecurity rules を無効にします。(最初の状態です)

各操作スクリプトでやっていること

それぞれのスクリプトは、以下の2つの処理を行っています。

  1. Apacheの設定ファイル/etc/apach2/apache2.confはシンボリックリンクになっており、そのリンク先の設定ファイルを切り替えます。この設定ファイルは3つあります。

    1. /etc/apache2/apache2-modsecurity-crs-off.conf

      • 検知(ログ出力)もブロックもしません。
      • owaspvwa-modsecurity-crs-off.shがこの設定ファイルを使用します。
      • OWASP BWA導入時はこの設定ファイルが使用されています。
      • ファイルの内容
        • Apacheの通常の設定を行っているだけです。
    2. /etc/apache2/apache2-modsecurity-crs-log.conf

      • 検知(ログ出力)だけ実行します。
      • owaspbwa-modsecurity-crs-log.shがこの設定ファイルを使用します。
      • ファイルの内容
      •   # include the "base" configuration
           Include /etc/apache2/apache2-modsecurity-crs-off.conf
           # include the mod_security core rule set file that logs "bad" requests (but doesn't stop them)
           <IfModule security2_module>
            Include /etc/apache2/modsecurity_crs_10_config_log.conf
            Include /etc/apache2/modsecurity-crs/base_rules/*.conf
           </IfModule>
    3. /etc/apache2/apache2-modsecurity-crs-block.conf

      • 検知(ログ出力)とブロックを行います。
      • owaspbwa-modsecurity-crs-block.shがこの設定ファイルを使用します。
      • ファイルの内容
      •   # include the "base" configuration
           Include /etc/apache2/apache2-modsecurity-crs-off.conf
           # include the mod_security core rule set file that logs AND blocks "bad" requests
           <IfModule security2_module>
            Include /etc/apache2/modsecurity_crs_10_config_block.conf
            Include /etc/apache2/modsecurity-crs/base_rules/*.conf
           </IfModule>
  2. Apacheを再起動します。

実際に使ってみる

手順1: OWASP BWA を起動します。

手順2: OWASP BWA のターミナル上で ModSecurity を有効にします。

  • rootで作業します。
  • 今回は以下のコマンドを実行して、検知とブロックを有効にします。
  •   $ owaspbwa-modsecurity-crs-block.sh

手順3: Webサイトにアクセスします。

  • 今回は、DVWAの [SQL Injection]ページにアクセスします。(http://your_bwa_host/dvwa/vulnerabilities/sqli/) DVWA

手順4: 画面上のフィールドに、問題の起きそうなSQLを入力してSubmitボタンをクリックします。

  • 今回は、1'; DROP USER test1;--を入力して Submitボタンをクリックします。 Submit
  • 以下のようにアクセスが禁止されました。 Forbidden

手順5: ログファイルをチェックします。

  •   $ vi /var/log/apache2/error.log

参考

[最終更新日時: 2014年5月18日]

広告