タイトルの件の調査結果をまとめます。大した事は載っていませんが。
発生した事象
2013-08-07 19時頃 ~2013-08-08 19時頃、当方の管理しているサイト群にアクセスしづらい状況が発生しました。当方がその事象を確認できたのは2013-08-08 24時頃でした。放置出来ない問題なので即座に調査を始めました。
調査過程と分析
2chのスレッドを追うと2013-08-07から事象が発生していたようですが、その日に当方は何もサイトを弄ってなかったのでそれが原因の可能性は否定できました。時限式の規制等は仕組みとしては組み込んでありますが、設定を確認しても誤爆する様な物はありません。管理下のサイトの多くで発生した事から、サーバ側の不調、或いはDNSエラーも考えましたが、これも各種情報から否定されました1。そういうわけでログを調べる事にしました。
次にApacheのエラーログを調べました。すると次のような行がその時間に頻発しているのが確認されました。
[Wed Aug 7 19:06:59 2013] [notice] [client *.*.*.*] AccessExceededNumber
このAccessExceededNumberはサーバ側のアクセス数上限設定を越えているよというメッセージで、ブラウザ側には503が返ってきて閲覧が出来なくなる状況になります。アクセス数が激増するような理由も無いのにおっかしいなー、と思いつつ今度はアクセスログを分析すると大体状況が見えてきました。大体次のような感じです。
- 海外からのcrawlerの或るページへの高頻度なアクセス
かなり怪しいアクセスです。複数のIP2を確認していますが、走査パターンやUA文字列が同じなのでほぼ確実に同一の方の仕業です3。そのアクセスの意図は走査パターンからは全く推察できなく、謎です。 - アクセスしづらい状況の成果、一部の善意?のユーザーのブラウザが暴走?し、再リクエストラッシュを繰り返すようになる
複数のIP/Host、複数のUAの同様の行為を確認。夫々のIPあたりで1リクエスト/秒程度だったので何も無いときは大したこと無い頻度なのですが、上のような状況下だったので更にアクセスがしづらくなることに。しかも、ブラウザ設定か何か分かりませんが1時間くらいも続行していました。
とった対策
そもそもの原因となった海外IPをdeny。ただ。BotNetの可能性も有るので別のIPからやってくる可能性もあり、急場しのぎになる可能性も有ります。UA文字列は共通4するのでそれでdenyする事も可能ではありますが、それ自体は一般的なので誤爆の可能性が大で選びにくい選択です。
結果
全サイトのログをステータスコードで集計したものが次の表です。
date ALL 200 304 503 500 403 ====================================================================================================== 2013-08-06 153,787 134,266 15,733 57 18 3,764 2013-08-07 173,856 107,096 7,445 26,007 29,443 4,023 2013-08-08 110,271 45,507 4,555 58,416 21 2,480 2013-08-09 159,082 103,337 12,703 2 92 43,004 2013-08-10 181,429 123,557 15,393 17 51 42,511 ====================================================================================================== 200 OK 304 Not Modified 503 Service Unavailable 500 Internal Server Error 403 Forbidden 夫々の意味はWikiPedia:HTTPステータスコード等で。 ------------------------------------------------------------------------------
これを見ると、明らかに七日にアクセス数が増え、それがそのまま503や500になっているのが見て取れます。この日に原因となるアクセスが始まったと思われます。九日になったあたりで当該IP/Hostを完全にdenyした結果、サイト閲覧に支障はなくなりました。denyした分はそのまま403に移っているようですが、アクセス即ぶぶ漬け強制給餌状態なので実質的負荷は対策前よりはるかに低下している筈です。……プラス4万アクセスもアクセス数を底上げされたらエラーにもなるわな、と。多分暫く403の量は変化しないでしょうが、拒絶されているのに気づいて収まる事を期待します。
今後の対応とまとめ
上述の通り、IP/Hostが一定ではなく、アクセスパターン等からの規制も難しいので抜本的対策は困難です。よって、サイトの状況とログのチェックを怠らない事くらいしかできることは無さそうです。国内からの行為だったら当該IP/Hostの所有者に対応をお願いしたりもするつもりだったんですが。
今回気づくのに遅れたのはサイトの状況確認等を編修告知メールやブロック告知メールのチェックで済ませていた事が原因だと思います。2chのスレを追っていたら早く気づけたかもしれませんが流石に毎日全てを追うのは無理です。また、トラブルはいつ起こるかわからない為、サイトを見て確認というのも難しいところです。アクセスログを日々チェックするのも流石に無理ですし。以上により当方の方針に関する効果的な改善案は思いつきません。よって当方の意識をもう少しあげることで同様の問題の再発を抑制、発生したとしてもその影響の低減を図る事をとりあえずの結論とします。
最後に、今回は対応の遅れにより多数の善意の利用者にご迷惑とご心配をおかけして申し訳有りませんでした。
追記 (2013-08-14)
実はサーバ障害も絡んでいたようです。
メンテナンス・障害情報・機能追加|さくらインターネット公式サポートサイト:
http://support.sakura.ad.jp/mainte/mainteentry.php?id=10760
ただ、上で触れた海外からの大量アクセスはその障害の症状を更に悪化させたのではないかと考えています。いずれ拒否対象にすべきアクセスだったので早いうち?に対応できて良かったかもしれません。
- サーバ不調はLoad Averageの記録から否定、DNS障害は軽く探しても特に見つからないので多分ありえなし [↩]
- 20以上。国籍も複数 [↩]
- BotNetかも? [↩]
- Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15 [↩]