タグ: mod security

Mod SecurityによるIPアドレスブロック。(ネガティブリスト型)

攻撃の兆候

Mod Securityを導入して一昼夜――

公表していないURLであるにも関わらず、しっかりと攻撃の予兆がログに現れました。

※この方法で、サーバにアクセスすることなく、redmineへのログを一元管理しています。

この、不正アクセスの予兆を示したアクセス元を調べると

Torから来ている望ましくないものまであり、昨今の驚異を嫌でも感じずにいられません。

そこで、Apacheの設定ファイルではなくMod Securityの機能を用いてIPアドレスを遮断していきます。

参考:

Apache×Mod SecurityでカンタンWAF構築

https://qiita.com/m0nch1/items/ac7255399366fb113a82

環境

  • Ubuntu 20.o4 (Linux Mintでも同様)
  • Apache 2.4
  • Mod Security導入済み

手順

すべて管理者権限で実施しています。

バーチャルファイル編集

vi /etc/apache2/sites-available/VIRTUALHOST.conf
# 使っているバーチャルファイルに読み替えます
追記内容
## Negativelist
SecRule REMOTE_ADDR "@pmFromFile negativelist.txt" "phase:1,id:2,deny,msg:'Negativelisted IP address'"

ネガティブリスト作成

vi /etc/etc/apache2/sites-available/negativelist.txt
ネガティブリストの内容
XXX.XXX.XXX.XXX
YYY.YYY.YYY.YYY
#ブロックしたいIPアドレスを記入していきます
# 設定確認のため、自分自身のアクセス元を記入しました

ネガティブリスト反映

cd /etc/apache2/site-enabled
ln -s ../sites-available/negativelist.txt negativelist.txt
# 設定ファイルの位置を明示していないのでシンボリックリンクを張ります

設定変更

apache2ctl configtest
#Syntax OK を確認します
systemctl restart apache2

設定確認

上記手順で、「自分自身をブロックする」設定を入れ、redmineにアクセスして「403」が返ってくることとエラーログにその旨が記録されていることを確認。(その後、このアドレスは削除しています)

今後の展望

  • 不正アクセスを検知したらそのIPアドレスを自動的に追記する
  • 数が増え続けるため、いっそのことポジティブリストに切り替える

などが必要になってきます。

Apache + redmine環境にMod Security導入。

インターネット環境に構築したredmineに不正アクセスが飛んでくるというエントリーを投稿したところ、

「Mod Security導入も一つの手」

というコメントをいただき、早速導入することにしました。

環境

  • Ubuntu 20.04 (Linux Mintでも動作確認済み)
  • Apache 2.4

参考

インストール方法

全て管理者権限で実施しました。

システム全体のアップグレード

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」が表示されることを確認します。

また、

  • チケットの更新ができること
  • ファイルのアップロードができること

をそれぞれ確認しました。

Powered by WordPress & Theme by Anders Norén