この茅ヶ崎日記、実はさくらインターネットちゅーレンタルサーバに置いてあるんだけど、やたらサーバが重くてコメントうまく書けなかったり、Captcha出なかったり、そもそもエントリー書くのも苦労したりすることが多かった。月500円で10GBというリーズナブルなサービスだし、まあ、おおかたどっかのエロサイトが動画でもダウンロードさせまくっててサーバに負荷がかかってるのか、あるいは一台のマシンに収容している客数が多すぎるのか、そもそもマシンのパフォーマンスが低いのか、まあ、かなりクソなレンタルサーバだなとか思ってたわけだ。それが先月末あたりから、いよいよおかしくなってきた。もう、ホントになんにもできない。どうも、本気でオカシイ。
で、sakuraの問題をググってみたところが、どうもさくらってカネ払ってる客のサーバ、ひとっことの連絡もなく機能制限喰わせるらしい。あまりにエラー出まくりでユーザーサポートに問い合わせたら、機能制限してますなんてことをしれっと言われ、運用ツールのリソース情報を見てはじめてそれがわかった、なんて話があっちこっちに転がっている。そこでワシもあわててリソース情報見てみたら(そんなのがあるのをはじめて知ったわ)、なんと2011年4月からCGI/PHPの制限喰らってたんである。で、すでに書いてきているようにこの1月からスパマーからのアタックが3倍増になっちゃって、たぶん制限のレベルがよりきつくなったんだろう。ほんっとに、なにもできなくなった。とーにーかーくー、なんかやろうとすると「503 Service TemporarilyUnavailable」である。
で、サポートページで探してみると、「プログラムの過負荷によりCGI/PHPが制限されている場合は、プログラムの設計を見直す、アクセス数の多いコンテンツは 静的コンテンツに切り替えるなど、プログラムの起動数について改善をお願いいたします。対応完了後、メールにてご連絡ください。弊社にて「サーバの負荷」 などを確認し、制限解除を実施いたします」とある。共用サーバだから見られる情報はとても少ないにも関わらず、サーバの設定をなんとかして、負荷を軽減する対策を打ったら、その旨をメールしろ、そしたら制限を解除してやろう、というのがさくらの姿勢だ。殿様である。
負荷が高いのは、きっとスパマーがコメントを書くためのスクリプトを叩きまくってるせいなんである。そこでリンク元を変えずにコメントを書き込むcgiをリネームしたら(スパマーはもちろん、一般の読者のみなさんもコメントできなくなるけど、どうせ重くてCaptcha出ないし、それ乗り越えても503エラーが出るだけでコメントなんか書けないので強行)、script not found or unable to statと、エラーログに存在しないcgiを探すスパマーのアクセスがずらりずらりと並んでいくぢゃないか。もちろんblogでも何重かのフィルターをかけ、Captchaも入れてるのでそう簡単にSPAMコメントは書き込めないけど、とりあえず叩かれた数だけcgiは起動しちゃう。なるほどー。これが過負荷の原因かあ。さらにすごいなあと思ったのは、ちょいとコメントcgiの名前を変えてテストで作ったコンテンツからリンクを生かしてみると、あっちゅー間に新しいcgiの名前を見つけて、そこを叩いてくること。さすがはロボットである。
しかしロボットはエントリー内容なんか読んでないので、コメントできないよ、と書いてあるエントリーにコメントしようとしてくる。それを利用して、何度かcgi名変えてリンク張り直したりしながら叩いてくるIPをどんどんリストアップし、.htaccessに並べていく。script not foundばかりだったエラーログが、どんどんclient deniedになっていく。すると、これまで出てこなかったIPが湧き出してcgiを叩きはじめるので、それをまたピックアップしてはwhoisで情報を検索し、denyのリストに追加していく。もう、モグラ叩きだ。で、だいたいすべてのエラー内容がdeniedになったのでサポートに連絡すると、26時間後、こんな返事が来た。
—
現時点ではご利用サーバへの影響も見受けられませんため、制限を解除いたしました。
しかしながら、今後同様にサーバに許容範囲を超える過負荷等が発生しました場合、再度制限が設けられる可能性がございます。予めご了承くださいますようお願いいたします。
—
あのなー、こっちがよからぬCGIでも動かしまくって、それでサーバに過負荷がかかりまくったってなら、勝手に制限されてもしょうがないかもしれないけど、たちの悪い国のスパマーが勝手にガンガン叩いてきてたって、正常に繋がっちゃうと、それは記録には残らないんである。エラーログはエラーのログなんだから、エラーが出てなかったらこっちにはわからんっちゅーの。ていうか、カネもらってサーバ貸してるんだから、負荷がキツくなったのなら、これこれこういう状態だからなんとかしろ、とかせめて顧客にメールくらいするべきじゃないのか? どうせ制限だって自動でかけてるんだろうから、そのとき自動でメールも出せばいいじゃないか。
まあ、コメント機能を使えない状態にしてスパマーのエラーが出るように仕向け、とりあえず当面の攻めてくる敵は.htaccessで防いだけれど、支那のIP全部を防げてるわけじゃないだろう。やがて次々と、新しいIPから攻めてくるだろう。.htaccessでcnドメインを拒否しても、そもそもそんなドメイン名乗るような行儀のいいサイトなんかほぼ皆無。こっちもサーバ管理が仕事じゃないんだから、いつもエラーログとにらめっこしてるわけにも行かない。てなわけでいろいろググった結果、新たなコメント書き込みcgi名を作るその前に、JavaScriptを使って各エントリーページからコメント投稿cgiのファイル名を見えなくする、という手を打ったんだけど、ふつーにやったんでは確かにformのところは隠蔽できるけど、scriptタグの中にはしっかり表示されちゃう。それをエントリーページの外に出すスクリプトもあったけど、そうするとmt.jsという JavaScript ファイルに表示されちゃうわけで、こりゃ抜本的解決にはならないなー。ていうか、すでに隠蔽したはずのコメントcgiも発見されて、deniedではあるがURLは叩かれ続けている。まあ、一時は1000行しか残らないエラーログが、わずか20分であふれてたんだけど、それが2時間半くらいは持つようになってきたから、少しはあきらめた支那人が、いや、支那ロボットが出てきたのかも。
うーん、どうしたもんかなー。というところで、いまここ。だんだん支那が嫌いになってきたぞ。(-_-;;