バリューサーバーから、中国からの不正アクセスが原因で高負荷制限を受ける
現在、当サイトは、バリューサーバーというレンタルサーバーを利用して運営しています。初心者向けとはいえない部分もあるものの、料金がわずか年額5000円ほどにもかかわらず高機能で自由度が高く、優れたサービスだと思います。
先日、そのバリューサーバーから、このte-koku.comの負荷が非常に高くなっており、制限をかけたと通知がありました。
実は、昨年の12月にある作業をして以来、高負荷の状態は続いていたのですが、これまでサイトがつながりにくくなったり、バリューサーバーから制限がかけられたり、警告がきたりということはありませんでした。
もともとバリューサーバーのキャパシティが大きいからだと思います。
なぜサーバーに負荷がかかっている状態がまずいのかといいますと、大半のレンタルサーバーは共用サーバーですから、一人の利用者があまりにも負荷のかかるようなスクリプトを置いたりすると、同じサーバーに同居している他の利用者にも影響が及んで迷惑がかかるからです。
あまりにも負荷が高過ぎると、しまいにはサーバーがダウンするということも考えられます。
なぜ高負荷状態が続いていたかは詳しいことはわかりませんが、中国からの不正なアクセスが異常なほど殺到したことと、Perlで作られた、ある掲示板CGIに攻撃が仕掛けられたことが関係しているのは確かのようです。
当サイトでは、10年近く前から、その掲示板スクリプトを利用していたのですが、あまりにも海外からのスパム投稿が多く、スパム対策の改造も施したのですが、そもそもスクリプトが古いために、スパムに十分に対処することができず、
昨年12月に、ついにそのスクリプトへの書き込みをできないように設定することにしました。
その際、過去のログを保存できないかと思い、未改造の同じスクリプトをもう一つFTPでアップロードして、あれこれ試してみました。
結果、もともと存在した掲示板への書き込みストップは行いましたが、新しくアップロードした掲示板は、削除せずにそのまま放っておいたのです。
このことに問題があったようです。
新しい掲示板は、ダウンロードした状態からなにも改造を施さずに、正常に動作していましたが、連日スパム攻撃を受け続けていたのです。
なんら改造していないわけですから、間違ったコードでスクリプトが暴走したというわけではなさそうです。
このことに気づかないまま、2ヶ月近くが過ぎ、他の件がきっかけで、バリューサーバーの管理画面の、ディスク使用容量の確認のページを開いて、ディスクの使用量と使用ファイル数を見た時、やっと異常に気づいたのでした。
なんと、100GBの容量のうち、いつの間にか半分の50GBが使用済みになっており、しかもファイル数は制限の50万個を超えていたのです。まったく身に覚えがありません。
また、保存されていたアクセス統計を見たところ、連日CPUの負荷率が異常に高くなっていたことに気づきました。なぜ今までなにも連絡が来なかったのかが不思議でなりません。
これまでサイトの表示が遅くなったり、503エラーが出たりしたことはありませんでしたが、おかしな兆候はありました。
まず、突然te-koku.comのドメインで運営しているサイトだけが表示されなくなったことです。サポートセンターに連絡したところ、すぐに返事が返ってきて、ネームサーバーの設定を見直すことで解決しました。
このことと上のスクリプトと関係があるのかはわかりません。
もう一つは、WordPressのアップデートができなくなったことです。これは間違いなく、ファイル数の制限が限界を超えていたことと関係しています。
一体何ごとかと思い、管理画面にある、ファイルをサイズ順に並べる機能を使って調べたところ、上の掲示板のスクリプトのファイルが怪しいということに気づきました。この機能がなければ、掲示板スクリプトが原因だと気づかないままだったかもしれません。
早速、FTPでアクセスしてそのスクリプトが格納されているフォルダを見たら、なんと、無意味なファイルが大量に生成されていたのです。ファイル名は連番なっていて、最後のファイルを見た限りでは、10万個はありました。
最大ファイル数が50万個に対し、削除した後に確認した使用ファイルが2万個ほどであることを考えると、合計で40万個以上あったということになります。
ファイル数制限がなければ、さらに生成されていたことでしょう。恐ろしいことです。
ファイルを開いてみたところ、これまで掲示板に投稿されていた、海外からのスパム投稿の文字列で埋め尽くされていました。
驚いて、早速フォルダごと削除を試みましたが、これが大失敗でした。後になって気づいたことですが、10万個以上、50GBにも及ぶ巨大なファイルが入ったフォルダーをFTPで削除しようとしたら、処理をするため、サーバーに尋常ではない負荷がかかります。
パソコンでも巨大なファイルを扱うときは、CPUの使用率が跳ね上がるのと同じことです。
しかも、FTPで削除しようにも、あまりにも巨大すぎて、処理が追いつかず、結局削除できませんでした。それにもかかわらず、私は何度も試しては失敗を繰り返しました。これではなおさらサーバーのCPUに負担がかかり、転送量も膨大なものになるでしょう。
途方に暮れた私は、今まで使ったことがなかった、SSHを使うことにしました。SSHというのは、コンピューターを遠隔操作する方法の一つで、レンタルサーバーですと、UNIXコマンドを打ち込んでファイルを操作することになります。
結果、問題のファイルが入ったフォルダを一瞬で削除することに成功しました。これほどあっけないものだとは思いませんでした。
結局、なぜ掲示板スクリプトのフォルダに大量のファイルが生成されていたのかはわかりません。そのスクリプトには、ファイルを無限に生成するようにはできていないのです。また、保存されていたログも誤って削除してしまいました。
何者かにコードが改ざんされたのかもしれませんが、スクリプトのcgiファイルはすでに削除してしまったため、確かめようがありません。
ともかく、問題のフォルダがすべて削除され、やっとサーバーにも平和が訪れただろうと思っていたら、今度はバリューサーバーから閲覧制限をかけたというメールが届きました。
これまで高負荷状態が続いていたにもかかわらず、何の警告もこなかったのに、その日になって制限がかかるということは、明らかに、上の悪戦苦闘が原因です。
今回の教訓としては、まず、スパム対策が十分でない古い掲示板スクリプトはもう使うべきではないということと、膨大なファイルを削除する場合、FTPを使うのは不適切であり、SSHを使うか、SSHが使えないレンタルサーバーの場合は、サポートセンターに連絡すべきこと、
定期的に管理画面でディスクやファイルの使用量や、ログを確認すべきことです。
サーバーが落ちたとかいうことは今までなかったものの、何らかの形で同じサーバーの利用者の方に迷惑がかかったとしたら、大変申し訳ないことです。