IDS(侵入検知ツール)

 2回に分け,侵入検知ツール(IDS)の役割と機能,活用法について説明する。IDSには,ネットワーク上のパケットを監視して不正アクセスを検出するネットワーク型(NIDS)とホスト上に常駐してホストの状態を監視するホスト型(HIDS)がある。最初にNIDSを取り上げる。NIDSが利用するシグネチャ検知機構,および役割に応じた適切な配置形態を説明する。国内で販売されているNIDS製品を購入する際の選択の指針についてもまとめた。

 侵入検知ツール(IDS : Intrusion Detection System)とは,その名の通り,不正侵入の検知を目的としたツールである。一般には,略称であるIDSの方が通りがよいようだ。以前は商用製品か少なく,セキュリティ関係者やネットワーク・エンジニアなど一部の入にしか馴染みのないツールであった。しかし最近では,ホームページ改ざんなどの不正アクセス事件が多発したこともあり,知名度は徐々に上かっている。
 本連載では,今回から2回にわたってIDSを取り上げる,IDSの主な役割や機能,実際に導入する場合の検討事項などを説明する。「IDSとは」といった素朴な疑問から,「IDSはどのように活用すればよいのか」などのノウハウについて答えていきたい。
 IDSは機能によって,いくつかの種類に分けられる。標準化団体や業界団体などによって正確に種類分けされているわけではないが,業界関係者の間では主に.優奪肇錙璽型IDS▲曠好鳩IDSの二つにカテゴリ分けされている。
 ,魯優奪肇錙璽上を流れるパケットを監視して,不正アクセスの有無を検知する役割を持つ。
 一方の△和仂櫃箸覆襯曠好版鮨箸縫ぅ鵐好函璽襪掘い修離曠好箸魎道襪垢襯織ぅ廚任△。ホスト型IDSは監視する内容によって,さらに分類できる。一般に,OSやインストールしてるアプリケーションが出力するログ・ファイルを監視するタイプと,ホストにあるファイルの不正改ざんを検知するタイプに分かれる。ログ監視タイプの場合,OSやサーバ・プログラムが残すシステム・ログ内の文字列をパターン・マッチング処理することで,システムの異常を発見する。例えば,「アカウントのロックアウト」や「glutting down」といった不正侵入者の攻撃を受けた結果生じたと思われる文字列がログに記録された場合,あらかじめ決めておいたルールに従って処理する。起動されるイベントとしては,.蹈阿鯤魅侫.ぅ襪暴颪出す,管理者にメールを送信する,指定したユーザにボップアップ・メッセージを出す,ぅ櫂吋男離戰襪縫瓮奪察璽犬鯀る,イ修離蹈阿鯣生させたプロセスを停止する,μ簑蠅あったユーザのセッションを切断する,Д轡Д襦Ε好リブトを実行する,などがある。筒単に言うと,ホスト型IDSはログの監査やシステム監査の仕組みを自動化したものである。シェル・スクリプトなどを使って,これに近い機能を実現することもできる。
 このうち,今回はIDSとして特徴的な機能を持つネットワーク型IDSについて説明する。最近では,ネットワーク型IDSをNIDS,ホスト型IDSをHIDSと表記する場合がある。以後は,混同を避けるためにネットワーク型を指す場合はNIDS,IDS全般を指す場合はIDSと記述する。
 まず,NIDSの役割について説明しておこう。最近は少なくなったが,筆者がシステム管理者とIDSについて話をすると,以前は毎回と言ってよいほど「うちはIDSか守ってくれてますから」とか「IDSは攻撃を防御してくれるんですよね」といったことを耳にした。これはIDSの機能的な役割に対する明らかな誤解である。
 IDSは防御するツールと考えるよりも,不正アクセスや不正データを監視する監視カメラのような役割と考える方がよい。ファイアウォールもそうであるが,ある一つのツールだけでネットワークやホストを不正アクセスから完璧に守れるわけではない。セキュリティ・ポリシ策定,運用管理体制の明確化,ファイアウォールやIDSといった複数の防御ツールの導入などの複合的な施策か必要となる。
 IDSも,機能を理解して適正に使えば十分有効なツールになる。逆に言えば,不正アクセスを監視・検知するのにIDSほど便利なツールはない。例えば,悪意のある攻撃者が不正侵入に成功すると,その後何を行うだろうか。ホームページの改ざんだけでなく,不正侵入したホストを二次的に利用できないかを試し始めるだろう。侵入痕跡の隠ぺい,バックドアの埋め込み,ネットワークの盗聴,他マシンに侵入するための踏み台利用など,いろいろと考えられる。これらの行為はいずれも,IDSなどの検知ツールを使用しないと発見することが難しい。
 また,NIDSを導入してネットワーク上を流れるパケットを定期的に確認しておけば,ネットワークの状況も見えてくる。シグネチャ(後述)をカスタマイズできるようになれば,不正アクセス対策に対する具体的な実感も沸いてくる。
 NIDSはネットワーク上を流れる不正なデータ・パターンを識別して,不正アクセスを検知する。ほとんどのNIDSは「シグネチャ」と呼ぶ不正データや攻撃手法の検知パターンを持ち,ネットワーク上のパケットとシグネチャを比較することで不正アクセスかどうかを判断する。シグネチャは,ウイルス対策ソフトのパターン定義ファイルのようなものだと思ってもらえればよい。
 最近のNIDSは,豊富な不正アクセス手法や攻撃ツールに対応できるように,シグネチャを数百パターンも持っている。商用NIDSの中には,シグネチャ数の多さを製品の特徴とするものもある。
 たしかに,シグネチャは多いにこしたことはない。ただ,実際に運用する場合,ユーザはシグネチャについて理解しなければならない。例えば,中には古い攻撃手法を検知するための陳腐化したシグネチャや,不正アクセスだけでなく正常時にも検知されるシグネチャがある。これらのシグネチャを有効にするかの判断は,それぞれのシグネチャの内容を理解しなければならない。つまり,シグネチャが多くなりすぎると,運用面でユーザに負担を強いることにもなる。
 シグネチャを使った検知機構には弱点もある。シグネチャのロジックによって,検知の精度が異なり,正常データなのに異常だと検知したり,検知すべき時にできないということが起きる。前者をフォールズボジティブ(false positive),後者をフォールス・ネガティブ(fllse neg-ative)と呼ぶ。また,新たな攻撃手法や攻撃ツールは,それに対応するシグネチャがないと検知できない。
 NIDSは,不正アクセスやネットワーク経由の攻撃を検知することを目的とする。ただ,実際にはこれが結構難しい場合かある。例えば,以前にOSのプロトコル・スタックの仕様を悪用したLandと呼ぶ攻撃手法かあった,これは送信元IPアドレスとあて先IPアドレスか同じパケットを送り,その処理方法に困惑するOSをフリーズさせる攻撃である。この場合,NIDSは「送信元IPアドレス=あて先IPアドレス」という明確な基準で検知できる。
 しかし,短時間にWebサーバヘ膨大な接続要求を送るDoS(Denial of Service,サービス不能)攻撃の検知は難しい。Webサーバに接続要求を送ることは不正な行為ではない。問題なのはその数である。数や量で,不正かどうかをはっきり分けることが難しいのだ。ある一定のしきい値を持ち,それを超えたら不正と判断するしかない。ただこの方法でも,何らかの理由で本当にアクセスか集中したのかも,という疑念は払拭できない。
 そこで,前者と後者の検知方法を区分けしようとする考え方がある。それがMisuse検知Anomaly検知である。
 Misuseとは,既知の不正アクセス手法かどうかを判断する方法で,前述のシグネチャによる検知はこれに含まれる。この検知方法の利点は,不正アクセスを検知した場合に,それかどのような攻撃方法なのか,またはどのツールによるものかなどの具体的な特定が可能な点である。半面,シグネチャのロジックによって検知精度や信頼性が左右される。  一方,Anomalyぱ通常でないもの”を検知する方法である。漠然としてわかりにくいが,例えばアクセス数のしきい値を設定することか,この検知方法に含まれる。このほか,セキュリティーポリシやアクセスリレールなどの基準を利用する方法もAnomalyである。例えば,あるWebサーバが80番ボートだけに接続することを許可しているとしよう。にもかかわらず,外部(インターネット)からそれ以外のボートに接続しようとしてくれば,それは不正だと判断できる。セキュリティーポリシでtelnetを使ったリモート・メンテナンスを禁じている場合,それか実行されていることを検知すれば,これも不正である。
 このように,Anomalyは通常でないことを不正として検知する。ただ,それが本当に不正アクセスを試みたものなのか,または本当に悪意を持った攻撃者のアクセスなのかは細かく調査しなければ判断できない。
 では,シグネチャ検知についてもう少し詳しく説明していこう。ターゲットとなるホストに攻撃をしかける場合,大きく二つの方法が考えられる。一つはターゲットOSを狙ったもの。もう一つはOS上で動いているアプリケーションを狙ったものである。
 OSを狙った攻撃としては,主にOSの通信パケットの処理方法,いわゆるプロトコル・スタックの仕様を悪用したものか多い。別の言い方をすれば,パケットのヘッダ部分を利用した攻撃である。前述のLand攻撃以外にも,WinNukeと呼ぶTCPヘッダ部のフラグを悪用した攻撃,TCP Hijackingと呼ぶパケットの規則性を利用してTCPセッションを強制的に乗っ取る攻撃などが代表的だ。これらの攻撃を検知するには,通信パケットのヘッダ部分を,それぞれの攻撃手法に適合するパターン(シグネチャ)と比較する(これらの攻撃手法はすでにパッチープログラムの配布やバージョンアップによって改善されている)。
 これに対して,アブリケーションのぜい弱性を狙った攻撃は,ヘッダ部ではなくデータ部分の中に悪意のあるコードが含まれる(図1)。

