Skip to content

ModSecurity (Web Application Firewall)

概要

Docker Infrastructure プロジェクトのセキュリティボーナス要件として、ModSecurity v3 (Libmodsecurity) を Nginx に統合しています。 さらに、ルールセットとして業界標準の OWASP Core Rule Set (CRS) v4 を採用し、一般的なWeb攻撃(SQLインジェクション、XSSなど)からアプリケーションを保護します。

実装方法

Debian の標準パッケージ (apt install nginx) では ModSecurity モジュールが含まれていないか、バージョンが古い場合があるため、ソースコードからのコンパイル を行っています。

Dockerfile 解析

(srcs/requirements/nginx/Dockerfile)

ビルドプロセスは以下の4段階で構成されています。

1. ModSecurity ライブラリ (Libmodsecurity) のビルド

dockerfile
# 依存関係のインストール (libxml2, libpcre2, etc.)
RUN apt-get install -y libpcre2-dev libxml2-dev ...

# ModSecurity のソース取得とコンパイル
RUN git clone ... https://github.com/SpiderLabs/ModSecurity
RUN ./build.sh && ./configure && make && make install

2. ModSecurity-nginx Connector の取得

Nginx と ModSecurity を繋ぐためのコネクタモジュールです。

dockerfile
RUN git clone ... https://github.com/SpiderLabs/ModSecurity-nginx.git

3. Nginx 本体のコンパイル

公式ソースコードをダウンロードし、--add-module オプションでコネクタを組み込みます。

dockerfile
ENV NGINX_VERSION=1.26.2
RUN ./configure \
    --prefix=/etc/nginx \
    ... \
    --add-module=/opt/ModSecurity-nginx \
    && make && make install

4. OWASP CRS のセットアップ

dockerfile
# CRS v4.0.0 のダウンロード
RUN curl -L .../coreruleset-4.0.0.tar.gz ...

# 推奨設定の適用 (DetectionOnly -> On)
RUN sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' ...

設定ファイル

nginx.conf

location ブロックで modsecurity on を記述することで有効化します。

nginx
location / {
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
    ...
}

main.conf

ModSecurity の基本設定と OWASP CRS のルールをインクルードする集約ファイルです。

nginx
Include /etc/nginx/modsec/modsecurity.conf
Include /etc/nginx/modsec/owasp-crs/crs-setup.conf
Include /etc/nginx/modsec/owasp-crs/rules/*.conf

参考資料 (References)

Released under the MIT License.