Last Updated 2003/1/13
増補改訂版(元記事:日経Windowsプロ連載)

●Security INDEXへ

★TOP INDEXへ

セキュアWebシステム構築術:第一回

最初にセキュリティポリシーありき

2001年になって不正アクセスやウイルスなどは新たな局面を迎えたようだ。年初から爆発的に増えた事件や事故は相変わらずで、終息する気配すら見えない。
一方でインターネットを利用したさまざまなサービスや商取引に関する需要は高まり(本当に需要があるのか?)、その需要と安全なサービス構築との間で板挟みになる管理者・構築担当者も多いようだ。いや、実は「安全にサービスする方法」という意識すら無いのかも知れない。あるいはサービス構築で手一杯であるため、そこまで手が回らないのかも知れない。
しかし、このままの状況で多くのサービスが立ち上がるということは、それでなくても世の中危険がいっぱいなのに、さらにそれが拡大してしまうということだ。
これまでさまざまな不正アクセスの手法について解説してきたが、本連載ではそうした手法への対策や、安全なサービスの構築方法について検討していきたい。

安全なサービス構築とはどんなものだろうか?
安全なサービスとは、「改竄」や「成りすまし」や「破壊」や「サービス不能」と無縁なサービスである。いや、どんなサービスもそういった脅威から完全に無縁ではあり得ない。となると、安全なサービスとは「ただ構築しただけのサービスよりは危険性が低いものである」という、やや控えめな定義にするしかないわけだ。しかし、そんな控えめな定義に近いことを実現するだけでもけっこうホネである。
以前に比べるとセキュリティ関連の情報はかなり表に出てくるようになった。今や必ずと言っていいほどセキュリティ関連の情報が毎月どこかの雑誌に掲載されている。しかし、例えばOSの設定やインストールだけが安全であれば良いのかと言えばそうではない。あるいはWebサーバーを安全にインストールや設定すればいいのかといえばそうでもない。
実際に行われるサービスとはそれらの要素がいろいろ組み合わさっていて、しかもどれ一つとしておろそかにはできない。すべての要素が可能な限り安全である必要があり、なおかつ総合的にも安全でなければならないわけだ。
この連載で目指すのは、出来る限り実践的に安全なサイト、安全なサービスを構築することだ。そのためにさまざまな要素を安全にする技術と、それらを組み合わせて安全に構築運営する技術やノウハウについて検討していきたい。

内容を出来る限り具体的にするために、この連載で構築するサービスを以下のように想定してみよう。

「トリトンX社のサービス」
・Webによる商取引を含むサービスサイト
・顧客管理はデータベースで行う
・Webによるコンテンツ提供はaspなどの動的スクリプトで行う
・重要な取引情報がやり取りされることも考慮し、暗号化も検討する

こうした要件を持つサイトは実は多いのではないだろうか。しかし、ここに書かれたような要件をすべて満たした上で、安全にサービスを提供できているところがどれだけあるだろうか。
この連載で少しでもそうした状況を良くして行きたいと願う。

ではまず何をすべきだろうか?
まずはOSのセットアップから?それともインストール?
いや、まずすべきことは「セキュリティポリシー」の作成である。
最初のハードル「セキュリティポリシー」は避けて通れない。というより、セキュリティポリシーをなおざりにしているサイトがあまりに多いために、現在のように破滅的な状況を招いたのだ、とも言える。
そもそもセキュリティポリシーとはどんなものなのだろうか?
セキュリティポリシーとはいろいろな局面でいろいろな意味で使われるため、人によって想像することがまちまちになりがちである。ここでのセキュリティポリシーとは、どんな人にどんな場面でどんなサービスをどういう形で提供するのか?というポリシー、いわばアクセスポリシーに近いものだと考えて欲しい。
なぜそんな面倒な(?)ポリシーが必要なのだろうか?
まず、ポリシーが無いとどうなるか考えてみよう。ポリシーが無いサイトでは、とにかくサービスを立ち上げることが重要である。不特定多数の顧客に対し簡単なコンテンツを提供し、小物を中心としたコマースサイトにしたいので、Webサーバーにパッケージソフトを導入、顧客管理用にデータベースも同じサーバーにインストールして一丁上がりである。もちろんそこにはセキュリティ対策は何も無いが、要件を満たすことだけが目的であればそれでおしまいだ。ここにはセキュリティポリシーも当然存在しない。つまり、「どんな人にどんな場面でどんなサービスをどういう形で提供するのか?」ということがはっきり決まっていないということになる。
そうなると何が危険なのだろうか?
「要件を満たす」ことだけが目的であれば、「機能を実現する」ということだけが目的ということである。従って「不要な機能を制限する」ということは「要件を満たす」ためには手間でしかないわけだ。要件の中に「不要な機能を制限する」というものが入っていれば別だが、そういうことを定めるのはセキュリティポリシー(アクセスポリシー)の役目であり、機能の要件の中には含まれないのが大部分である。
例えばWebでコンテンツをサービスする=httpプロトコルで情報を提供することが「機能要件」であるとしよう。IISやapacheをインストールすれば簡単に実現できる要件だ。しかし、その要件を満たしている一方で、何もしなければOSがフォルダ共有していたり、ftpやtelnetのサービスを待ち受ける状態になっていたりするわけである。となるといくらhttpのアクセスを注意していても、意識せずに開いていた別の入り口から侵入されてしまう。
そのような事態を防ぐために、「不要な機能を制限する」ポリシーを作成するのである。そして、不要なサービスとは具体的にどんなサービスなのかを定義すれば、あるいは逆に「必要なサービス」とは何かを具体的に定義すれば、それに応じて設定を変更する=「不要な機能を制限する」ことができるわけだ。

