サーバ高負荷への対処

時は2013年11月のこと。

我がレンタルサーバが酷く重くなってしまい、XoopsCubeへのログインもままならないのに気付いた。

元々は「banされているのを解除してくれ」というメールがきっかけだった。心当りの無い情報だったので早速調べようとしたところ、自分もログインできないほどの高負荷だったわけだ。うん、気付くの遅いよね。反省します。急いで対応します。

アクセスログを確認したところ、以前使っていた掲示板用cgiにDOS攻撃のようなPOSTが来ていた。どこかのサイトへのリンクを含んだSPAMのようだが、頻度や数が途方もない。これは「サイバー攻撃だ」と呼べるレベルのものだが、焦ったところで仕方は無い。使わないcgiを、リンクを切ったとは言え古いままで放置していた自分が悪い。

このcgiはテキストファイルを書き換えるタイプなので、ファイル読み書きが頻発することで負荷がかかってしまう。データベースにアクセスするタイプではないから、逆にWebサーバのみがやられることになる。とは言え、レンタルサーバだし同居しているユーザさんにも迷惑をかけてしまっていることだろう。

どうせ使っていないんだからと、まずはcgi本体をとっとと削除する。大量アクセスに対しては「404 Not Found」だけが返ることになり、負荷が一気に下がる。まずはこの状態で様子を見よう。

エラーが戻るようなら、SPAMアクセスもそのうち減ってくるだろう。

—- そして約半年が過ぎ —-

その後、高負荷状態は起きずサーバは安定を見せている。エラーログを確認したところ、それでもまだまだアクセスが来ている。人間だったら飽きているはずだけど、一度設置されたSPAMロボットが粛々と動き続けているんだろう。

ヒット数はかなり下がっているから、今度はエラーログが埋まらないように工夫をしてみよう。

ファイル名に合わせてApacheからエラーを返すようにすればエラーログには残らないようだ。ということで、mod_rewriteでステータス「410 Gone」を返すようにしてみた。掲示板cgiのファイル名は「keijiban」として.htaccessに反映したサンプルを書くとこんな感じだ。

RewriteEngine on
RewriteCond %{REQUEST_URI} keijiban [NC]
RewriteRule ^.*$ – [G,L]

実際には必ず同じURLめがけてくるわけでもないので、もうちょっと色んなパターンを置いてあるんだけどね。

[amazonjs asin=”4873111501″ locale=”JP” title=”Apacheハンドブック”]

 

アバター画像

taquinoy について

もう全然更新していなくて、今後も更新する予定は立っていなくて、でも捨てられずに残しています。
カテゴリー: IT and IS パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください