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

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 20.04 だと v3.2.0
  • 22.04 だと v3.3.2

が提供されています。

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パッケージをインストールすると:

  • /etc/apache2/mods-available/security2.conf
  • /etc/apache2/mods-available/security2.load
  • /etc/modsecurity/modsecurity.conf-recommended

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

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

  • /etc/modsecurity/crs/crs-setup.conf
  • /etc/modsecurity/crs/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
  • /etc/modsecurity/crs/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
  • /usr/share/modsecurity-crs/owasp-crs.load
  • /usr/share/modsecurity-crs/rules 以下にルールファイル

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

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

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

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

dpkg -L パッケージ名

で参照できる。

カテゴリ: