modsecurity(WAF)をWordPressと同じサーバ上に導入できたものの、出力されたログファイルを生で読むのはなかなか厳しそうです。
また、modsecurityのログを可視化してくれるjwallというツールがあるようですが、導入はなかなかむずかしそう(ubuntu用に提供されていない?)に感じています。
そこで、とりあえずコマンドラインで簡単にログの内容を確認する方法を記載しておきます。
コマンドラインでログを分析
Linuxのコマンドである、cat やgrep, sortなどを駆使することで、ログをいろいろな角度から分析できそうです。
1.ルールIDでカウント
以下のコマンドを利用することで、ルールID毎に何件検知されているかを確認することが可能です。
$ sudo cat modsec_audit.log | grep “\[id” | sed -e “s/^.*\[id/\[id/g”| sed -e “s/”\].*$/”\]/g” | sort | uniq -c | sort -n -r
これを実行すると、以下の様な実行結果が表示されます。これで、ルールID毎の検知数が分かります。
<コマンドの実行例>
362 [id "990012"]
88 [id "959151"]
14 [id "990002"]
12 [id "950120"]
4 [id "960024"]
2 [id "950005"]
2 [id "950907"]
ちなみに各 sed の構文では以下の処理をしています。
“s/^.*[id/[id/g“・・・行の先頭(^)から[idまで(.*[id)を、[idに置換
“s/”].*$/”]/g“・・・”]から行の最後まで(.*$)を、”]に置換
これにより、[id “XXXXXX”]のみを抽出しています。
2.送信元IPアドレスでカウント
今度は、通信の送信元でアラートをカウントしてみます。
なお私の環境の場合、AWSのゲートウェイでNATされている関係上、modsec_audit.logのBセクションに記載されている X-Forwarded-For のIPアドレスで調べてみました。
$ sudo cat /home/bitnami/stack/apache2/logs/modsec_audit.log | grep X-Forwarded-For | sort | uniq -c | sort -n -r | more
<コマンド実行例>
90 X-Forwarded-For: 44.224.22.196
45 X-Forwarded-For: 122.97.215.50
44 X-Forwarded-For: 103.86.49.187
33 X-Forwarded-For: 106.161.128.84
30 X-Forwarded-For: 44.225.84.206
19 X-Forwarded-For: 106.161.129.59
12 X-Forwarded-For: 195.54.160.121
12 X-Forwarded-For: 106.161.131.223
8 X-Forwarded-For: 5.101.0.209
5 X-Forwarded-For: 198.71.239.46
5 X-Forwarded-For: 106.161.117.191
4 X-Forwarded-For: 66.249.79.211
4 X-Forwarded-For: 66.249.71.97
4 X-Forwarded-For: 131.72.236.178
3 X-Forwarded-For: 91.234.217.2
3 X-Forwarded-For: 80.82.78.104
3 X-Forwarded-For: 210.212.250.45
3 X-Forwarded-For: 198.71.238.22
3 X-Forwarded-For: 194.31.64.180
3 X-Forwarded-For: 118.157.150.165
2 X-Forwarded-For: 97.74.24.222
2 X-Forwarded-For: 97.74.24.201
2 X-Forwarded-For: 97.74.24.140
--More--
IPアドレスを逆引きしたところ、一番多い 44.224.22.196 はアメリカのAmazon、122.97.215.50 は中国の China Unicom という通信会社のネットワークを使っている機器からのようですね。
こんな感じでもう少しmodsecurityのチューニングをしていきたいと思っています。