はじめに

ネットワーク侵入検知システムの初期のタイプは1980年代初頭までさかのぼりますが、IDS のコンセプトは Martin Roesch が無料のオープンソース IDS システム SNORT を作ったときに一挙に広まりました。 その軽量設計と柔軟な導入オプションにより、Snortのユーザー数はその後急速に増加しました(現在では40万人に達しています)。

2001年、Martin RoeschはSNORTをベースにした商用IDS製品のためにSourcefire社(2013年にCiscoが買収)を設立した。 しかし、オリジナルのフリー・オープンソース版SNORTは利用可能なままであり、現在でも世界中のネットワークで広く利用されている。 一方、オープンソースIDSの領域では、Suricata IDSを筆頭に、いくつかの競合他社が台頭してきている。

両者の主な違い、そして SNORT に今後期待できることは何でしょうか。

ルール

IDS ソリューションは、監視するトラフィックに適用できるルールによってのみ、その機能を発揮します。 Snortは常に多くのコミュニティのサポートを受けており、その結果、定期的に更新される充実したルールセットを持つに至っています。 ルールの構文は非常にシンプルで、プログラム構造により、誰でもカスタマイズしたルールを自分のIDSに導入したり、コミュニティと共有したりすることができます。

SNORTのルールを開発している商用団体もあり、それらは月額または年額で購入することができます。 例えば、Talos社のSO/VRTルール(1ヶ月後に無料公開)やCrowdStrikes Threat Intelligence Servicesなどがあります。

Suricataは、SNORTと同じルールを使用することができます。 すべてではありませんが、多くのVRTルールはまだ動作します。 Suricata には独自のルールセットがあり、当初は有料会員向けに公開されていますが、30~60 日後に自由に利用できるようになります。 Emerging Threats(新興の脅威)です。 これらの Suricata ルールは、ポートに依存しないプロトコル検出や自動ファイル検出およびファイル抽出など、Suricata が提供する追加機能をより活用しています。 単にルールに一致するトラフィックを調べ、一致するものがあればアクション(警告、ドロップなど)を実行します。 プリプロセッサは、トラフィックをルールが適用できるような形式に整形することで支援します。たとえば、解凍やデコードを実行しますが、Snort がデータを生成したアプリケーションを理解する必要はありませんでした。 OpenAppIDは、いわゆるレイヤー7ディテクターによるアプリケーションの検出を可能にします。 既知のアプリケーションの存在は、必ずしも直接的なセキュリティインシデントではありませんが(例えばDropboxの使用)、ネットワーク内に存在するものをよりよく理解することができます。 以前は知られていなかったアプリケーションを見つけることができるだけでなく、AppID を従来の SNORT IDS/IPS ルールにリンクさせることにより、そのトラフィックを削除したり警告を発したりすることができます。 アプリケーション層の検出ルールをサポートしており、たとえば、プロトコルに基づく非標準のポート上のHTTPまたはSSHトラフィックを識別することができます。

この分野では、どちらが優れていてどちらが劣っているということはなく、ビジネスが何を求めているか、そしてどのシステムが検出のギャップを埋めるのに最も適しているかに依存します。 どちらも完全にオープンソースであるため、テスト環境の構築は比較的迅速かつ安価です。

Multithreading

Suricataの主な利点の1つは、Snortよりもはるかに最近開発されたことです。 つまり、最近では事実上見逃すことのできない多くの機能を搭載しています。 それらの機能の1つは、マルチスレッドのサポートです。

長年にわたるネットワーク トラフィックの増加は、IDS デバイスに対する処理要求 (パケット/秒単位で測定) に密接に関連しています。 幸いなことに、SURICATA は箱から出してすぐにマルチスレッドに対応しています。 しかし、Snortはマルチスレッディングをサポートしていません。 CPUのコアがいくつあっても、Snortが使用するのは1つのコアまたはスレッドのみです。

かなり複雑な回避策があります。複数の SNORT シングルスレッド インスタンスを実行し、すべて同じログに入力することです。 しかし、このプロセスを管理するためのオーバーヘッド (AutoFP) が追加され、ハードウェアのコストが高くなるため、このセットアップは実稼働環境ではほとんど見られません。 SNORT3はマルチスレッドに対応する予定ですが、まだアルファ版であり、Snort++として動作しています。 もちろん、Alpha段階の製品を本番環境で使用することはお勧めできません。 マルチスレッドは、Snort よりも Suricata を検討する強力な論拠になることは間違いありません。

ファイル抽出

Suricataはファイル抽出をサポートしています。 これは非常に便利な機能で、”filestore” オプションを含むルールがトリガーされると、選択されたファイルを自動的に抽出することができるようになります。 たとえば、すべての .pdf ファイルやすべてのシングル ピクセル .png ファイルを抽出し、手動分析、VirusTotal 検索、あるいは自動サンドボックス化のためにあらかじめ設定されたフォルダーに保存することが可能です。 先に述べた更新された SNORT3 リリースは、マルチスレッド、サービス識別、およびよりわかりやすいルール言語のサポートにより、非常に有望に見えます。 これは何年も前から開発されていたものです。 しかし、アルファ段階は 2014 年にさかのぼり、製品版のリリース日はまだ決まっていません。

従来の IDS/IPS ソリューションに代わるものもありますが、これらは時として若干異なる動作をすることがあります。 たとえば、Bro Network Security Monitor (現在は Zeek として知られています) は、より異常な検出を行うシステムです。 Snort や Suricata が従来の IDS シグネチャで動作するのに対し、Bro/Zeek はトラフィックを分析するためにスクリプトを利用します。

Bro/Zeekの大きな利点は、これらのスクリプトによって、異なるシステム間で高度に自動化されたワークフロー、つまり、従来のパスまたはドロップ動作よりもはるかにきめ細かい判断が可能になるアプローチも可能になる点です。 しかし、その設定は非常に複雑になります。

Conclusion

世の中には、いくつかの優れたオープンソースの IDS オプションがあります。 しかし、その違いにより、すべてのソリューションがすべての環境で機能するわけではありません。 最適な製品を選択するには、他にどのような重複しそうなセキュリティ製品がすでにあるか、ネットワークを通過するトラフィックの種類、トラフィック量、および使用できる IT スタッフのスキルセットに基づいて行う必要があります。

コメントを残す

メールアドレスが公開されることはありません。