【Mod Security】WordPress (apache) で使えるようにするの巻

Mod Securityについて

「Mod Security」はApacheやNginxで使えるソフトウェア型の「WAF」です!

WAFの説明や重要性などはこちらで紹介しています!
https://hacknote.jp/archives/37654/


Mod Securityのインストール

これだけでインストールはできます。

yum install mod_security mod_security_crs


WordPress用ルールセットの適応

「Mod Security」は上記のインストールをするだけで導入は可能です。

しかし、通常の設定ではほとんどすべてのトラフィックを弾いてしまうので使い物になりません。

ここでは「WordPress」で使えるようにするためのルールセットの設定を行っていきます。

かといって一つ一つ設定するのは無理なので、ここはWordPress用ルールセットを配布している「COMODO」様に頼ります!笑


まずはこちらでユーザ登録をしてからログインします。

そしたらこのような部分があると思うので、「Apache」を選択し、一番新しいバージョンになるように選び、「Download full ruluset」をクリックしてルールセットをダウンロードします。


ダウンロードできたら適応したいサーバにアップロードする必要があるので、FTPでサーバ上に配置するか、以下のコマンドで直接アップロードします。

何も考えないで/tmpにアップロードするのが無難だと思います。

scp -i [鍵.pem] [ルールセットまでのパス] [配置したいサーバ]:[配置したいディレクトリ]

使用例

scp -i test.pem ./Downloads/cwaf_rules-1.169.tgz ec2-user@IP:/tmp


ファイルのアップロードができたら次はルールセットをMod Securityが読み込んでくれるディレクトリに展開します。

ここで既存のルールセットはいらないので、こんな感じで削除しちゃいましょう!(Mod Securityのルールセットディレクトリは一緒じゃない場合もあるので適宜削除してください)

rm -rf /etc/httpd/modsecurity.d/activated_rule/*

そうしたら先程アップロードしたファイルを削除したルールセットディレクトリに展開します。

tar -zxvf /tmp/cwaf_rules-1.169.tgz -C /etc/httpd/modsecurity.d/activated_rule/


次に余分なルールセットの削除をします。

このルールセットにはWordPressには必要ないものもあるのでそれらの削除を行います。

cd /etc/httpd/modsecurity.d/activated_rule/
rm -f 26_Apps_Joomla.conf 27_Apps_JComponent.conf 30_Apps_WHMCS.conf 31_Apps_Drupal.conf 32_Apps_OtherApps.conf


最後にApacheを再起動したら終了です!

systemctl httpd restart


動作検証

試しにWordPressにアクセスしてみましょう。

ログインできなかったり、記事の投稿ができない場合はルールセットの適応が上手くいっていないので、解凍したルールセットがMod Securityのルールセット読み込みディレクトリに展開されているか確認しましょう。

次にブロッキングも検証してみましょう

適当な記事にアクセスしてURLの「p=[数字]」の部分を以下のようにしてみましょう。

http://[URL]?p=<script></script>

ここで「p=」がない人もURLの最後に「?p=…」の部分を付け加えてみましょう。

動作していればブロッキングされ、「Forbidden」と表示されるはずです!

以上、WordPress用ルールセットの適応方法でした!