現在では,インターネットにサービスを公開しているサイトのほとんどが,ファイアウオールを使用して不正アクセスに備えている。しかし,設定の不備などによって不正なトラフィックを通過させてしまう可能性は否定できない。また,通過を許可しているプロトコルを使用した不正アクセスもありうる。そこで今回は,ファイアウオールで通過を許可してしまった不正なアクセスを,ファイアウオールや IDS(侵入検知システム), 各ホストのログ(syslog やアプリケーションが出力するログ)などから探る方法について解説したいと思う。ポイントは,1つのログから判断するのではなく,複数のログから“総合的に”判断することである。

複数のログから判断する

 IDS のアラート(警告)あるいはファイアウオールのログなどから,「不正なアクセスを受けているらしい」と感じた場合には,それら以外のログ(例えば,各ホストから出力されるログなど)を参照して,本当に不正なアクセスなのかどうかを調べることが重要である。誤報あるいは誤解である場合があるからだ。IDS やファイアウオールを過信せず,十分に調査すべきである。

 例えばホスト型 IDS(HIDS)*1 から,「brute force」*2 がアラートとして検知された場合を考える。まずは,(1)何時何分に,(2)どのサービスに対して,(3)どのIPアドレスから,brute force が行われたのかを調べなければならない。

*1 Host-based Intrusion Detection System。文字通りホスト(マシン)ごとにインストールして,OS やアプリケーション,監視プログラムなどが出力するログ・ファイルを監視する。
*2 総当り攻撃のこと。パスワードなどを破るために,可能性がある文字列すべてを次から次へと送信する攻撃方法。

 そして,ファイアウオールのログをチェックし,IDSと同様のアクセスが記録されているかどうかを調べる。記録されている場合には,実際にその送信元IPアドレスから brute force が行われた可能性は高い。

 しかし,対応する記録が存在しない場合,その可能性は低くなる。この場合,アラートの原因は,対象ホストにインストールされているアプリケーションの設定不備や不具合など,他の要因が考えられる。その際には,対象ホスト内のログを調べて原因を突き止める。

 このように,IDS がアラートを発しても,それだけで「不正なアクセスを受けた」と判断せずに,それ以外の情報を参照して,総合的に判断するのである。では次に,総合的に判断するためのポイントについて解説しよう。

ホスト型 IDS を重視する

 総合的に判断する際の“トリガー”,すなわち第一報は何に求めればよいだろうか。言うまでもなく,IDS のアラートである。IDS には HIDS と NIDS(ネットワーク型IDS)*3が存在するが,特に HIDS のアラートを重視する。HIDS に比べて NIDS のアラートは誤報である可能性が高いからだ。

*3 Network-based Intrusion Detection System。保護すべきネットワーク上の通信を監視し,攻撃などの特定の通信で発生する異常なパターンを発見したら,ユーザーに通知する。異常なパターンの発見には,あらかじめそれらを登録した「シグネチャ(ルール・セット)」と呼ばれるデータベースと,通信内容(トラフィック)の比較により行う。

 誤報の可能性は,NIDS 製品の種類や,検知されるアラートの内容によって異なってくるが,どの製品であろうと誤報が混在してしまうのが現状である。その理由の一つは,NIDS では攻撃パターンを“シグネチャ化”して,パターン・マッチングにより侵入検知を行っているからである。つまり,ある攻撃に含まれるであろうトラフィックのパターン(文字列)をあらかじめ登録しておき,同じパターンが現れた場合には,不正なアクセスであるとみなす。そのため,正規なトラフィックでも同じパターンが含まれていれば,アラートを発してしまう。

 それに対して,HIDS は syslog やシステム・コール・レベルのログを直接監視しており,NIDS と比較すると誤報は少ない。そのため,不正なアクセスを受けたかどうかを判断するには,HIDS のアラートを重視したほうがよい。

 ただし,誤解しないでほしいのは,HIDS のほうが NIDS よりも優れているというわけではないということである。それぞれ役割が異なるのだ。NIDS は「攻撃の予兆を監視する」ためであり,HIDS は「侵入の事実を監視する」ためのツールである。その性質上,NIDS に誤報が多くなるのは仕方のないことなのである。

時刻を同期させておく

 総合的なログ解析を行うためには,各ホスト間で時刻の同期がとれていなければならない。それぞれのログを比較参照する際には,時刻が頼りになるからだ。実際,IDS を導入しているあるサイトでは,各ホスト間で最大20分以上も時刻がずれていたことがあったという。これでは,せっかくコストをかけて IDS を導入していても,総合的なログ解析はできない。

 上述の brute force の例で考える。実際に攻撃を受けたとしても,時刻がずれていると,HIDS では brute force を検知したものの,同時刻のファイアウオールのログには該当する記録が存在しないことになる。その結果,「原因は不明だが,ファイアウオール には該当する記録が見当たらないので,問題なし」---として処理してしまうことがある。。マシン間で時刻が合っていないことが原因の“ありがちな”パターンである。このようなことを避けるため,各ホスト間で時刻の同期をとることは最低限の必要な条件である。なお,ログ解析を行わない場合でも,各ホスト間で時刻同期は,システム運用上は必須の事項である。

◇     ◇     ◇     ◇     ◇     ◇

 以上のように,総合的にログを解析することによって,不正なアクセスか誤報かの判断が可能になる。加えて,ログを消されたり改ざんされた場合にも,他システムのログから不正なアクセスの追跡が行える。ファイアウオールや IDS を導入した際には,各システムのログを総合的に解析して,正しい情報を得るようにしたい。


黒田 征太郎(Kuroda Seitaro)
株式会社ラック 不正アクセス対策事業本部 技術部
kuroda@lac.co.jp


 IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,その週に起きたUNIX関連およびセキュリティ全般のニュースや動向をまとめた週刊コラムです。セキュリティ・ベンダーである「株式会社ラック」のスタッフの方を執筆陣に迎え,専門家の立場から解説していただきます。