では、この連載で構築を目指すトリトンX社のサイトにはどのようなポリシーが必要だろうか?
具体例として簡単なポリシーを作成してみよう。

「トリトンX社の公開サービスのポリシー」
前提:トリトンX社の公開サービスは、Webを利用して不特定多数の一般ユーザーと決済を含む商取引を行うものである。
(1)トリトンX社の公開サービスで、守るべき情報は以下の通り。
・顧客情報
・取引情報
・提供するコンテンツ
・ログ
(2)公開するサービス
公開するサービスはhttp(ポート80番)とhttps(ポート443番)である。公開はインターネットを経由し、不特定多数のユーザーに対し行われる。
一般ユーザーはトリトンX社のサービスにアクセス後、個人情報の登録が可能である。登録ユーザーに対しては、認証後特別なサービスを提供する。
また、上記以外のサービスはインターネットへ向けて公開しないこと。
(3)管理運用
管理者はWebサービス企画部のメンバーとする。
管理運用業務は、
・サービスが正常に稼働しているか?
・不審な動作やアクセスの試みが無いか?
・顧客情報は日1回バックアップされているか?
・サーバー全体は週1回バックアップされているか?
・サービス提供ソフトウエアは常に最新の状態になっているか?最新の状態ではないときは正当な理由があるか?
という視点で行われなければならない。
(4)メンテナンス
コンテンツの更新はWebサービス編集部のメンバーが行う。更新手順は別途定める「更新マニュアル」によるものとする。
また更新に用いられる通信手段は、保護されていなければならない。

見ての通り非常に簡単なポリシーであるが、まずはこんな簡単なものでも十分であろう。ここに記述されたセキュリティ上の要件を満たすためには、ファイアウォールが必要となるかも知れないし、単にルーターなどのフィルターだけでも構わないかも知れない。要件を満たすために同じ機能を持つ複数の選択肢が有る場合には、予算や他との優先順位の比較で決めれば良いのである。
また、ポリシーは後から必要に応じて変更や改訂していくことも必要だ。最初にこの程度の簡単なポリシーを作成しておき、追加や変更があれば都度都度入れていくというやり方を採れば、あまり手間もかからずに安全な運用が可能になるだろう。
トリトンX社のようにオカネが絡んだ取引までしてしまおうというのであれば、当然取引の記録も必要である。その場合は上記ポリシーに加えて

(5)ログ
保護すべきログは以下の通り。
・取引記録
・アクセスログ(Webサーバー、データベース、システムログ)
取引記録は取引発生都度、Webサーバー、データベースサーバーとは別のサーバーにて保存すること。

なとど書いても良いだろう。
いきなりポリシーを書けと言われても、いったいどのような脅威が存在するのか分からないので難しい、という場合は専門家に相談するのが早道だろう。ここに挙げたポリシー例も、そもそもトリトンX社がやろうとしているサービスを行うとしたらどのような脅威があるのか、そしてそのリスクの大きさは?という分析の結果、作られたものである。専門家の存在理由は、ある面この「(トリトンX社のようなサービスを立ち上げると)いったいどのような脅威があり得るのか」という知識にあると言える。逆に言えば、脅威を洗い出し尽くせない専門家は専門家とは言えないわけだ。
また、もし専門家の知恵を借りることができない場合は、そのような知識を自分たちで得ることを考えなければならない。(素養があれば別だが)一般的なコンピューター系技術者がセキュリティの知識を身につけるには、おそらく半年から1年はかかると考えた方がいいだろう。知識を身につける近道は教育コース受講などいくつか存在するが、自前で専門家を作り上げるには当然ながらコストがかかる。もちろん専門家を頼むにしても同じようにコストがかかるわけである。
見過ごされがちなそういうコストも織り込んだその上で、ようやくインターネットを使った取引のようなことが可能だと考えるべきである。
コストがどうしても調達できないのならば、今やインターネットに多々公開されているサンプルポリシーを持ってくるのは一つの手である。ただ、ポリシーのレベルではそれこそ丸ごとコピーできたとしても、ガイドラインやスタンダードというもう少し現場に近い管理手順、作業手順の類は、それこそ現場に合わせて作っていかないとならないものだ。そしてその部分を作ることも、やはりコストがかかるのだ。
結局、コストが無いところにはセキュリティも存在しないのだ。厳しいようだがそれが現実である。

次回はポリシーを元にOSのインストールや設定などを検証していきたい。

参考:日本ネットワーク協会セキュリティポリシーWG作成のセキュリティポリシーサンプル(2001年度版ver.0.91。2002年度版、スタンダードサンプルも公開予定)
仙台市行政情報セキュリティポリシー
名古屋大学セキュリティポリシー(案)

●Security INDEXへ

★TOP INDEXへ