Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ModSecurity — ModSecurityは、Apache、IIS、Nginx向けのオープンソースでクロスプラットフォームなWebアプリケーションファイアウォール(WAF)エンジンです。堅牢なイベントベースのプログラミング言語を備えており、Webアプリケーションに対するさまざまな攻撃から保護し、HTTPトラフィックの監視、ロギング、リアルタイム分析を可能にします。 | Kitploit
ツール/GitHubGitHub/owasp-modsecurity/modsecurity
防御ツール脆弱性分析ウェブプロキシと傍受WAFバイパスウェブセキュリティネットワークセキュリティ侵入検知APIセキュリティアンチボットログ分析アンチボット 第2位
9.7k1.7k899日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
防御ツール 第16位
ネットワークセキュリティ 第18位
WAFバイパス 第20位
ウェブプロキシと傍受 第20位
GitHubowasp-modsecurity/modsecurity

ModSecurity

ModSecurityは、Apache、IIS、Nginx向けのオープンソースでクロスプラットフォームなWebアプリケーションファイアウォール(WAF)エンジンです。堅牢なイベントベースのプログラミング言語を備えており、Webアプリケーションに対するさまざまな攻撃から保護し、HTTPトラフィックの監視、ロギング、リアルタイム分析を可能にします。

リポジトリを見るウェブサイト

Quality Assurance Build Status

LibmodsecurityはModSecurity v3プロジェクトのコンポーネントの一つです。このライブラリのコードベースは、ModSecurity Connectorsへのインターフェースとして機能し、Webトラフィックを受け取って従来のModSecurity処理を適用します。一般的には、ModSecurity SecRules形式で記述されたルールを読み込み/解釈し、Connectorsを介してアプリケーションから提供されるHTTPコンテンツに適用する機能を提供します。

Apache向けのModSecurity(別名ModSecurity v2.x)をお探しの場合、それは現在もメンテナンスされており、以下から入手可能です: こちら。

このプロジェクトと旧ModSecurity(v2.x.x)の違いは何ですか?

  • Apacheへの依存関係がすべて削除されました
  • パフォーマンスの向上
  • 新機能
  • 新しいアーキテクチャ

LibmodsecurityはModSecurityプラットフォームの完全な書き直しです。ModSecurityプロジェクトは当初、単なるApacheモジュールとして始まりました。時が経つにつれ、このプロジェクトは需要に応じて拡張され、NginxやIISを含む(ただしこれらに限らない)他のプラットフォームをサポートするようになりました。追加のプラットフォームサポートに対する高まる需要に応えるため、このプロジェクトの基盤となるApacheへの依存関係を削除し、よりプラットフォームに依存しない形にする必要が生じました。

この目標の結果として、LibmodsecurityはApache Webサーバーに(コンパイル時および実行時の両方で)依存しなくなるように再設計されました。この副作用の一つとして、すべてのプラットフォームでユーザーはパフォーマンスの向上を期待できます。さらに、この機会を利用して、ユーザーが長い間求めていたいくつかの新機能の基盤を築きました。例えば、JSON形式での監査ログのネイティブサポートを目指しており、その他にも将来のバージョンで多数の機能を提供する予定です。

もはや単なるモジュールではありません。

