今日、出先からMTの記事を編集しようとしたら、「403 Forbidden」が表示されました。 それまでは何の問題もなく編集できていたのに、何で? まさかMySQLをInnoDBに変更した影響じゃないよね?
しばらく放っておいてもう一度チャレンジしたら、今度はちゃんと書き込みできました。 なんだか釈然としないですが、とりあえず書き込めたからまあいいかと。
ところで、ここ数日ですが DoS攻撃除けの mod_evasive が、頻繁にメールを送ってくるようになりました(といっても1日10件程度)。 急にアクセス数が増えた訳でもないのになんでだろう?
ググってみると、DoS攻撃を検出すると mod_evasive は「403 Forbidden」を返すんだとか。 ってことは、さっきの「403」は mod_evasive にハネられたってこと?
Apacheに対するサービス拒否攻撃を回避する方法 - 最新Windowsセキュリティ事情:ITpro
全体的に見ると,mod_evasiveをApacheに追加したのは妥当であるように思える。実際に,一部の侵入者を撃退する助けになってくれるからだ。だが設定を慎重に行わないと,Webページの先読み込みをどんどん行うブラウザやプロキシ・サーバーを使うような,比較的悪意のないユーザーまでブロックしてしまう可能性がある(こういった先読みは通常,ブラウジング体験を向上させたり,全体的なブラウジング速度を高めたりするのに使われる)。従って,設定を慎重に行い,(メール送信機能を使う場合は)mod_evasiveが送信する電子メールをきちんと監視して,設定が厳しすぎないかどうか判断する必要がある。
mod_evasive の設定は、以下のようにしていました。
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 2
DOSSiteInterval 1
DOSBlockingPeriod 60
DOSWhitelist 127.0.0.1 192.168.0.*
DOSLogDir "/var/log"
DOSEmailNotify (メールアドレス)
</IfModule>
この設定では2秒間(DOSPageInterval 2)に同じページを3回(DOSPageCount 3)参照するか、1秒間(DOSSiteInterval)に同じサイトへのリクエストが50回(DOSSiteCount 50)を超えると、DoS攻撃と認定して60秒間(DOSBlockingPeriod 60)アクセスを禁止します。
とりあえず、DOSPageCount を 3 → 5 に、DOSSiteCount を 50 → 70 に緩和してみました。
あと、出先のIPアドレスを、DOSWhitelist に登録しました。
これでしばらく様子をみることにします。