さらにちょこっと(リファラ|コメント|トラックバック)spam 対策

(2005/01/29 21:47 全体的にリライトしてます)
ここ数日、定期的に変なリファラがついたリクエストがログに残っていて、ちょっと気になっていました。決まってとあるドメインネームからのリファラが付いていて、しかもご丁寧にも、毎回サブドメインの部分が異なるという。
たいして実害はないのですがよけいなログが残るのもアレだし、余りにも執拗なので、httpd レベルではじきます。前に作ったやつ を元に、今回したいことを書き出してみます。サブドメインがころころ変わるので、そこのぶぶんをどう正規表現で書いたらいいのか分からず、結局力業、でもダメで、もう丸一日いじってますがどうにも上手くいかないのでもう忘れる。また今度。プンスカ。
(実際のコードはエントリの最後に移動しました)
"SetEnvIf" まわりの、deny とかのロジックは期待通りに動くことを確認しているので、純粋に上記の部分だけの問題だと思うのだけど…。もう、なにがなにやら。アスタリスクによるワイルドカードが使えるなら、"http://*.tecrep-inc.net/" で済むような問題なんだけど、正規表現はどうにも取っつきが悪し。理解力不足とも言う。
ときに、このリファラはナニをしたいんだろうね? 毎回アクセス元のアドレスの国が異なるし、ある時は某国内大手プロバイダからだったりしたし、proxy というよりもこれは何らかのウィルスにかかったPC からのアクセス…とかだったりするのだろうか。
さらにもう一つ、「迷惑な」 という意味で使う場合、「spam」 と小文字で書くのが慣習らしい。大文字で書くと商標に引っかかっちゃうので、とのこと。へぇ。

(2005/01/31 21:05 追記)
「忘れる」 とかいいつつしつこく調査中。コメント頂いたり、リファラでアドバイス頂いたり して、ありがとうございます。
結果から言うと、"^http://.*\.tecrep-inc\.net/"、"^http://(.*\.)?tecrep-inc\.net/" どちらでも引っかけることは出来ませんでした。テストしてみたところ、普通はリファラ中の何か一単語でも引っかかりさえすれば排除できるのに、今回対象のものについては、どうにも上手くいきません。ログに残っている文字列は普通に見えますが、この部分からして変な細工をしているのかなあ。ってそんなこと出来るのか?
そうこうするうちに、リファラspam のドメインが増えました。"*.learnhowtoplay.com" というやつ。ログから抜き出してみたところ、これまでのと送信元が割と一致します。冗長すぎるけど、もう送信元IP アドレスで弾くしかないのか…。
(2005/02/01 22:12 追記)
…えーと、httpd.conf でちょっとややこしいこと をしているので、それが原因で上手くいってなかったみたい。トホホ。ってだけじゃアレなので追加情報を。
今回のリファラspam は、結構インテリジェントです。

  1. 個別エントリにアクセスする際は、リファラに見せたいURL を入れている。
  2. MT の標準の"mt-comments.cgi" 決めうちでPOST。このとき、リファラはコメント入力ページのURL。
  3. ファイル名を変更していても、form タグを解析し、追尾してくる。リファラは上記と同じ。
  4. 同様にして、"mt-tb.cgi"(とリネームしたやつ) にもアクセスしまくり。

しかしながら、こういうのの対策として、リネームしたり、プラグイン入れたり するのはかなり有効です。
で、最後に今回の回避方法ですが、proxy 経由か、変なヘッダがついてるので、それを指定します。とりあえずこんな感じで。上記特徴とかも考えると、リファラではじくのと併せ、これも指定しておいた方がよいかもです。


(2005/02/04 13:39 追記)
リファラ元のドメインを追加。
(2005/02/10 20:48 追記)
さらにリファラ元のドメインを追加。
ナゼか奴らは必ずドメインを2つセットにして使ってくる模様。
(2005/02/14 17:32 追記)
さらにさらにリファラ元のドメインを追加。
いい加減しつこいなー…。Webalizer の解析以外には実害はないのだけど。iptable で弾くとかにした方がよいかもしれない。
(2005/02/23 23:10 追記)
さらにさらにさらに追加。今回、Weblizer 用にはサブドメインも指定してみました。新たなドメインで来られても一定の効果はある…気がする。たぶん。
/etc/httpd/conf/httpd.conf 用。こっちは実はもうリファラ以外の環境変数で弾けているので追加作業はいらないかも。


<Directory "hogehoge">
<IfModule mod_setenvif.c>

SetEnvIf Via "^1\.1 pinappleproxy" DenyRequest SetEnvIf Via "^1\.1 ISA-TWO" DenyRequest SetEnvIf x-aaaaaaaaaaaa "^1$" DenyRequest SetEnvIf Referer "^http://(.*\.)?tecrep-inc\.net" DenyRequest SetEnvIf Referer "^http://(.*\.)?learnhowtoplay\.com" DenyRequest SetEnvIf Referer "^http://(.*\.)?freakycheats\.com" DenyRequest SetEnvIf Referer "^http://(.*\.)?psxtreme\.com" DenyRequest SetEnvIf Referer "^http://(.*\.)?chat-nett\.com" DenyRequest SetEnvIf Referer "^http://(.*\.)?terashells\.com" DenyRequest SetEnvIf Referer "^http://(.*\.)?smsportali\.net" DenyRequest SetEnvIf Referer "^http://(.*\.)?6q\.org" DenyRequest SetEnvIf Referer "^http://(.*\.)?ronnieazza\.com" DenyRequest SetEnvIf Referer "^http://(.*\.)?future-2000\.net" DenyRequest SetEnvIf Referer "^http://(.*\.)?musicbox1\.com" DenyRequest SetEnvIf Referer "^http://(.*\.)?isacommie\.com" DenyRequest
Order allow,deny Allow from all Deny from env=DenyRequest
</IfModule> </Directory>

Webalizer 用。"/etc/webalizer.conf" に追加。


IgnoreReferrer  http://blackjack*
IgnoreReferrer  http://buy-*
IgnoreReferrer  http://casino*
IgnoreReferrer  http://cialis*
IgnoreReferrer  http://credit*
IgnoreReferrer  http://diet*
IgnoreReferrer  http://free-*
IgnoreReferrer  http://how-*
IgnoreReferrer  http://loan*
IgnoreReferrer  http://online-*
IgnoreReferrer  http://party*
IgnoreReferrer  http://phentermine*
IgnoreReferrer  http://poker*
IgnoreReferrer  http://slot*
IgnoreReferrer  http://texas-hold*
IgnoreReferrer  *.tecrep-inc.net/
IgnoreReferrer  *.learnhowtoplay.com/
IgnoreReferrer  *.freakycheats.com/
IgnoreReferrer  *.psxtreme.com/
IgnoreReferrer  *.chat-nett.com/
IgnoreReferrer  *.terashells.com/
IgnoreReferrer  *.yelucie.com/
IgnoreReferrer  *.crescentarian.net/
IgnoreReferrer  *.6q.org/
IgnoreReferrer  *.smsportali.net/
IgnoreReferrer  *.ronnieazza.com/
IgnoreReferrer  *.future-2000.net/
IgnoreReferrer  *.musicbox1.com/
IgnoreReferrer  *.isacommie.com/

(2005/04/12 13:17 追記)
こういうエントリに限ってコメントSPAM がつくのなんでだろう?
というわけでコメント欄をクローズしました。