71780
[docker で http
アクセスを記録するだけのコンテナ](https://ja.stackoverflow.com/questions/70686/docker-%e3%81%a7-http-%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e8%a8%98%e9%8c%b2%e3%81%99%e3%82%8b%e3%81%a0%e3%81%91%e3%81%ae%e3%82%b3%e3%83%b3%e3%83%86%e3%83%8a)

こちらの質問で mod_dumpio を教えていただいたんですが  
ログの中身が不要な情報が多すぎてみにくい上にカスタマイズ方法もわからないので

<https://cloudpack.media/31715>  
こちらを参考にして mod_security というのを入れようと思っています

Dockerfile

```

    FROM httpd
    
    RUN apt-get update
    RUN apt-get install -y libapache2-mod-security2
    
    COPY ./modsecurity.conf /etc/modsecurity/modsecurity.conf
    
```

とだけ書いて modsecurity.conf の中身はとりあえずブログと同じものにしました

```

    SecRuleEngine On
    SecRequestBodyAccess On
     
    SecAuditLog /var/log/apache2/post-request.log
    SecAuditLogParts ABCFHZ
    SecRule REQUEST_METHOD "POST" "id:100000,phase:2,nolog,pass"
    SecRule REQUEST_URI "^\/memo/write$" "id:100001,ctl:auditEngine=On"
    
```

コンテナに対してブログと同じ curl を叩いてみると当然 htdocs が空なので 404 になるんですが  
apache 自体は応答しています

```

    # curl localhost/memo/wirte -d 'test'
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>404 Not Found</title>
    </head><body>
    <h1>Not Found</h1>
    <p>The requested URL was not found on this server.</p>
    </body></html>
    
```

ただ肝心のログファイル /var/log/apache2/post-request.log には何も出力されません

そもそも httpd コンテナの場合 apache が /usr/local/apache2 に入っていて  
apt-get install だけで mod_security 関連の変更が加わってる様子がありません  
このモジュールを有効にするにはどうすればいいのでしょうか  
.so ファイルをどこかにおいて Load Module を書かないといけない気がするんですが  
apt-get でどこに何が配置されたのかがわかりません

<https://github.com/SpiderLabs/ModSecurity/wiki/Reference-
Manual-%28v2.x%29#Installation_for_Apache>  
公式のドキュメントには apt-get によるインストール方法ではなくソースからビルドする方法しか乗ってないんですが docker 上に入れたいのであまり
gcc とかビルドライブラリを入れてイメージを大きくしたくないです

* * *

前の質問と重複するんですがやりたいことは HTTP リクエストを受け取ってヘッダと POST BODY をログに残すだけの docker
コンテナを作リたいのですがもっと簡単に実現する方法ってないんでしょうか…
CC BY-SA 4.0
2020-11-06T07:53:40.627
71770
2020-11-07T06:41:19.627
2020-11-06T08:02:11.490
question
docker apache http
mod_security の設定方法
httpd コンテナは debian 10 ベースですが、/usr/local/apache2 にインストールされている
/usr/local/apache2/bin/httpd (2.4.46) は apt 管理ではなく、独自にインストールしたもののようです。

apt の mod_security を使うのであれば、apt install apache2 でインストールされる /usr/sbin/apache2
(2.4.38) を使う必要があります。
CC BY-SA 4.0
2020-11-07T06:41:19.627
71780
2020-11-07T06:41:19.627
4603
71770
answer