'ModSecurity'ブランチには、従来まとめてパッケージ化されていた伝統的なモジュールロジック(Nginx、Apache、IIS向け)はもはや含まれていません。代わりに、このブランチにはこのプロジェクトのライブラリ部分(libmodsecurity)のみが含まれています。このライブラリは、私たちが「Connectors」と呼ぶものによって利用されます。これらのコネクタはお使いのWebサーバーとインターフェースし、ライブラリが理解できる共通形式でデータを提供します。これらのコネクタはそれぞれ別のGitHubプロジェクトとして管理されています。例えば、NginxコネクタはModSecurity-nginxプロジェクト(https://github.com/owasp-modsecurity/ModSecurity-nginx)によって提供されています。

これらのコネクタを分離しておくことで、各プロジェクトが異なるリリースサイクル、課題、開発ツリーを持つことが可能になります。さらに、ModSecurity v3をインストールする際には、必要なものだけを正確に入手でき、使わない余分なものは含まれないということでもあります。

コンパイル

コンパイルプロセスを開始する前に、必要な依存関係がすべてインストールされていることを確認してください。
詳細については、依存関係およびGitサブモジュールのセクションを参照してください。

コンパイル後、ビルド環境やプラットフォームに問題がないことを確認してください。
ユニットテストおよび回帰テストの実行を強く推奨します。これらのテストユーティリティはtests/サブフォルダにあります。

動的ライブラリとして、libmodsecurityはオペレーティングシステムが動的ライブラリを見つけられる場所にインストールする必要があります。

Unix (Linux、macOS、FreeBSD、…)

Unix系システムでは、プロジェクトはコンパイルプロセスにautotoolsを使用します。

gitチェックアウトで作業している場合は、ビルド前にリポジトリを再帰的にクローンするか、すべてのサブモジュールを初期化してください。
Gitサブモジュールのセクションも参照してください。

git clone https://github.com/owasp-modsecurity/ModSecurity ModSecurity
cd ModSecurity

このリポジトリはgitサブモジュールを使用しています。クローン後、すべてのサブモジュールを初期化して取得してください:

git submodule update --init --recursive

サブモジュールがすべて正しく初期化されているかは、次のコマンドで確認できます:

git submodule status

正しく初期化されたサブモジュールにはコミットハッシュが表示されます。 先頭の - は、そのサブモジュールが初期化されていないことを示します。

その後、ビルドプロセスを開始できます:

./build.sh
./configure
make
sudo make install

ディストリビューション固有のビルドの詳細は、Wiki を参照してください: Compilation Recipes

Windows

Windows ビルドの情報はこちらにあります。

依存関係

  • このライブラリは C++17 標準を使用して C++ で書かれています。
  • 「Sec Rules Language」パーサーの生成には Flex と Bison (Yacc) を使用します。
  • 必須の依存関係には YAJL が含まれます。ModSecurity はログ記録とテストフレームワークに JSON を使用するためです。
  • libXML2 (オプション) は XML リクエストの解析に使用されます。

正規表現エンジン (PCRE2 / PCRE)

  • SecRules における正規表現処理は、Regex ユーティリティ (src/utils/regex.*) を介して実装されています。

  • デフォルトでは、ModSecurity は正規表現処理に PCRE2 を使用します。

  • これは @rx、@rxGlobal、@verifyCC などの演算子で使用されます。

  • ビルド時の動作:

    • デフォルト: PCRE2 が検出され、使用されます。
    • フォールバック: --with-pcre が明示的に指定された場合 (WITH_PCRE)、レガシーな PCRE を使用できます。
  • つまり、明示的に別途設定しない限り、現在のビルドは PCRE2 を前提としています。

  • @rx と @rxGlobal はデフォルトで DOTALL | MULTILINE を指定してパターンをコンパイルします: DOTALL は . が改行にマッチできるようにし、MULTILINE は ^/$ が被検査文字列全体の先頭/末尾だけでなく 内部の各行の改行位置でもアンカーできるようにします。代わりに DOTALL | DOLLAR_ENDONLY でコンパイルするには --enable-regex-dollar-endonly=yes を渡します: MULTILINE がない場合、 ^/$ は被検査文字列全体の先頭/末尾でのみアンカーし、さらに DOLLAR_ENDONLY は $ が 末尾の改行の直前ではなく、そこでのみマッチするよう制限します。DOTALL はいずれの場合も 変更されないため、パターンは引き続き . を介して内部の改行をまたいでマッチできます。 これは ModSecurity v2 の @rx の動作と一致します。このフラグはデフォルトで無効です。詳細は issue #3295 を参照してください。

その他の依存関係はすべて SecRules 内で指定される演算子や設定ディレクティブに関連するものであり、コンパイルには必須ではない場合があります。

演算子関連の依存関係

  • libinjection は演算子 @detectXSS と @detectSQL に必要です。
  • curl はディレクティブ SecRemoteRules に必要です。

これらのライブラリが存在しない場合、ModSecurity は該当する演算子やディレクティブのサポートなしでコンパイルされます。

Git サブモジュール

リポジトリには以下のサブモジュールが含まれています:

  • others/libinjection – @detectSQLi および @detectXSS 演算子で使用されます。

  • others/mbedtls (TF-PSA-Crypto サブセット) – 暗号化関数およびヘルパー (ハッシュ、base64 など) に使用されます。

    注: 新しい mbedTLS v4 のレイアウトは、古い v3 の構造と互換性がありません。 内部構造が大幅に変更され、多くのコンポーネントがサブモジュール (例: TF-PSA-Crypto) に移動しました。

    PR #3532 のマージ後、以下を実行する必要があります:

    git submodule update --init --recursive
    

    これにより、必要なすべてのサブモジュールが取得されます。この手順を行わないと、プロジェクトは正常にビルドされません。

すべてのサブモジュールが正しく初期化されたことを確認するには、次のコマンドを実行します:

git submodule status

出力例:

bc625d5... bindings/python
2117822... others/libinjection (v4.0.0)
0fe989b... others/mbedtls (v4.1.0)
a3d4405... test/test-cases/secrules-language-tests

サブモジュールが欠落している場合、先頭に - が付いて表示されます。例:

-bc625d5... bindings/python

先頭の - は、そのサブモジュールが初期化または取得されていないことを示します。

  • test/test-cases/secrules-language-tests – make check で使用される、SecRules の適合性および回帰テストの共有スイート。

  • bindings/python – ModSecurity の Python バインディング(コアライブラリのコンパイルには不要)。

others/libinjection と others/mbedtls はソースビルドに事実上必須であり、ビルド前に初期化する必要があります。

オプションの外部依存関係

いくつかの外部ライブラリはオプションであり、以下を含む追加機能を有効にします:

  • libcurl – SecRemoteRules に必要

  • LMDB – 永続ストレージのサポート

  • Lua – スクリプトのサポート

  • XML ライブラリ – 拡張 XML 処理

  • GeoIP(レガシー)/ MaxMind

    レガシーな GeoIP C API(libGeoIP)は MaxMind によって非推奨とされ、もはやメンテナンスされていません。 上流のリポジトリはアーカイブされており、新規のデプロイには使用すべきではありません。

    代わりに、ModSecurity は活発にメンテナンスされている最新の MaxMind DB API(libmaxminddb) をサポートしています。

    設定中に次のようなメッセージが表示される場合があります:

    + GeoIP/MaxMind                                 ....found
        * (MaxMind) v1.12.2
           -lmaxminddb , -I/usr/include/x86_64-linux-gnu
    

    これは libmaxminddb が使用されていることを示します(推奨)。

レガシーな GeoIP ライブラリではなく、MaxMind DB を使用することを強く推奨します。

ライブラリのドキュメント

ライブラリのドキュメントは、Doxygen 形式でコード内に記述されています。このドキュメントを生成するには、"doc/" サブフォルダにある提供の設定ファイル「doxygen.cfg」を使用して doxygen ユーティリティを実行してください。これにより、使用例を含む HTML 形式のドキュメントが生成されます。

ライブラリの利用

ライブラリは C++ および C のインターフェースを提供します。一部のリソースは現在 C++ インターフェース経由でのみ利用可能です。たとえば、カスタムロギング メカニズムを作成する機能などです(これらのロギングメカニズムがどのように動作するかは、回帰テストを参照してください)。 目標は、両方の API(C、C++)が同じ機能を提供することです。 特定のインターフェース経由で API の一部が欠けていることに気づいた場合は、issue を開いてください。

examples サブフォルダ内には、API の使用方法に関する簡単な例があります。 以下にいくつかを示します:

C++ を使用した簡単な例

ツールをダウンロード