「 web 」一覧

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 は簡単に偽装可能(メーラーも作成経験あり)なんで、そこらを偽装されたらわからなくなりますが、スパム業者は単純に使うだけ。ツールを改造するなんてことはしないだろうと思います。

[続く]


IPで地域判定ができるのか、の話

 ラジコの件から、どうしてもそれが気になります。ツイッターではとても書ききれないのでブログネタにします。

 以下に書くことははっきりとした基礎知識に基づく物ではないです。インターネット以前のパソコン通信の時代から20年前後にわたって遊び続けている通信オタクとして自然に覚えたものなので、いまはそうじゃないとか、それ違う、などもたくさんあると思います。

 さらにインターネットの歴史から解説する気はないし、専門的かつ具体的な話を羅列する気もないです。さわりだけを「知ってればお得な雑学」みたいな話で進めます。話が冗長になりそうだけど許してね。それと、大幅に端折ります。正確できちんとした細かい話なし。つまり、突っ込みは無しの方向でお願いします。

 さらにさらに(笑) ツイッターで「サイバーエリアサーチ株式会社」が「ネットユーザーの位置を知るデータベースを商売にしてる」と教えていただきました。ラジコはそれを使ってると。でも、上っ面しか読んでませんけど、我々の業界で古くから使われてる「ゼンリンの住宅地図」と同じように「足で集めた情報(足というのは比喩ね)」を公開された情報にくっつけただけなんじゃないかな。無から有は生まれない。公開されてない情報から個人の特定に繋がる位置情報を特定できるわけはないとしか思えないです。そのサイトに「社長のブログ」てのがあります。それ読むと「アンケート」を実施したりしてるんですね。そこに返ってきたアンケートから「そのIPはどこの地域」とまず把握し、一般に公開されてるISPの情報からそのIPを含む一定の範囲を掴んで「このIPだったらどこそこだろう」としてるんじゃないかしら。あくまでも「推測」ですけど。そしてその社長のブログからリンクがある「IP広場」。そこで自分のIPから位置情報を知ることが出来るとあるんですが、やってみると「私のIPでは位置はでません」。で、「位置が間違ってたり出なかったりした人は修正してね」的なことがでます。そこで正直に正しい位置を入れると、それが相手の今後のIPとの照合情報になっていくんでしょう、きっと。かなりギリギリの怖い商法だと思います。

 もっと書き散らします。

 インターネットって匿名(匿名性)が高い、と一般に言われていますよね。実はそんなことないんです。まあ、「どこの誰」が直接わかるわけではないので、それをさして匿名というならそのとおりなんですが。ネットワークってのは端末(パソコンだと思って下さい)と端末の双方向通信です。端末=パソコン(だけじゃないけど、とりあえずそう思ってね)として、それぞれに名前をつけないとわけわからなくなります。その端末につける名前がIPで、各端末の区別はそれぞれ世界でただ一つになるようにユニークな名前をつける工夫がなされてます。数字を四つの組に分けた、***.***.***.*** というやつです。

 数字だととってもわかりにくいので「ホスト名」というのをIPに関連づけしてあることが多いです。IPからホスト名を調べることを通信用語で「逆引き」と言います。インターネットにアクセスする限り、そのアクセスしているパソコンには必ずIPが割り当てられており、そのIPはしっかりと管理されていて、決してフリーに誰でも好きな物を使えるわけではありません。つまり、IPを使用している端末は必ず特定できることになります。

 もちろん「必ず特定できるが誰でも特定できるわけではない」です。以前はISP側が法律を盾に警察にも言わなかった時代がありますが、いまは捜査に必要な段階で開示してるはずです。つまり、「誰がそのIPを使ってるか」はそれくらい内緒なもの。使用者の位置特定がIPだけでできるわけはないです。そのIPを管理している側の協力がなかったら特定できません。ラジコでいえば「個々のIPの特定ではなく、このいくつからいくつまで範囲のIPはどの都道府県にいる人を対象に貸し出しているIPなのか」くらいまでをISPから情報提供されてる可能性はあるかもしれない。と思ったけど、それはどうもなさそう。ラジコの「お知らせ」に聴取可能地域なのにダメなときは連絡して、とか出てましたから。

 こんがらがりそうなのでしつこく書きますが「いまここにアクセスしてきている端末のIPがわかること」と「そのIPを誰が(あるいはどこで)使っているか」は話が全然別物です。ツイッターで wifi の話が出ましたけど、あれも自動的に位置を把握されてるわけではなく、「把握して表示してね、というアプリを自分の意思で組み込んで使ってる」から表示されているわけです。インターネットでは自ら開示しない限り、巷で言うところの個人情報に属するものが勝手に(強制的に・選択の余地無しに)流れることはありません。

 アクセスしてる端末の「IPやホスト名」は個人情報ではありません。そのデータと個人を結びつける情報がありませんから。

 昔、CGIのアクセスカウンターを作成して配布していた頃のソースを引っ張り出して、アクセス者のIPとホスト名を表示させる数行のCGIを作って置いてみました。ついでにブラウザの情報も表示します。見た目はまったく考えてません。情報をテキストで表示するだけです。類似の物はあちこちにありますが、話のついでに。

 ホスト名 ← ここをクリックするといまこれを読んでる方のIPとホスト名が表示されます。もちろん自分にだけですよ。公開されちゃうわけではありません。これらは怖い物ではありません。個人を特定できる個人情報でもありません。インターネットでどこかにアクセスするときに必ず相手方に示すものです。でないとデータが行き来できませんから。地域名らしき略号が含まれる形式の人もいるでしょうし、そういうものが含まれない形式の人もいるでしょう。ジオターゲティングを使用してみた体感では一日約100人のユニークユーザーの50~70%はわからないタイプ。推測できて振り分けられたのが30~50%でした。

 IPは大きく一塊ずつ国別にわけて割り当て、国内でその中の一塊ずつを企業とか大学とかISP(インターネット・サービス・プロバイダ)に割り当ててあります。

 最初は大学の研究室とか、大企業の研究所とか、そういう場所にある端末しかインターネットできなかったのです。IPを調べれば「どこの団体が使ってる」というのがわかるわけで、それで十分だった。

 ISPが所有しているIPを「使うときだけそのとき空いているIPを契約した会員に貸し出す」形が可能になったのでインターネットが身近になった。我々が普通に使ってるIPの所有者はISPのもの。つまりIPを調べてもISPがわかるだけで、使っている人(端末)の位置はわかりません。

 ケーブルテレビ局がやってるISPとか、地域性の濃い小さなISPなどだと、そこの契約者もその地元ですから、IPが分かればどこの地域というのは類推できるというのは間違いじゃないです。たとえば横浜に「YOUテレビ」なるケーブルテレビ局があり、ISPもやってます。そこのホスト名がどういう形式か知りませんが、IPから調べてYOUテレビだったら「横浜の人だろう」という推測はできることになります。そして、BIGLOBEとかNTT系列のISPのような全国展開している会社だと、IPに対応するホスト名に「地域を表す略号」をつけていることもあります。あくまでも「そういうこともある」程度。私の使ってるISPから割り当てられるIPは地域不明のタイプです。調べるサイトはたくさんあるけど、どこで調べてもいまこの時点で使ってるIPは「長野県、諏訪湖の西の方」が表示されます。

 でもたぶん理屈はどうでもいいんですよ。放送法の枠を乗り越えられる理由がつけられれば何でもよかったんじゃないかな。実際にそうできるかどうか別にして。本当は「全国に流したい」のでしょうし、スタートを切るにはとにかく放送法を持ってこられると越えられなかった壁をなんとかしないと始まらないわけだから。地域限定ってことにしとかないと始まらない。きっと関係者は全部承知の上だと思う。