« make_bm_linkなどCMS.pmでの「Subroutine xxx redefined」エラー | Kazuの挑戦日記TOP

MTスパム対策その後

コメントやトラックバックのスパム対策では主としてたねちゃんさんのアイデアを取り入れさせて頂いてます。

まだまだいろいろ実験段階ではあるんですが、
対策は段階としては以下のような感じです。

①サーバのファイアウォール機能

Linux(FedoraCore5)のファイアウォール(iptables)で最もうざい国をサーバ接続の段階でシャットアウト
 →例:中国、韓国など大量爆撃が来るところ
 →1日数千のオーダーでシャットアウトしている(DNS、SMTP、HTTP、SSHなど全て含めての話)
参考:ファイウォール構築(iptables) by fedorasrv.com

②CGIリネーム

本来の名前でトラックバックやコメントを受け付けない。もし本来の名前で来ていたら、IPアドレスを別途ログに記録して、しつこいアドレスは.htaccessのdeny from に追加。
そして、CGIの名前は外部公開しない。1日に何度か自動変更されるようにしている。
→参考:CGIリネーム by たねちゃん

③.htaccessでの効果的な対策

●コメントCGI
SetEnvIf Accept-Language ja を使い、ブラウザの言語設定によるアクセス制限を行う。
言語設定によるアクセス制限は「どの言語を設定しているか」で相手を判断して、拒否する方法です。
ブラウザの設定をいじるだけで簡単にアクセス可能になるのが難点ですが、相手に言語設定で弾いていると気付かれなければIPよりも確実にふるいわけができます。

●トラックバックCGI
UserAgentによるふるいわけ。
(例)
SetEnvIf User-Agent "Mozilla" browser_ng
SetEnvIf User-Agent "Opera" browser_ng

詳細は最近たねちゃんさんがエントリにしてくださっているので参照してください。
たねちゃんズ12: スパム大量爆撃来たけど…

④Captchaプラグインによるコメントスパム対策

・・・実はエラーに悩まされてまだこのプラグインを入れきれていません。。

⑤分析

①~④をスパマーが突破して初めてMTに到達します。(それでも今度はSpamLookupでジャンクフォルダに入る)
上記②~③は要するに403 Forbiddenエラーではじくことになるわけだが、これをIPアドレスをリスト化する自作(と言いつつたねちゃんさんの自作のことだが)CGIでどんどん記録していき、大量に403エラーを繰り返している輩の傾向(国別、アクセス時間帯、回数、IPアドレス範囲など)が分かるようになります。
403エラーを自作CGIに飛ばすのは以下ディレクティブを使うだけ。
(例)
ErrorDocument 403 /403.cgi
このとき、○○○.cgiの部分は公開ディレクトリのトップディレクトリからのフルパスとなります。

考察

これらにより、今はトラックバックスパムがほぼ皆無。来ても1日か2日に1件程度で、ジャンクフォルダに日本語且つ、UserAgentの正しいトラックバックが到達している程度です。
コメントスパムは④のCaptchaプラグインを入れ切れていないので、1日に数十件のオーダーでLanguage OKのコメントスパムがジャンクフォルダに到達してますが、Captchaプラグインを入れられればこれらも更に10分の1以下になるでしょう。

ポイントは、いかにMTにスパムごときで仕事を与えないようにするか、です。
確かに何もしなくてもほとんどはMT純正のSpamLookupプラグインがはじいてくれるでしょうが、そこまで到達したアクセスが1日数千件オーダーであると、サーバの負荷は到底無視できないレベルとなるでしょうし、もしレンタルサーバであれば警告を受けるレベルかも知れません。

是非お試しください。

コピペ用リンク

このエントリーのトラックバックURL:


このエントリーへのリンクURLを含むHTML:

同じカテゴリの記事

トラックバック

上がって来ない訳だ from たねちゃんズ12
たねちゃんズ12 - 上がって来ない訳だKazuさんから指摘されて初めて気付きましたが、トラックバックCGIの名前変える...

