UbuntuのApache2にModSecurityをセットアップしたときのメモ。

PC版へ 2023年10月23日

Ubuntu上で稼働している Apache2 に、ModSecurity をセットアップしてみました。

Apache自体は既に問題なく動作しているという前提で、まずはモジュールをインストール。

sudo apt install libapache2-mod-security2

続いてルールをインストール。

sudo apt install modsecurity-crs

上記の手順でUbuntu公式リポジトリからインストールされる Core Rule Set は、ちょっとだけ古いバージョンです。

この記事を書いている時点での OWASP ModSecurity Core Rule Set の最新バージョンは v3.3.5 ですが、

が提供されています。

Ubuntu公式からルールセットをインストールすると、security2.conf 内に記述されている各種confファイルやルールファイルへのパスを編集する必要がないので、作業が多少楽になります。

手動で最新版のルールセットをインストールしたい! という場合は、この記事ではなく、例えば『How to Set Up ModSecurity with Apache on Debian/Ubuntu - LinuxBabe』などを参照してください。本記事とは、ファイルの設置場所が異なったりします。

libapache2-mod-security2 をインストールすると、/etc/modsecurity/ に modsecurity.conf-recommended というファイルがインストールされるので、これを modsecurity.conf にリネームして編集。

sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo nano /etc/modsecurity/modsecurity.conf

7行目あたり:

実行テストを行うのならばこのまま(検知・ロギングのみを行います)、実際に稼働させたい場合は

SecRuleEngine On

に変更。

196行目あたり:

この部分では、ログに出力する項目を設定しています。

各アルファベットの意味するものについては 公式リファレンス などを参照。

必要に応じて適宜編集したら、保存。あとは初期値のままで、ひとまず動く筈。

モジュールを有効化して…

sudo a2enmod security2

編集した設定に文法間違いがないかどうか一応チェックしてから、Apacheを再起動。

sudo apache2ctl -t
Syntax OK   ← …と出たら大丈夫
sudo systemctl restart apache2

ModSecurity のログは /var/log/apache2/modsecurity_audit.log に出力されます。

まずは SecRuleEngine DetectionOnly で稼働させて、ログを眺めながら「正当なアクセスがブロックされていないか」等々をチェックした上で SecRuleEngine を On にするのが安全かと。

libapache2-mod-security2パッケージをインストールすると:

などなどがインストールされる。

modsecurity-crsパッケージをインストールすると:

などなどがインストールされる。

編集する可能性があるファイルは ※ を付けた設定ファイル。

ユーザ定義のルールを設定したい場合は、/etc/modsecurity ディレクトリ内に なんちゃら.conf という名前のファイルを作成してそこに記述するのが安心。こちらの記事参照。

各パッケージでインストールされたファイルのリストは

dpkg -L パッケージ名

で参照できる。

関連記事

コメント

現在、コメント機能は停止しています。