なんという嫌がらせ2


前回の日記に書いた嫌がらせのスパム攻撃は同じIPアドレスからの投稿だったので、このIPアドレスをはじく事にした。今はそのIPアドレスから投稿しようとしても投稿されずにNot found(404)ページに飛ばされるだけ。
というわけなので、今回の嫌がらせはこれで終了と思ったんだが、そうはいかなかったorz
このスパム投稿、もう何度トライしても投稿できないはずなのにどうも諦めずに何度もトライしているらしい。しかも凄まじい数の投稿を一気にやろうとしている。もともとスペックが高くないサーバを利用しているので、その度にService Unavailable(503)状態になってサイトがダウンしてしまう。
更にアクセスの間隔も短く、5分に2~3回くらい一斉投稿を食らってサイトが麻痺しているという状態。
なにこの嫌がらせ。
うちのサイトのアクセスなんてたいした事ないのに、、、何ゆえにスパムを投稿したがるのだろう?

と、いうわけでこの大量アクセスをなんとかしたいのですが、今のところ解決策がなくてお手上げ状態です。サーバのサービスにFirewall機能とかあれば使いたいのですが、残念ながらそんなに高機能なサービスじゃありません。

とりあえずトライした事↓

・アクセスを長時間捕まえる。
相手がどのくらい同時アクセスしてくるかわからないけど、例えば平行して5セッションくらいで同時接続してくるならば、その5セッションを捕まえて離さなければいいのではないか?という発想。
スパム投稿が来たらあるphpプログラムにまわす。そしてそのphpプログラムは何もしない。sleep関数を使ってひたすらぼーっとする。ただ、その間スパム投稿は「投稿がまだ完了していない」という状態になるため、投稿相手も長時間待たされる事になる。そして待たされている間、次の投稿も出来ないと。
捕まえている間、多少こっちのサーバのリソースは食われるけど、背に腹は変えられない。とりあえず実装してみた。
…予想以上に同時セッションが来すぎてこっちのサーバが耐えられませんでしたorz
くそぅ、相手は本格的に大量にスパム投稿するツールを使ってるんだな。 もう勝てる気がしない。それどころかサーバのプロセスを全てスパム投稿を捕まえる処理に回されて、サイトが完全に機能麻痺に陥るところだっだ…危ない。

・HTTPステータスコードを変えてみる。
今はスパムが来たときにNot found(404)を返すようにしています。いわゆる「アクセスされてもそこにファイルはありませんよー」というヤツ。これをForbidden(403)に変えてみる。これはいわゆる「あなたのアクセスは許可されていません。残念でした。」という感じ。
スパム投稿先がHTTPのステータスコードを理解しているならForbidden(403)を渡してあげると諦めてくれるかなぁと。
…結果、そんなのガン無視で投稿が止まりませんorz

・該当IPを持つプロバイダに訴える
こっちで対処できないなら、送信元を止めてしまえばいいのでは。という発想。
まぁ実はこの方法、英語でスパム投稿が来ている時点で海外が相手先だと思うので、もし日本のプロバイダからの発信だったらラッキーと思ってた。
IPの逆引きは出来なかったので、whoisで調べると国は「LV」となっていた。どこ?LVって?
というわけでトップレベルドメインがLVの国を調べました。

LV…ラトビア

しかも母国語は「ラドビア語」だってさ。しらねーorz
もしかしたらラドビアの誰かのPCがクラックされてスパム送信マシンになってるとかなのかなぁ。と、思ったものの、確認するすべもなくお手上げ。


そして今もスパム投稿は止むことはない。そのうち止んでくれるかなぁ。
受身じゃないと守れないってのはきついね。安いレンタルサーバプランも最近はいっぱいあるけど、攻撃に弱かったりってのがわかりました。が、個人で利用している分には、安かろう悪かろうで仕方ないか。
会社で利用する分には客が出来るだけ安いレンタルサーバがいいと言っても、このあたりの問題も考慮して選択しないとだね。


[追記]
DNSの設定を変えて、自宅サーバに一度飛ばし、そこから今のWebサーバに飛ばす方法を思いついた。
スパム投稿してるIPはうちに自宅サーバに来た時点で切り捨てると。自宅サーバは処理速度は遅いけど、プロセス制限とかはかなりゆるいため大丈夫なはず。
欠点として構成の変更が超面倒なのと、Webサーバのアクセスログ解析が役に立たなくなるところだろうか。
…思いついたけど、とりあえず保留にしておこう…。

[追記2]
大量にアクセスがきてサイトが死んでるときのService Unavailable(503)画面をカスタマイズして日本語を出すようにした。これで突然エラーになっても日本語なのでみんな抵抗がないはず。諸外国の方は頑張って日本語読んでください♪
もしこの画面に遭遇したら大きく深呼吸をしてページのリロード(再読み込み)を行うと、多分ちゃんと見れるようになります。

作成日:2009/10/17 19:00:40
トラックバック  ※トラックバックは承認後に表示されます。
TrackbackURL:このページのトラックバックの受付は終了しています。

トラックバックはありません。
コメント
名前:

タイトル:

コメント: