---
title: "5-1　POSTデータ出力設定（Apache）"
canonical: "https://manual.shadan-kun.com/space/KSK2INST/13795472/5-1%E3%80%80POST%E3%83%87%E3%83%BC%E3%82%BF%E5%87%BA%E5%8A%9B%E8%A8%AD%E5%AE%9A%EF%BC%88Apache%EF%BC%89"
format: markdown
---
Apache環境ではmod_dumpostモジュールをインストール・有効化することでPOSTデータのログ出力が可能です。

> ⚠️ **注意**
> ⚠️ 
> ⚠️ - ミドルウェアの設定内容についてはサポート対象外です。詳細はサービス提供元のドキュメント等をご確認ください。


### **mod_dumpost導入手順**

ご利用のOSにより導入手順が異なります。

#### **Redhat系の場合**

1. mod_dumpostパッケージをダウンロード

```
# git clone https://github.com/danghvu/mod_dumpost
```


2. 必要なパッケージをインストール

```
# yum install httpd-devel
```


3. mod_dumpost モジュールをインストール

```
# cd mod_dumpost
# make
# make install
```


4. Apache設定を変更

`設定ファイル：httpd.conf`

```
# mod_dumpostをロード
LoadModule dumpost_module modules/mod_dumpost.so

# ログ出⼒レベルを”info”に変更
LogLevel info
```


5. Apacheを再起動

```
# /etc/init.d/httpd reload
```


6. 動作確認

POSTリクエストのデータがerror_logに出力されていることを確認

```
# curl http://127.0.0.1/ -X POST -d "testdata"
# tail /var/log/httpd/error_log
[Sun Feb 13 08:32:58.505435 2022] [:info] [pid 6162:tid 140297044453120] [client 127.0.0.1:47340] "POST / HTTP/1.1" testdata
```


#### Ubuntu系の場合

1. apache2-threaded-devをインストール

```
sudo apt-get install apache2-threaded-dev
```


2. Apache設定を変更

ApacheのLogLevel warnからinfoに変更します。

`設定ファイル：httpd.conf`

```
# LogLevel warn
LogLevel info
```


3. mod_dumpostを任意のディレクトリにコピー

```
git clone https://github.com/danghvu/mod_dumpost
```


4. mod_dumpostのディレクトリに移動

```
# cd mod_dumpost
```


5. mod_dumpostをインストール

1行目 "APXS = apxs" を "APXS = apxs2"に変更後、make実行します。

```
# vi Makefile
# make
# make install
```


6. Apacheを再起動

```
# /etc/init.d/apache2 restart
```


7. 動作確認

POSTリクエストを送信します。

```
# curl http://127.0.0.1/ -X POST -d "testdata"
# tail /var/log/apache2/error.log
[Fri Jun 17 13:03:52.800420 2016] [:info] [pid 13441] [client 127.0.0.1:12345] "POST / HTTP/1.1" testdata
```


#### Modsecurity遮断方式の場合（追加手順）

攻撃遮断くんをModsecurity構成で導入している環境でmod_dumpostを有効化した場合、error_logには中間機器のIPアドレスが出力されます。

|  |
| --- |
| 【Modsecurity遮断構成例（中間機器あり）】  
クライアント[203.0.113.100] -> 中間機器[192.168.0.1] -> Webサーバ（Apache） |


上記構成の場合、mod_remoteipを有効化することでerror_logにクライアントのIPアドレス出力が可能です。

> ✅ **補足**
> ✅ 
> ✅ - Apache2.4ではmod_remoteipがインストールされています（Apache2.2では別途インストールが必要です）


**【手順】**

1. Apache設定を変更

`設定ファイル：httpd.conf`

```
# mod_remoteipモジュールをロード
LoadModule remoteip_module modules/mod_remoteip.so

# 中間機器（192.168.0.1）が付与するXFFヘッダーはクライアントIPアドレスと判定
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 192.168.0.1

#「%a」にREMOTE_ADDRを出力
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
```


2. Apacheを再起動

```
# /etc/init.d/httpd reload
```


3. 攻撃遮断くん設定を変更

遮断対象をX-Forwarded-ForヘッダーからREMOTE_ADDRに変更します。

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

```
# 変更前
# SecRule REQUEST_HEADERS:X-Forwarded-For "@Contains ${IP_ADDRESS}" "log,drop,id:${RULEID}, msg:'deny by ossec-agent'"
# 変更後
SecRule REMOTE_ADDR "^${IP_ADDRESS}$" "log,drop,id:${RULEID},msg:'deny by ossec-agent'"
```


4. 動作確認

POSTリクエスト（中間機器経由）のデータがerror_logに出力されていることを確認

```
# curl http://example.com/ -X POST -d "testdata"
# tail /var/log/httpd/error_log
[Sun Feb 13 08:32:58.505435 2022] [:info] [pid 6162:tid 140297044453120] [client 203.0.113.100:47340] "POST / HTTP/1.1" testdata
```