インターネット環境に構築したredmineに不正アクセスが飛んでくるというエントリーを投稿したところ、
「Mod Security導入も一つの手」
というコメントをいただき、早速導入することにしました。
環境
- Ubuntu 20.04 (Linux Mintでも動作確認済み)
- Apache 2.4
参考
- https://idroot.us/install-modsecurity-apache-ubuntu-20-04/
- https://qiita.com/Ayutanalects/items/08660d78ed70818b5782
インストール方法
全て管理者権限で実施しました。
システム全体のアップグレード
aptitude update
aptitude upgrade
Ubuntu 20.04にMod Securityをインストールします。
aptitude install libapache2-mod-security2
systemctl restart apache2
ModSecurity 設定ファイル/ディレクトリをコピーしていきます。
cp -pi /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
cd /tmp
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd /owasp-modsecurity-crs
cp -pi crs-setup.conf.example /etc/modsecurity/crs-setup.conf
cp -pir rules/ /etc/modsecurity/
ModSecurityの設定を行います。
vi /etc/apache2/mods-available/security2.conf
設定ファイル内容
<IfModule security2_module>
# Default Debian dir for modsecurity's persistent data
SecDataDir /var/cache/modsecurity
# Include all the *.conf files in /etc/modsecurity.
# Keeping your local configuration in that directory
# will allow for an easy upgrade of THIS file and
# make your life easier
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
</IfModule>
設定反映
systemctl restart apache2
redmine設定ファイル修正
vi /etc/apache2/sites-available/VIRTUALHOST.conf
# 各自のバーチャルホストファイルに読み替えます
追記内容
# Mod Security
SecRuleEngine On
## ModSecurity有効化
SecRequestBodyInMemoryLimit 524288000
SecRequestBodyLimit 524288000
## ファイルのアップロードをできるようにします。
SecRuleRemoveById 949110
SecRuleRemoveById 941310
SecRuleRemoveById 980130
SecRuleRemoveById 911100
SecRuleRemoveById 200002
SecRuleRemoveById 200003
## 上記を無効化しないとチケット更新時にエラーとなりました(偽陽性)ため、上記ルールを除外します。
SecRule ARGS:modsecparam "@contains test" "id:4321,deny,status:403,msg:'ModSecurity test rule has triggered'"
## テスト用の検知パラメータを付け加えます。
設定反映
systemctl restart apache2
設定確認
ブラウザから
http://your-site-domain/redmine/?modsecparam=test
にアクセスし、「Forbidden」が表示されることを確認します。
また、
- チケットの更新ができること
- ファイルのアップロードができること
をそれぞれ確認しました。