2 月に起きたアリスソフトさんの件について、色々とこちらのサーバの構成を変えるべきかも知れないと思ったので日記に記す。例の事件の時もボクは大忙しで、この事件の詳細については調べる時間がなかった。ただおおむねざっと情報を横断したところ、納品先に渡すためのダウンロード・ディレクトリが洩れてしまったというのが原因の様だった。
これはどういうことかというと、ファイルをやりとりする際、こちらから一方的に送るだけの場合、利便性も考えてブラウザで落とせるようにするのが一番よい。そのため、ウェブサイトのどこかにそのデータを置き、そのデータのアドレスを相手に知らせて、ダウンロードしてくださいね、とやるのである。
この方法は実に便利で、この amatsukami.jp サーバにもある(爆)。こう言うことを書くのは非常によろしくないのだが、とは言え、まったく書かないと話が通じないので、バラしてしまった。とにかくあるのだ。主な用途は成果物の納品や、雑誌社さんに渡す素材などだ。しかも利便性を優先して、パスワードはかけていない。
そしてこの仕組みはもう 10 年以上、使ってきている。
バレないという保証はないが、いくつかのステップは必要である。
- ダウンロード・アドレスの特定
どの URI からダウンロード出来るのか、知る必要がある。基本的に外部からは推測して当てるしかないが、おおむね想像がつくことも多い。たとえば、DL や Download っていう単語が入っていたり、アップローダ的な使い方をしていれば、Upload や UL、UP など。他にも Send とか To とか From とか、その手の単語は推測されやすいかも知れない。 - ファイル名の特定
ダウンロード・アドレスが解っても、ファイル名が解らなければダウンロード出来ない。というのも、ダウンロード・アドレスを指定しただけでは、404 エラーなどでハネられてしまうからだ。但しここで注意が必要なのが、ファイル名ではなく、ディレクトリが指定されると、そのディレクトリにあるファイルを返してしまうという設定がある。これが ON になっていると、目も当てられない。ダウンロード・アドレスに置いてあるすべてのファイルが見えてしまうからだ。
というわけで、上の二つの名前が分からなければダウンロードはできない。そして基本的にこのダウンロード・アドレス+ファイル名の URI を知っているのは、ボクが「ここからダウンロードしてくださいね~」って教えた相手だけのはずなのだ。だからその人が漏らさない限り解らないし、Google などの検索エンジンに乗ることもない。
今回のアリスさんの場合、なんと Google で検索すると出てしまうらしい。
ここがボクはよく解ってないのだが、当事者同士のやりとりなだけのはずなのに、なんで Goolge に載ったんだろうってことだ。もう検証サイトとかできてるのかな。もし情報を持っている人がいたら教えて欲しいです。考えられることとしては、忘れないようにか、何かの理由で、URI をどこかに貼り付けておいたのが、Google に収拾されてしまったか、たまたま URI の推測に成功した人が、どこかの掲示板か何かに載せたか……でもそんなことってあるのかなぁ??
というわけでこのようなことが起きたため、ボクもダウンロードについてはどうしようか今も考え中である。まずは、一定期間経つと、そのダウンロード・アドレスに置いたファイルは削除する様にした。もともとダウンロード用のデータというのは自分の手元にマスターがあり、それを ZIP なり CAB なりで圧縮して渡しているので、ダウンロード・アドレスにあるファイルはなくなってもかまわないものだ。なので、ファイルの更新日付をチェックし、一定期間が過ぎたファイルについては自動的に削除するスクリプトを組んだ。
さらに今後対策していこうと思っているのは、以下の通りである。
- ダウンロード・アドレスをランダムに生成する
ファイルを用意するたびに、ダウンロード・アドレスはランダムに生成する様にする。もしくは、相手先それぞれにダウンロード・アドレスを用意する。この際、ワイルドカード サブドメインも利用すると、より複雑になると思われる。 - ファイル名もランダム生成する
ファイル名もランダム生成し、推測できないようにする。 - IP 制限をする
提出する相手はだいたい会社が多いので、固定 IP を引いているところがほとんどだ。なのでそれ以外からはアクセス出来ない様に IP で制限してしまう。
1 と 2 についてはちょっとスクリプト(今なら PHP)を書く必要がある。
どちらにせよ、数ヶ月以内には対応しないとダメかなーと思っている。