UbuntuのApache2にModSecurityをセットアップしたときのメモ。
Ubuntu上で稼働している Apache2 に、ModSecurity をセットアップしてみました。
Apache自体は既に問題なく動作しているという前提で、まずはモジュールをインストール。
続いてルールをインストール。
上記の手順で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 nano /etc/modsecurity/modsecurity.conf
7行目あたり:
実行テストを行うのならばこのまま(検知・ロギングのみを行います)、実際に稼働させたい場合は
に変更。
196行目あたり:
この部分では、ログに出力する項目を設定しています。
各アルファベットの意味するものについては 公式リファレンス などを参照。
必要に応じて適宜編集したら、保存。あとは初期値のままで、ひとまず動く筈。
モジュールを有効化して…
編集した設定に文法間違いがないかどうか一応チェックしてから、Apacheを再起動。
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 という名前のファイルを作成してそこに記述するのが安心。こちらの記事参照。
各パッケージでインストールされたファイルのリストは
で参照できる。
コメント