コメント (12)

たねちゃん's website

Kazuさん…すまんかったorz

せっかくトラックバック送ってくれたのに404にしちゃって( つД`)
理由はエントリーで書きましたが、CGIの名前変更し忘れてました。
Kazuさんのおかげで気付きました。だから…ホントすまんかったorz
許してくれとは言わない、その代わり気が向いたらもぉ1回おね(笑)

それとエントリーに書いた「温故知新な新技術」についてなんだが
生ログを確認した時に偶然、スパマーが今までと違う動きで来た事
に気付いて、これに対抗しようと思ったら今までのやり方だとちと
対抗出来ないので、今までやってた処理方法を別の形にして見た目
分かりやすく、そして追加処理出来る様になった。これは例の403
での対応が出来ないと導入出来ない形になってるから、403封鎖が
ちゃんと出来る様になったら教えます(笑)


oscar's website

こんにちは。
>SetEnvIf User-Agent "Mozilla" browser_ng
しばらく、なんで403なのか悩んじゃいましたよ。
オレなんかしたか??とか思いました。
たねちゃんさんところも一緒なので、もしやと思いIEに切り替えたら見えました。


Kazu's website

たねちゃんさんへ>
早速トラックバック再度送っておきまひたのでご確認くださいませ。
って既に知ってますもんね(笑)。

oscarさん>
すみません、ちょっとお聞きしたいのですが、トップページあるいは個別のページの表示が403となったということでよろしいですか?
で、IEだと同じ条件なのに見れた、ということになるでしょうか?
だとしたら、原因をよく調べてみる必要がありそうです。
貴重な情報ありがとうございますm_O_m
ちなみに、
>SetEnvIf User-Agent "Mozilla" browser_ng
はトラックバックCGIに対する条件指定(MT配下の.htaccessでディ
レクティブを使用して指定)なので、通常のトップページ
等の表示では問題ないのです。。
トラックバックのスパムを送りつけられたログを分析したところ、
まっとうなトラックバックであればUser-Agentにブラウザを名乗る
ことはないため指定している次第です。


たねちゃん's website

にょほ(・ω・)ノ獅子丸だワン!おこぬばぬわ。

とりあえず原因が何か分かってませんが、先に謝っておきます。
oscarさん、大変すいませんでした。お手間をかけさせてしまって。

そぉですね、Kazuさんの言った事そのまんまですね。補足をすると
IEに切り替えると見れたと言う部分が気になりますね。UserAgentの
判断はトラックバックCGIにしか反応しないし、もしこの部分ならば
IEでもFxでもUserAgentを偽装しない限り引っかかるハズですし。
CGIリネームにハメられたとしたら、404が返ってくるハズですし…
だから403が返ってきたとなると、IP封鎖に引っかかった可能性が。
私のブログも?と言う事は、oscarさんが何をしたら403になったか?
が原因発見の為の凄い重要なポイントになります。私のブログでも
見るのと書くのとでは規制のキツさが違いますので。その辺をもぉ
少し詳しく教えて頂けると助かります。


oscar's website

Kazuさん、たねちゃんさん、どうもです。

確かにトラバCGIにのみ適用って書いてある。あれれ?
>oscarさんが何をしたら403になったか?
実はここが一番解ってないんですよ。普通にFirefoxで見に来ただけなんですが。
最初は良くあるFirefoxの拡張がらみだろうと思ってたんですが、やっぱりそうだったのかな?
ここ、しばらくお二人のサイト行くと、ずっと403でした。
「IP封鎖」も疑ったんですが、自宅・会社共に同じ状況が発生しているので、それじゃないみたいです。

拡張切って確認してみます。


Kazu's website

oscarさん、いろいろご面倒をおかけし申し訳ありませんm_O_m
oscarさんのIPアドレスと思われるIPは「IP封鎖」の対象とはなっていません。
(もっとも、対象となっていたらIEでも見れないはずですが。。)
あと可能性としては、ブラウザの表示言語が中国や韓国など特定のもの
の場合には403エラーとなるようにしていますので、IEは日本語設定だが
Firefoxは他国語となっていたりした場合に有り得る気がしますが、
まさか中国とか韓国語に設定していたりはしませんよねぇ。。
ちなみに、この設定をかけた後もアクセス数は特に減っていないので
「特定の何かしらの原因」に因るもの以外は考えにくい気がしています。
また何か分かりましたらお手数ですがご報告頂ければと思いますm_O_m


oscar's website

こんにちは、
む~、やっぱり拡張機能っぽいです。
プロファイル切り替えて、スッピンにしたらちゃんと見えました。
私の方の問題って事ですね。
お騒がせしてすいません。

どれが影響してるのかな?


oscar's website

解決!
すご~~い、くだらない話。拡張じゃなかったです。

オプション>詳細>一般>言語>言語設定で
日本語以外も追加していたのが原因でした。

でもそれって、コメントCGIのみなのでは?
とりあえず、今は日本語のみで見えてます。


Kazu's website

oscarさん、
私も試してみました。例えば、中国語を設定に追加すると、優先順位を日本語→中国語としてNGでした。
公開ディレクトリの.htaccessでは、中国語などいくつかの言語だったら403エラーとなるようにしているんですが、これってFirefoxがそういう仕様だと、意外と人によってはありうる設定なので、トップページをブラウザの設定言語ではじくのはちょっと見直したほうがいいかも知れない気がしています。例えばoscarさんにとって他国語言語の設定をFirefoxにするのは致し方ない理由からなのでしょうか?そういう方がどれくらいいらっしゃるのかの参考にしたいと思いまして。。
なぜ公開ディレクトリの.htaccessでそんなことをしているかというと、直接訪問してトラックバックURLやコメントCGIを収集されるのを少しでも減らしたかったからなんですけどね( つД‘)
oscarさん、本当に貴重な情報ありがとうございました。それと、お手間をかけさせて申し訳ありませんでした。重ね重ねお詫びいたしますm_O_m


たねちゃん's website

そぉですか、原因が判明しましたか。良かったのか悪かったのか。

Kazuさんが中韓を弾いてるのって私の百度対策のヤツでしたっけ?
それとも前のIPバーナーの時に入れたって言ってたヤツだたっけ?

私は重度のFx中毒者だから、Nightlyとかバリバリ使ってる人だが
結局全て英語だから、対英語の場合しか考えていませんでしたね。
百度対策の方は今現在は完璧に弾いてますが、どの設定で弾けてる
のかハッキリしないし、少しでも侵入されるともぉ、大惨事に成り
かねないので私のブログの方では中韓規制は解除出来かねますので
ご了承ください。

※ちとこの今回のコメント、名前が出ないかもしれない。
simpleapiの読み込みが終わらなくてTypeKeyが反応してない。


oscar's website

どもです。お騒がせしてます。
>他国語言語の設定をFirefoxにするのは致し方ない理由からなのでしょうか?
特にそうしなきゃならない理由は無いです。
単に昔からのくせで、「日本語>英語>中国語」みたいな指定をしていただけで、別になくても困りません。
他の方は・・・・どうなんでしょ?


Kazu's website

よく考えたら私の場合、サーバのFirewallで中国や韓国のIPアドレスは接続拒否していたので、MTに関しては何もしなくていいことを思い出し、.htaccessの言語却下設定は外しました。
なぜサーバのファイアウォールでそうまでして弾かなきゃいけないかと言うと、私の場合メールサーバも運営してまして、中国やその他の国からのスパムメール、不正リレー中継など、1日に数百以上、DNSの不正パケットもあわせると数千というレベルで来ているためなのです。。
いろいろお騒がせしてすみませんm_O_m


コメントを投稿



RSS

Add to goo
Add to google

はてなRSS
feedpath
Subscribe in Bloglines
Subscribe with livedoor Reader




Tag cloud

お勧め!

Powered by
Movable Type 4.01