塙 雅典1,加藤 高男2,大谷 勇毅3,田中 雅貴4,中村 一彦1
1山梨大学 大学院 医学工学総合研究部 工学学域 情報システム工学系
2山梨大学 工学部 電気電子システム工学科
3山梨大学 大学院 医学工学総合教育部 工学領域 修士課程 電気電子システム工学専攻
4株式会社カルク MSPグループ 監視センタ
hanawa[atmark]yamanashi.ac.jp
インターネットは道路・水道・ガス・電話等と同じく社会生活にとって無くてはならない重要な社会基盤となった.その一方で,ネットワークを経由して他のコンピュータ(以下「ホスト」)へ不正にアクセスする活動(以下「不正侵入」)が重大な問題となっている.不正侵入はオペレーティングシステム(以下「OS」)やアプリケーションソフトウェアの開発時に期せずして組み込まれたセキュリティホールを通じて行われることが多く,ベンダが提供するセキュリティパッチを適切に導入し,パーソナルファイアウォールなどのセキュリティ対策ソフトウェアを導入することで,その多くは排除可能である.しかし,セキュリティ対策の重要性への認識が甘いユーザによって充分なセキュリティ対策が実施されていないホストがネットワークに接続され,そのホストを通じて不正侵入を許してしまっているのが現状である.また,上場企業の約84%で情報システムの運用管理者がセキュリティ対策担当を兼務しており,システム管理者に過大な負担を強いているという統計結果[1]もある.このため,不正侵入に対する安全かつ簡易な対処方法が求められている.
このような不正侵入対処方法の一つに,ネットワーク侵入検知システム(以下「NIDS」)がある(図1参照).NIDSは,ネットワーク上を流れるパケットを監視し,データベースに蓄えた既知の攻撃パターンと比較することで,不正侵入を検知するシステムである.NIDSには,複数台数のマシンをネットワーク単位で監視可能,監視対象マシンには無負荷,既設ネットワークへの変更が不要などの利点があるが,その一方で,被攻撃ホストのOSやセキュリティパッチ導入状況などに関係なく,シグネチャデータベースに登録されている既知のパターンに一致したパケット全てに対してアラートを発するため,実際に攻撃が有効か否かに関わらず,膨大な量のアラートを発生しているのが実情である.ネットワーク管理者(セキュリティ対策担当者)は,これらの膨大な量のアラートの中から真に危険な攻撃を抽出する必要があり,豊富な経験を有する管理者の育成が必要であるとともに,管理者自身にも過大な負担を強いている.
NIDSが発するアラートの中には, OSやソフトウェア構成の差異などからそもそも被攻撃ホストには無効な攻撃,被攻撃ホストではセキュリティパッチが導入済みのために無効な攻撃,などが数多く含まれており,これらを除外することでNIDSの運用におけるネットワーク管理者(または組織)の負担を大幅に低減可能である.そこで本研究では,NIDSが発する多量のアラートの中から,真に危険な不正侵入情報のみを自動的に抽出・通知するアラートフィルタシステムについて検討した.今回は,オープンソースのNIDSであるSnort[2]をベースとし,インターネット上で公開されている様々なセキュリティ情報と監視対象ホストのセキュリティパッチ導入状況を統合してアラートのフィルタリングを行うシステム,Real Alert,を開発した.本稿では,Real Alertシステムの概要,実験環境,動作確認実験の結果について述べる.
前述のように,NIDSには重要性の低い膨大な量のアラートを発するが,この中には被攻撃ホストには無効な攻撃に関するアラートが数多く含まれており,NIDSの実効性を低下させる要因となっている.また,特に緊急性の高い危険な攻撃が発生したときにはネットワーク管理者が如何に迅速に対処するかで被害の多寡が大きく異なることとなるが,現在のNIDSではこの種の攻撃に対するアラートも膨大な量の無効なアラートに埋もれてしまっているため,緊急性の高い攻撃をリアルタイムで発見する事は困難である.そこで本研究では,1)NIDSの発する大量のアラート, 2)インターネット上で公開されているOS・ソフトウェアに関するセキュリティホール情報,及びそのOS・ソフトウェアベンダが提供するセキュリティパッチ情報,3)監視対象ホストのセキュリティパッチ導入状況,を総合して,真に危険な攻撃に対するアラートだけを自動的に抽出するアラートフィルタシステム,Real Alert,を開発し,ファイアウォールによって厳重に管理された試験運用環境において実験的運用を開始した.次に開発したReal Alertシステムの概要(図2参照)を述べる.
図2 Real Alertシステムの概要
まず,ベースとなるNIDSとしては,GNU/GPL(The GNU General Public License)[3]に基づいてオープンソースソフトウェアとして配布されているSnort[2]を採用した.SnortはIPネットワーク上を流れるパケットを監視・記録し,それに対してプロトコル解析やパターン検索・マッチングを行うことで様々な不正侵入の兆候を検出するシステムである.また,Snortは検出対象とする攻撃パターンをフレキシブルなテキスト形式言語で記述しており,ユーザが自由に検出対象とする攻撃パターンを修正・追加できるようになっている.これらの機能を実現するソフトウェア群はインターネットを通じて結ばれた開発者コミュニティによって開発・保守が行われており,ソースコードも含めて誰でも自由に利用できることも利点である.
次に,監視対象ホストをMicrosoft社製のWindows(以下「Windows」)が動作しているものだけに限定した.これは,Windowsはインターネットに接続されているホスト中で最も広く使用されているOSであること,毎月のようにセキュリティホールが発見される脆弱なシステムであること,広く利用されているが故にセキュリティ意識が低いユーザも多くネットワーク管理者にとっては危険な存在であること,などが理由である.
前述したようにReal Alertシステムでは,Snortのアラート情報に加え,インターネット上で公開されているセキュリティホール情報やそれに対するセキュリティパッチ情報を収集して,アラートフィルタリングに利用する.今回はこれらの情報の収集先として,以下の3つのWebサイトを利用した.
(1)のSnort.orgはベースとしているNIDSのSnortで不正侵入検知に利用する攻撃パターン情報(以下「シグネチャ」)が公開されている.(2)のCVEは情報セキュリティ脆弱性の世界標準ともいうべきサイトであり,全ての既知の脆弱性情報が収集・公開されている. (3)のMicrosoft Security Bulletin Searchサイト(以下「MSBSサイト」)ではWindowsにおける既知の脆弱性情報に対するセキュリティパッチ情報が公開されている.Real Alertシステムでは,これらのサイトより以下の情報を収集し,独自のデータベース(以下「Real Alertデータベース」)に登録・保存する.
(1) | Snortサイトよりシグネチャ情報を収集する.これより監視対象のWindowsホストに対して危険なシグネチャIDを選別し,さらにそれらのシグネチャに関連するCVE 情報のID(これらをまとめて「シグネチャ情報」と呼ぶ)を収集する. |
(2) | CVEサイトより選別済みのシグネチャ情報に関連する脆弱性情報を収集する.ここにはMSBSサイトにおける情報ID(以下「MSB ID」)が含まれる. |
(3) | MSBSサイトよりWindowsに関する脆弱性情報を収集する.ここにはその脆弱性に関連するレジストリ情報が含まれる. |
これらの情報を統合することで,Snortの発したアラート→シグネチャID→CVE ID→MSB ID→対応するレジストリ情報,と関連付けを行うことが出来るようになる.
これらに加え,Real Alertシステムでは監視対象ホストに小さなソフトウェアを常駐させ,そのレジストリからセキュリティパッチ導入状況を調べ,Real Alertデータベースに登録・保存する.
このように,Snortが発したアラートから辿ったレジストリ情報と,監視対象ホストのレジストリ情報を比較することで,監視対象ホストに対して有効な攻撃,すなわち「真に危険なアラート」,のみを抽出するアラートフィルタリングを実現した.今回はこれらを,Manager, Watcher, Filterの三つのサブプログラムとして実現した.Managerはオープンソースのスクリプト言語PHP[6]によって実装され,インターネットと監視対象ホストからの情報収集全てを統括し,アラートフィルタリング処理に必要な全ての情報をReal Alertデータベースに登録・管理する.WatcherはMicrosoftのVisual C++によって実装され,監視対象となるWindowsホストに常駐し,Managerと連携を取りながら当該ホストのアラートフィルタリングに必要な情報を収集し,Managerを通じてReal Alertデータベースに登録する.最後のFilterもPHPにより実装され,Real Alertデータベースに登録されている情報を元にしてSnortデータベースに登録されたアラートのフィルタリングを行い,真に危険な攻撃が発生したときにのみ,ネットワーク管理者にその旨を通知する.
ManagerとWatcherは決められた時刻に定期的かつ自動的に情報収集を行うため,常に最新のセキュリティ情報に基づいてネットワークの監視を行うことが出来る上,全ての動作においてネットワーク管理者の介在が不要であるため,監視コストを大幅に低減できる可能性がある.また,Snortデータベースに登録されているアラートをReal Alertデータベースに複製して利用することから,Snortデータベースのアラート情報は従来どおり保存されており,状況に応じた柔軟な対応が可能である.
現在のところ,Real Alertシステムによって抽出された「真に危険なアラート」は,ネットワーク管理者に対して電子メールによって通知されると共に,図3に示すWebページによってその履歴管理を行うように構成されている.図3はサンプルデータを表示させた例である.この履歴管理インターフェースでは,Real Alertシステム独自のアラートID,アラートの発生日時,アラートの元となったシグネチャID,攻撃ホストのIPアドレス(送信元IPアドレス),被攻撃ホストのIPアドレス(宛先IPアドレス),被攻撃ホストのOS種別,CVE ID,MSB IDなどの情報を提示する.また,後の拡張に備えて発生したアラートの危険性の有無を表示する欄が設けられているが,現時点ではこの欄には常にyesと表示される.最後の欄は警告メールを管理者に送付したか否かを表わしている.
これまでに説明したReal Alertシステムの動作確認を行うために,山梨大学キャンパスネットワーク上に試験運用環境を構築した.構築した試験運用環境の概要を図4に示す.
図4 Real Alertシステムの試験運用環境の概要
試験運用環境の構築に当たり,総合情報処理センタより24ビットサブネットを一つ借用した.これは本システムの性質上,監視対象ホストに外部から攻撃を受ける必要があることから,関連するホスト全てにグローバルIPアドレスを割り当てる必要があることに因る.この際,総合情報処理センタ長より,安全性向上のためにファイアウォールを二重に設置するよう指示があったため,山梨大学キャンパス情報ネットワーク(図中G-YINSと表記)のスイッチの後段には,Linuxホスト上でiptablesを利用したファイアウォールを二機縦列設置した(図中Firewall 1およびFirewall 2).
図4中の二機のファイアウォールおよび山梨大学キャンパス情報ネットワークのSINET接続口に設置されているファイアウォールでは,山梨大学内外を問わず,任意のホストから当該サブネット中のホストへの通信(外部→内部の通信)は全てのポートに対して許可する設定となっている.これは,監視対象ホストへの攻撃を受ける必要があるためである.一方,当該サブネットから山梨大学情報ネットワークを含む外部ネットワークへの通信(内部→外部の通信)は全て遮断するよう,図4中の二機のファイアウォールの設定を行った.これにより,外部からの攻撃により当該サブネット内の監視対象ホストが侵入されて不正利用された場合にも,山梨大学キャンパス情報ネットワーク(及びインターネット上のホスト)に被害を及ぼすことは決してない.
図4中のFirewall2にはSnort, Real Alert Manager,Real Alert Filterを同時にインストールした.ここで,SnortおよびReal Alert Managerにおいては,情報更新のためにインターネット上へのhttpアクセスが必要なため,このホストからのhttpアクセスに限り外部への通信をFirewall 1, 2において許可してある.また,今回準備した4台の監視対象ホストは全て,Firewall2の上の仮想ホストとしてVMware Player[7]を用いて構成した.ここでは,本学電気電子システム工学科でライセンスを取得しているMicrosoft Academic Alliance[8]を利用して,Microsoft社のWindows 2000 ProfessionalとWindows XP Professionalを導入したホスト二台ずつ用意し,それぞれ一方はOS導入直後のセキュリティホールが数多く存在する状態で運用し,もう一方は全ての既存セキュリティパッチをあてた安全な状態で運用することとした.これにより,監視対象ホストへのセキュリティパッチの導入の有無によるReal Alertシステムの振る舞いを検証できることになる.これらの監視対象ホストにはReal Alert Watcherをインストールして常駐させた.
まず,ManagerとWatcherの連携によりWindowsホストの脆弱性情報を正しく抽出できるか否かを調べた.まず,WindowsホストにインストールしたWatcherより提出されたレジストリ情報より,当該ホストに導入済みのセキュリティパッチ情報を入手した.WatcherはManagerより調査指示のあったレジストリの有無を調べるだけのツールであり,上記セキュリティパッチ情報の精度はManagerの脆弱性情報収集能力のみによって決まる.このため,Watcherから得られたセキュリティパッチ情報を検査することで,Managerの脆弱性情報収集能力を評価することが可能である.実際には,これとMicrosoft社が無償配布している脆弱性検査ツールMBSA[9]を用いて入手した脆弱性情報を比較することで,Managerの脆弱性情報収集能力を検証した.
この実験では,Microsoft社のWindows XP Professional, Windows 2000 Server Edition, Windows Server 2003 Enterprise Editionの三つのOSにおいて検証を行った.また,Real AlertシステムがSnortの検出したアラートのフィルタリングを目的としていることから,Snortが検出できない脆弱性については検証対象から除外した.この結果,2004年以降に公開された脆弱性情報については,対象とした3つのOS全てにおいて,ManagerとWatcherの連携により,その脆弱性の有無を確実に検出可能であることを確認した.一方,2003年以前に公開された脆弱性情報は現時点では検出できない.これは,ManagerがMSBSサイトより情報収集するために用いているHTML構文解析プログラムが,2003年以前のMSBSサイトのフォーマットに対応していないことがその理由であり,構文解析プログラムの追加で容易に対応可能となる.ただしManagerの脆弱性情報収集能力がHTMLの構文解析能力に依存するのは望ましくなく,今後何らかの対策が必要となろう. 次に,前述した試験運用環境においてReal Alertシステムを実際に運用し,そのアラートフィルタリング能力を検証する実験を行った.実験期間は2006年2月19日から3月12日までである.結果を表1に示す.
表1 Real Alertシステムの試験運用結果(2006年2月19日〜3月12日)
ホスト1 | ホスト2 | ホスト3 | ホスト4 | |
OS | Win 2000 | Win 2000 | Win XP | Win XP |
パッチ導入 | なし | 済み | なし | 済み |
Snortのアラート数 | 147 | 142 | 155 | 143 |
Real Alertのアラート数 | 0 | 0 | 0 | 0 |
まず全てのホストに対してSnortが発したアラート数が少ないことに気づくが,これは試験運用環境の構成上の問題に起因する.前節で述べたように,内部→外部のパケット転送を全て禁止する設定としたため,外部から攻撃意図を持って当該サブネットにポートスキャンをかけてきても,現状ではpingに応答するICMPパケットまで全て遮断されてしまう.このため,攻撃者にホストが存在しないと判断され,攻撃を受けなかったことがアラート数が少ない原因であろう.これについては,今後ファイアウォールの設定を見直して外部からの攻撃を受け易い環境の構築や,サブネット内部のホスト上でワーム等を活動させるなどの対処を行う予定である.
次にSnortの発したアラート数とReal Alertシステムが発したアラート数の差異に着目する.Snortはこの期間中に百数十件のアラートを発しているのに対し,Real Alertシステムが発したアラート数は全てのホストに対して0であったことがわかる.つまり Snortが発したアラートは,全てReal Alertシステムによってフィルタリングされたこととなる.これは, Snortの発したアラートは監視対象ホストの脆弱性を突いた攻撃に対するものではなく,当該ホストにとって危険性のない攻撃であったことを意味する.この結果を検証するためにSnortのアラート情報を精査したところ,Snortの発したアラートの多くはWindows以外のOSを攻撃対象とするものであった.また一部にはWindowsの脆弱性を突いた攻撃も存在したが,監視対象ホストにはインストールされていなかったWindows SQL Serverを対象とする攻撃であった.このようにSnortが発したアラートは全て当該ホストにとって危険性がない攻撃に因るものであり,Real Alertシステムは適切にアラートフィルタリングを行っていることが確認できた.
本稿では,NIDSが発する多量のアラートの中から,真に危険な不正侵入情報のみを自動的に抽出・通知するReal Alertシステムについて,その概要,試験運用環境および動作確認実験の結果について述べた.セキュリティレベルの異なるWindowsホストを監視対象とした動作確認実験の結果,監視対象ホストには無効な攻撃に対する全アラートのフィルタリングに成功し,設計どおり動作していることが確認できた.今後は,試験運用環境の拡大,脆弱性情報収集用ソフトウェアモジュールManagerの能力向上などを行い,Real Alertシステムの実用化を目指す予定である.
山梨大学総合情報処理センタ長・岩沼宏治氏、同専任助教授・郷健太郎氏,同技術専門職員・廣嶋くに代氏,同技術職員・杉山仁氏,山梨大学事務局本部 総務部 情報推進課・大澤正弘氏,ならびに山梨大学大学院 医学工学総合研究部 工学学域 物質工学系・鈴木保任氏には,Real Alertシステムの試験運用環境の構築に際して大変お世話になりました.ここに深く感謝いたします.
[1] | 総務省, 情報セキュリティに関する実態調査, http://www.soumu.go.jp/s-news/2004/pdf/040705_2_bt.pdf |
[2] | Snort - the de facto standard for intrusion detection/prevention, http://www.snort.org/ |
[3] | GNU General Public License, http://www.gnu.org/licenses/gpl.html |
[4] | CVE - Common Vulnerabilities and Exposures, http://www.cve.mitre.org/ |
[5] | Microsoft Security Bulletin Search, http://www.microsoft.com/technet/security/current.aspx |
[6] | PHP: Hypertext Preprocessor, http://www.php.net/ |
[7] | VMware Player, http://www.vmware.com/jp/products/desktop/player_features.html |
[8] | MSDNアカデミック アライアンス ホーム, http://www.microsoft.com/japan/msdn/academic/default.asp |
[9] | Microsoft Baseline Security Analyzer (MBSA), http://www.microsoft.com/technet/security/tools/mbsahome.mspx |