悪意のあるコードが入ったパケット・データ部の例
図1 悪意のあるコードが入ったパケット・データ部の例

最近の攻撃は,ほとんどがアプリケーションのぜい弱性を狙ったものである。代表的な攻撃手法としては,Internet Information Server/Services(IIS)が抱えるUnicode処理関連のセキュリティーホールを突く攻撃,バッファ・オーバフローを起こして侵入を試みるCodeRedワームなどがある。 Unicodeバグを突いた攻撃だと,URLの中にWindows上でコマンド実行を試みる記述を含む。バッファ・オーバフロー攻撃であれば,メモリ上のデータを書き換えるデータを隠ぺいしてサーバに引き渡す,といった何らかのパターンを持っている。データ部分に含まれている攻撃を特定できるパターンを,シグネチャとして利用するのである。
 前述の通り,シグネチャを使った検知方法では,シグネチャがない限り,まったく新しい攻撃手法には対応できない。最近では,だれかが直接攻撃してくるのではなく,ワームを使った不正侵入事例が増えてきている。そうなると,被害は急激に拡大し,NIDSもより早く対応することを迫られる。この場合,即応するにはー分でシグネチャを作成するIDSベンダのサボートに問い合わせる,の二つの方法しかない。
 ,両豺隋ぢ弍は早いが相当の技術力と知識を要求される。TCP/IP通信に関する知識とアプリケーションを含めたコンピュータ内部処理に関する知識,加えてプログラム作成技術が必要だ。また,攻撃の具体的な方法や攻撃ツール自体を入手しないと,攻撃をパターン化できない。,諒法は,コンピュータ・セキュリティの専門家や技術者でないと難しいだろう。
 このため,多くのユーザは△諒法を選択せざるを得ない。そこで,IDS製品を選択する場合はベンダのサポート体制が重要なポイントになる(表1)。

表1 国内で販売されているネットワーク型IDSを選択する場合のポイント
現在では,国内でも様々なNIDSが販売されている。製品によって,シグネチャの数と精度,高速ネットワークでの処理能力,製品形態(ソフトウェア製品かハード一体型製品)などがある
選択のポイント 概要
ハード一体型とソフトウェア製品 ハード一体型の場合はOSカーネルやバッファ領域,ネットワーク・ドライバのカスタマイズなど,さまざまな面で最適化された製品が多い。GビットEthernetなどでも十分な処理能力を発揮するものもある。ただ,ハード一体型は一般に数百万円台の高価な製品が多い。ソフトウエア製品の方が安価である
シグネチャのカスタマイズ シグネチャがカスタマイズ可能であれば,柔軟で即応的な対応が可能になる。ただ,それを行うには十分な知識と技術が必要となる。自信がなければ,ベンダがシグネチャを早期にアップデートする製品を選択した方がよい