---
title: "4-2-2　ModSecurity遮断（Nginx）"
canonical: "https://manual.shadan-kun.com/space/KSK2INST/48201729/4-2-2%E3%80%80ModSecurity%E9%81%AE%E6%96%AD%EF%BC%88Nginx%EF%BC%89"
format: markdown
---
> ℹ️ 既存のNginx利用がある場合、リコンパイルが前提の手順となります。

#### STEP1　mod_securityモジュールとNginxをビルド・インストール

(1) ModSecurityのソースコードを任意のパスにダウンロード・展開します（ここでは、/usr/local/srcにダウンロードしています）。

```
# cd /usr/local/src
# curl -OL https://github.com/SpiderLabs/ModSecurity/releases/download/v2.9.3/modsecurity-2.9.3.tar.gz
# tar zxvf modsecurity-2.9.3.tar.gz
```


(2) ModSecurityのビルドに必要なモジュールをインストールします。既にインストール済みのモジュールはインストール不要です。

**【RedHat系】**

```
# yum -y install make gcc automake autoconf libtool pcre-devel libxml2-devel curl-devel httpd-devel
```


**【Ubuntu系】**

```
# apt -y install make build-essential libxml2-dev libcurl4-openssl-dev apache2-dev libpcre3-dev zlib1g-dev
```


(3) ModSecurityをビルドします。

```
# cd /usr/local/src/modsecurity-2.9.3
# ./configure --enable-standalone-module
# make
```


(4) エージェントをインストールするサーバで利用しているNginxのバージョンのソースコードをダウンロードして展開します。（本マニュアルでは、Nginxのバージョン1.14.2の例を記載しています。）

```
# cd /usr/local/src
# curl -OL http://nginx.org/download/nginx-1.14.2.tar.gz
# tar xvfz nginx-1.14.2.tar.gz
```


(5) Nginxをビルドします。

```
# cd /usr/local/src/nginx-1.14.2
# ./configure --add-module=../modsecurity-2.9.3/nginx/modsecurity
# make
# make install
```


(6) Nginxで読み込まれているモジュール一覧にmodsecurityがあることを確認します。

```
# /usr/local/nginx/sbin/nginx -V
※ configure arguments: --add-module=../modsecurity-2.9.3/nginx/modsecurity が出力されます
```


#### STEP2　構成ファイルを取得

ModSecurity遮断の構成ファイル「shadan-kun-v2_modsecurity_sh.tar」をダウンロード・展開します。

```
# wget https://docs.shadan-kun.com/manual/shadan-kun-v2_modsecurity_sh.tar
# tar xvf shadan-kun-v2_modsecurity_sh.tar
```

SHA256ハッシュ値：`55d4ea5f9da1155a8d0f258281a0bf877cda2847aff26a7b9eb18aa3bba4e91d`


【展開後のファイル構成】

| **ファイルパス** | **内容** |
| --- | --- |
| shadan-kun-v2_modsecurity_sh/CHANGELOG.md | 変更履歴 |
| shadan-kun-v2_modsecurity_sh/**firewall-drop.sh** | ルール変更制御プログラム |
| shadan-kun-v2_modsecurity_sh/**modsecurity.sh** | ルール生成プログラム |
| shadan-kun-v2_modsecurity_sh/**modsecurity.conf** | 初期configファイル |


#### STEP3　ファイル配置・更新

ファイル配置および環境依存箇所の更新を実施します。

> ✅ **補足**
> ✅ 
> ✅ - 本項以降のエージェントのインストールディレクトリは「/var/shadan-kun」とします。


##### **(1) firewall-drop.sh**

「shadan-kun-v2_modsecurity_sh.tar」内のfirewall-drop.shを配置します。

```
ファイルパス：
/var/shadan-kun/active-response/bin/firewall-drop.sh

パーミッション：
-rwxr-xr-x 1 root ossec 6841 May 31 22:34 firewall-drop.sh
```

> ✅ **補足**
> ✅ 
> ✅ - 既存ファイルが存在する場合は上書きで保存してください。


##### **(2) modsecurity.conf**

「shadan-kun-v2_modsecurity_sh.tar」内のmodsecurity.confを配置します。

```
ファイルパス（例）：
/usr/local/nginx/conf/modsecurity.conf
```

> ✅ **補足**
> ✅ 
> ✅ - ファイルの名称はModSecurityバージョンにより異なります。本手順では**modsecurity.conf**で統一します。
> ✅ - 既存ファイルが存在する場合は上書きで保存してください。


##### **(3) modsecurity.sh**

1.「shadan-kun-v2_modsecurity_sh.tar」内のmodsecurity.shを配置します。

```
ファイルパス：
/var/shadan-kun/active-response/bin/modsecurity.sh

パーミッション：
-rwxr-xr-x 1 root ossec 6841 May 31 22:34 modsecurity.sh
```


2. ご利用環境にあわせてファイル内容を編集します。

| **3行目** | mod_security の設定ファイルのパスを指定  
（記入例）`MODSECURITY_CONF=/usr/local/nginx/conf/modsecurity.conf` |
| --- | --- |
| **7行目** | Webサーバの再起動コマンドを記載  
（記入例）`service nginx reload > /dev/null 2>&1` |


#### STEP4　ログフォーマット変更・ModSecurity有効化

nginx.confを編集し、送信元IPアドレスが取得できるようにWebサーバのログフォーマットの変更を行います。

（記入例）X-Forwarded-Forで送信元IPアドレスを取得

```
log_format  main  '$http_x_forwarded_for $remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent"';
```


ModSecurityを有効化する設定を追加します。

```
http {
    ModSecurityEnabled on;              
    ModSecurityConfig modsecurity.conf; 
```


#### STEP5　サービス再起動

1. Nginxを再起動します。

```
# systemctl restart nginx
```


2. エージェントを再起動します。

```
# /var/shadan-kun/bin/ossec-control restart
```