ここ最近話題となっている各企業・団体等で「模倣サイトにご注意ください」と騒いでいる件。
その元凶とおぼしきサイト「3s3s.org」についての検証と対策についてつらつらと書いてみます。
1.そもそも「3s3s.org」ってなんぞ?
詳しくは「今話題の3s3s.orgについて判ったこと | 別館「S3日記」をご覧ください。(投げやりw
…は半分冗談で、簡単に言ってしまえばプロキシ的な動作をするサイトといえるでしょうか。
一般的なプロキシと違うのは、「あたかも本来のサイトとは別ドメインのように見せかける」点でしょうか。
3s3s.orgのトップページに「BANされた人を助けますよ」的な事が書かれている事から、何らかの(例えば某国の○盾みたいな)アクセス制限を迂回させることを目的としているでしょう。
…3s3sの中の人に問合せした方によると、「検閲システム回避」のプロキシステムとのことです。
2.動作検証
まず最初に…検証中にとんでもない事を見つけてしまった、どうしようw
…トップページからunlockさせなくともアドレス直打ちで「http://目的のサイト.3s3s.org/」と入力するだけでニセサイトが生成できてしまう!
な、なんだってー!(AA略
…閑話休題。
3s3s.orgの動きは以下のような感じでしょうか。
※あくまで動作からの推測であり、正確とは限りません。ひとつの解釈として参考程度として下さい。
- 目的のサイトを http://example.com/ として、http://example.com.3s3s.org/ を呼び出します。
mod_vhost_aliasを使ってサブドメインをワイルドカード処理できるようになっていると思われ、その呼び出されたサブドメインから目的のドメインを設定します。 - 3s3s.orgはURIリクエストを解析し、アクセス者に成り代わって目的ドメインhttp://example.com/ にアクセスし、コンテンツを蒐集・表示します。(その際のUSER_AGENTは元のアクセス者のものっぽい)
キャッシュはされず都度アクセスになっているところから、mod_rewrite等でプログラムを呼び出しコンテンツを取ってくる様な処理ではないかと思われます。 - アクセス先がhttpsにリダイレクトされる場合、サブドメインに「h_t_t_p_s.」を追加し http://h_t_t_p_s.example.com.3s3s.org とし、目的サイトには HTTPS でアクセスしてコンテンツを取得し、アクセス者には HTTP でコンテンツを表示する
アクセスログは以下のような感じになっています。(一部加工)
178.62.181.6 - - [22/Aug/2014:22:55:00 +0900] "GET / HTTP/1.1" 200 1509 "http://3s3s.org/en/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0" 178.62.181.6 - - [22/Aug/2014:22:55:02 +0900] "GET /address.png HTTP/1.1" 200 1044 "http://mishio.jp/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0" 178.62.181.6 - - [22/Aug/2014:22:55:03 +0900] "GET /favicon.ico HTTP/1.1" 410 1509 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0"
3.セキュリティ上の問題
ここで問題になるのは上記3のSSLサイトに対する処理。SSLで通信が保護されるべきサイトを非SSLで返すという、非常識な処理を行っています。
つまり、SSLで保護されているつもりでも実際は非SSLとなっており、通信の盗聴の恐れがあるということです。
また、いつ3s3s.orgのシステムに悪意あるプログラムが仕込まれる可能性も否定できません。
4.ニセサイト問題の対策
では、このニセサイト問題を解決するにはどうすれば良いのでしょうか。
確実なのは3s3s.orgからのアクセスをブロックする方法ですが、一筋縄ではいきません。
というのもアクセスログを見ても分かるとおり、アクセス元の記録がIPアドレスとなっています。
逆引き(IP→ホスト名)が上手く処理できるサーバーもあるようですが、手元で幾つか検証しても正引き(ホスト名→IP)はできても逆引きが出来ない事が多いです。
逆引きしかできないという事は、サーバーのIPアドレスが変わった場合に対応が後手に回ることを意味します。
…とりあえず後手に回る問題はひとまず置いて、簡単にできる Apache での .htaccess によるブロック手順を以下に記します。
ちなみに Apache 2.2 以前以外の環境については知りませんw
order allow,deny
allow from all
deny from 3s3s.org
deny from 178.62.181.6
deny from 185.14.28.160
もちろん、httpd.comf等に記述する方法でもOKですが、設定のリロードが必要になるので .htaccess のほうがやりやすいでしょう。
4.ニセサイトに翻弄されないために企業が出来る事
個人的にベストだと思われるのは、EV SSL証明書を使用したSSL(HTTPS)サイトにて運営する(HTTPは使用しない)と考えます。ただ、EV証明書は結構なお値段ですので、それなりにITにお金をかけられる大企業以外は厳しいかなと思います。ただ、SSLを採用するのは良策だと思います。
あとは地道にブロックしていくしかないでしょうか。