セキュリティ一覧

IE6関連:アクセス制限はできればしたくない(2)

 そこで「IE6 のアクセスを排除」となっていくんですが、排除だけなら簡単でも、IE6 なんだけどこれは違う、というのも分けないといけない。実際に実行したあと、それに引っかかってエラーになったアクセスログを眺めていたら、IE6 なんだけど業者ではないというパターンも発見。Internet Explorer6でのアクセスについて にも書いた二種を含め、以下のもの、

[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; Tablet PC 2.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)]

[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)]

[Mozilla/5.0 (compatible; MSIE 6.0b; Windows NT 5.0) Gecko/2009011913 Firefox/3.0.6 TweetmemeBot]

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; Lunascape 4.1.3)

[Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Sleipnir/2.9.3) ]

[Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)]

 上記以外で ed(小中高等学校)と gr(任意団体) を除く属性 jp ドメインは通るようにしたかったんですけど、このブログを稼働させているサーバの制約でその書式が通らず、できませんでした。

 気持ちとしてはホスト名が著名な会社だったり大学だったりのときは、つまりどうも自分のパソコンではないパソコンからネットにアクセスしてる分だと思うし、自分のパソコンではないからブラウザの更新などできないとか、仕事で使ってる特注アドオンが IE6 までしか対応していないから更新できないとかあるんだろうし、そういう「IE6 を使わざるを得ない環境」から個人サイトにアクセスする必要はないと思うんですよね。公開してるという部分で制限は本意ではないという建前を貫きたい気持ちもあるのやらないのやら。単にこういうのをするのがパズルを解く気分で楽しいからだけかもしれない(笑) 日本のドメインなら管理者に日本語でメール出せますから、何かあっても意見は言える。

 IE6 でアクセスしたときに「弾かれたときに出る参考画面」を出してアピールしています。IE6 以下のときだけ表示させる設定は作れても、IE6 以下の時だけ表示させない設定はできないので、通常のエラー時に出すメッセージも出てしまいますが、それはあきらめました。自分のパソコンでネットにアクセスしてる方なら、それを読めば IE6 から卒業してもらえるのではないかと。

 今回、このやりかたの効果を確かめるために、IE6 の制限を開始した3月14日以来、それまでの .htaccess 内でのIP制限を全部外しています。結果、ブラウザ(+α)の制限だけで十分そうです。思わぬ効果として、スパムとは別個に規制していたウィルスバスタのURLフィルタ攻撃。あれらは IE6 としてやってきますので、一緒に弾けるようになったです。

 最後に .htaccess 内の実際の書式も書いておきます。Remote_Host が取得できればかなり良い感じになるんですけど、そこが少し残念。

SetEnv !Kyohi
SetEnvIf User-Agent “(MSIE [3456]\.[0-9])” Kyohi
SetEnvIf User-Agent “(MSIE [789]\.[0-9]|TweetmemeBot|Lunascape|Sleipnir|IEMobile|Windows CE|InfoPath)” !Kyohi
SetEnvIf User-Agent “(Commerce|Baidu|SocialMedia)” Kyohi
#SetEnvIf Remote_Host “\.(or|ad|ne|co|go|ac)\.(jp$)” !Kyohi

order allow,deny
allow from all

Deny from env=Kyohi

(1)まず変数を作りリセットしておきます。(この行はなくても問題ないです)
SetEnv !Kyohi

(2)IE3~IE6 だったら変数をセット
SetEnvIf User-Agent “(MSIE [3456]\.[0-9])” Kyohi

(3)IE7~IE9 or ほかいくつかの要素のときは(2)にマッチしていても変数リセット
SetEnvIf User-Agent “(MSIE [789]\.[0-9]|TweetmemeBot|Lunascape|Sleipnir|IEMobile|Windows CE|InfoPath)” !Kyohi

(4)(3)にマッチしても下記の要素を含んでいたら変数セット
SetEnvIf User-Agent “(Commerce|Baidu|SocialMedia)” Kyohi

そうしておいて、変数がセットされていたら deny します。たまにこれらに該当しないスパムが来たら、(2) ~ (5) の修正でいけるなら修正。パターンとして馴染まないならそれのみdeny に独立で追加する予定です。

 数十数百と IP を羅列して弾いていくよりスマートではないかと思います。でも一般的にそうしてないということはなにか「このやりかたはまずいよ」というのがあるのかもしれません。それに気がついたらまた他の手を考えることにします。


IE6関連:アクセス制限はできればしたくない(1)

 ブログとしてインターネットに公開している以上、アクセス制限などしたいわけじゃない。

 でも「スパム」はイヤです。スパムの目的は「広告」であり、ネット上においての交流を目的としたものではないし、こちらの情報発信を見てくれるわけでもない。このブログに来る人をカモろうとしているだけです。

 「迷惑メールは儲かる:1日40万円の売上げも」 ←そこに書いてあることが事実なら、スパムメールもコメントも絶対になくなりません。ブログや掲示板として公開している人や団体がこまめにすべてのスパムを非公開にすれば採算が取れなくなってコメントスパムはなくなるかもしれませんが、それは無理でしょうね。放置状態のブログや掲示板は掃いて捨てたくなるほどありますから。

 ということで、コメントスパム排除のためにブログ設置者が取る行動の多くは「IPでのアクセス拒否」です。が、ブログ設置以来、半年以上それをやってきて、どうもそれでのアクセス拒否は難しいのではないかと思いました。(もちろん、スパム判定して拒否してくれるツールを使ってますから、それらのおかげで実際にスパムが書き込まれて公開されることはありません。スパム撃退はできているんですが...)

 ラジコの件で再認識しましたが、固定IPでない限り、IPはISPから割り当てられた物を使いますよね。コメントスパム業者の多くもそうだと思うのです。送り込まれたコメントスパムからIP抜き出して .htaccess に登録しても意味なさそう。Whois や Aguse などのサービスを使ってそのIPが含まれるISPが使ってる範囲を登録すればまだマシですが、それをやるといわゆる「巻き添え」でのアクセス制限を課すことにもなります。逆引きホスト名は「業者の物に設定してあるなら」そのホスト名を頼りに弾けますが、ISPのホスト名が出てる場合はそれもまた「巻き添え」で弾きます。逆引き設定してない業者も多いです。

 最近話題になりましたが、ボットネットというのもあります。一カ所から投げた書き込みが世界中、複数箇所のIPに分散されてあちこちに書き込みをばらまくようです。前に記事にした「万国旗が百花繚乱な怒濤のスパム」なんてのはそれだったんだと思います。そんなIPをこまめに排除して廻っても意味ない。

 パソ通のフリーソフト時代、私の得意分野は「パソ通ログ関連」でした。通信ソフトのマクロもですが、とにかく「テキストのパターンの分析」が好きです。正規表現なども大好きです。共通性を見つけて抜き出すのが好き(笑)AOLのバイナリ形式通信ログからPCVANのテキスト形式ログへコンバートするツールも作りました。

 その眼で「スパム書き込みのアクセスログ」を眺めていたら一定のパターンが見えてきました。それが UserAgent(ブラウザ)です。コメントスパム書き込みの大半、ほぼほとんどが IE6 です。この理由は想像ですが、彼らの使っているツール、今風にいえばアドオンでしょうか、それが IE6 以下でしか動かないのではないかと。ブラウザをアップデートすると動作しなくなるアドオンは普通にありますよね。コメントスパム自動書き込みツールはそういうものなんではないかと思います。彼らは自動書き込みが出来ればいいわけで、脆弱性だの機能だの関係ありませんから、お金を払って新バージョンに対応させるなんて事はしないのでしょう。そのツールが通用する限りにおいては。UserAgent は簡単に偽装可能(メーラーも作成経験あり)なんで、そこらを偽装されたらわからなくなりますが、スパム業者は単純に使うだけ。ツールを改造するなんてことはしないだろうと思います。

[続く]


コメントスパムの挙動がおかしい

2月26日のニュース
Microsoftがボットネット対抗作戦、Waledacの通信断ち切る

 上記のニュースを読み、もしかしたらコメントスパムも減るかもと、試しに .htaccess の拒否設定をなしにしてみました。

 ニュースを読んだのが2月26日。実行したのが27日。それから数日、まったくスパムが来ませんでした。ほぉ、マイクロソフト大成功じゃないか、でもたまたま来てないだけかもと思ったし不安だったのでまた .htaccess を復活。これがいつだったかな。3月2日です。

 そしたら、翌3月3日 .htaccess で弾いているのに、怒濤のスパム来襲にあいました。

Akismet画像 
 ごらんのように、昨年末に大量コメントスパムを受けて以来、1月も2月もほとんど押さえ込めています。3月に入って一気に296個のスパム。それに対しての対策はしなかったのに、その後はゼロ状態が続いてます。

 .htaccess での拒否はそのまま復活したのになぜ? もしかして何か設定間違えたかなと思い、よく見直しましたが戻し間違いはしてない。以前ここでも載せたあの大量のスパム発信アドレスとはまったく違うところから大量にスパムがきました。

 これをまた一つ一つネットワークアドレスを調べてネットマスクごと登録して、と考えたらガックリしたので、もういいやと無視することにしたのです。
 コメントスパムはスパムとして記録に残るだけで、実際には画像認証のおかげで自動には書き込まれないし、手動で来たのか、ごくたまに実際に書き込みされても「初めての人の書き込みは認証待ちにしてある」「Akismet のスパム判断」「複数URLが書いてあると認証待ち」と関所がいくつもあるので、スパムの被害は発生しません。記録さえ見なければ気にしないでいい。.htaccess で弾いても、受け入れてもトラフィックが減る分けじゃないし、サーバの負荷は変わらないだろうし、要は実害がなければ気にするかしないかだけの問題。

 と、せっかく開き直って大量のコメントスパムをそのまま受け止めようとしたのに、その直後から、この怒濤のスパムはぴたっと止まりました。見なきゃ気にしないでいいからって言って、記録見てるじゃないかって? 見てます(笑) 数日はしょうがないですよ。どう変化していくのか気になるじゃないですか(笑)

 もしかしたらこのニュース(3月4日)「大規模ボットネットの「Mariposa」摘発、首謀者ら3人を逮捕」って関係してませんかね。 犯人達は、壊滅されたあと別のボットネットを瞬時に立ち上げコメントスパムの再開、その動きを待って首謀者を突き止めた、という筋書きを想像してます。

 いずれにしても、無数のコメントスパム、その配信先アドレスを登録して弾くのは無意味そう。そこが基地なわけじゃなく、ボットネットに感染してる普通の方のパソコンから来るんだから、極端に言えば全世界の全ネットワークアドレスを相手にすることになってしまう。今回マイクロソフトがそれを断ち切ったんだから、「いまこの時点でくるスパム」は固定のそういう業者経由の疑いが濃いのかな。.htaccess を白紙に戻して様子見です。同じところから来るようなら、それらだけを抜き出して登録することにします。