動作原理

このセクションの内容:

概要

監視するファイルシステムの領域を定義

拡張ファイルモニタリングモード

概要

ファイルシステムモニターSpIDer Guardは、fanotifyメカニズムか、Doctor Webによって開発された特別なLinuxカーネルモジュールLKM - Linux kernel module)のいずれかを使用してユーザーモードで動作します。モニターで使用されるfanotifyをサポートしていないLinuxカーネルバージョンもあるので、起動時にコンポーネントの最適な動作モードを定義できる自動モードAuto)を使用することをお勧めします。このコンポーネントが指定された統合モードをサポートできない場合、コンポーネントは起動後に終了します。自動モードが選択されている場合、このコンポーネントはfanotifyモード、LKMモードの順に使用を試みます。これら2つのモードのどちらも使用できない場合、コンポーネントは終了します。

一部のOSでは、コンパイル済みのカーネルモジュールがSpIDer Guardとともに提供されます。SpIDer Guardを使用するOS用にカーネルモジュールがコンパイルされていない場合は、Doctor Webが提供するソースコードファイルを使用して、カーネルモジュールを手動で構築してインストールします(手順については、SpIDer Guard用のカーネルモジュールを構築するのセクションを参照)。

新しいファイルまたは変更されたファイルが検出されると、モニターはDr.Web File Checkerファイルチェッカーコンポーネントにこれらのファイルをスキャンするタスクを送信します。その後、コンポーネントはDr.Web Scanning Engineスキャンエンジンによるスキャンを開始します。動作スキームは下図のようになります。fanotifyシステムメカニズム経由で動作している場合、モニターは、まだスキャンされていないファイル(すべての種類のファイル、または実行ファイル(PE、ELF、プリアンブル#!付きのスクリプト)のみ)へのアクセスを、それらのファイルが完全にスキャンされるまでブロックできます(以下を参照)。

ファイルシステムモニターSpIDer Guardは、新しいファイルシステムボリュームのマウントとマウント解除(USBフラッシュドライブ、CD/DVD、RAIDアレイなど)を自動的に検出し、必要に応じてモニタリング対象オブジェクトのリストを調整します。

監視するファイルシステムの領域を定義

SpIDer Guardはファイルシステムのチェックを最適化するために、設定で指定されたファイルシステムの範囲内にあるファイルに対するリクエストのみを制御します。それぞれの範囲はファイルシステムツリーのディレクトリへのパスとして定義され、保護スペースと呼ばれます。すべての保護スペースが集まって、モニターによって制御される単一のモニタリング範囲を形成します。また、コンポーネントの設定(除外範囲)では、モニタリングから除外するディレクトリの集合を指定できます。コンポーネント設定で保護スペースを指定していない場合は、モニタリング範囲によってすべてのファイルシステムツリーが制御されます。つまり、ファイルがモニタリング範囲に属し、除外範囲に属していない場合、それらのファイルはモニタリングの対象になります。

除外の指定は、特定のファイルが頻繁に変更され、その結果それらのファイルが繰り返しスキャンされることによって、システムの負荷が増大するような場合に便利です。ディレクトリ内のファイルの頻繁な変更が、悪意のあるプログラムによるものではなく、信頼できるプログラムの操作によるものであることが確実に分かっている場合は、このディレクトリまたはこれらのファイルへのパスを除外リストに追加できます。この場合、ファイルシステムモニターSpIDer Guardは、モニタリング範囲内であっても、それらのオブジェクトの変更に対する応答を停止します。さらに、信頼できるプログラムのリストにプログラムを追加することもできます(ExcludedProc設定パラメータ)。この場合、変更されたファイルまたは作成されたファイルがモニタリングの対象になっていても、このプログラムによるファイル操作によってスキャンが実行されることはありません。同様に、必要に応じて、ローカルファイルシステムにマウントされている他のファイルシステム(CIFS経由でマウントされた外部ファイルサーバーディレクトリなど)にあるファイルのモニタリングとスキャンを無効にすることもできます。ファイルをスキャン対象にしないファイルシステムを指定するには、ExcludedFilesystemパラメータを使用します。

指定されたスキャンパラメータを持つモニタリング範囲の一部である保護スペースは、コンポーネント設定の名前付きセクションとして設定され、その名前には保護スペースに割り当てられた一意の識別子が含まれます。保護スペースを記述する各セクションには、スペースのディレクトリを格納するファイルシステムへのパスを定義するPathパラメータ(つまり、このスペース内でモニタリングされるファイルシステムツリーフラグメント)と、保護スペース内のローカル(Pathが基準)の除外範囲を定義するExcludedPathパラメータが含まれます。ExcludedPathパラメータには標準のファイルマスク(「*」と「?」の文字)を含めることができます。さらに、保護スペースを記述するセクションの外側に指定したExcludedPathパラメータを使用すれば、グローバル除外範囲を指定することもできます。保護スペースのディレクトリを含む、この範囲に属するすべてのカタログがモニタリングから除外されます。各保護スペースには、グローバルおよび独自の除外範囲のみを追加できます。あるスペースが別のスペースにネストされている場合、スペースで囲って指定する除外設定はネストされたスペースには適用されません。さらに、各保護範囲設定には、ファイルモニタリングを有効にするかどうかを指定する論理パラメータEnableがあります。このパラメータがNoに設定されているか、Pathパラメータの値が空になっている場合、スペースの内容はモニタリングされません。

モニター設定で指定したすべての保護スペースがモニタリングされない場合や、それらのスペースのパスが指定されていない場合、システムファイルツリーのファイルはモニタリングされないため、SpIDer Guardはアイドル状態で実行されます。ファイルシステムを単一の保護スペースとしてモニタリングする場合は、設定から名前付きスペースのセクションを削除します。

モニタリング範囲と除外範囲の設定例を考えます。コンポーネント設定で次のパラメータが設定されているとします。

[LinuxSpider]
ExcludedPath = /directory1/tmp
...
 
[LinuxSpider.Space.space1]
Path = /directory1
ExcludedPath = "*.tmp"
...
 
[LinuxSpider.Space.space2]
Path = /directory1/directory2
...
 
[LinuxSpider.Space.space3]
Path = /directory3
Enable = No
...

この設定は、/directory1/tmpフォルダを除く、/directory1ディレクトリとそのサブディレクトリにあるファイルがモニタリングされることになります。フルネームがマスク/directory1/*.tmpと一致するファイルもモニタリング対象になりません(範囲が保護スペースspace1にネストされている場合でも、このマスクが適用されないネストされた範囲/directory1/directory2を除きます)。/directory3ディレクトリ内のファイルはモニタリングされません。

拡張ファイルモニタリングモード

SpIDer Guardは3つのモニタリングモードを使用できます。

通常(デフォルトで設定されています) - SpIDer Guardはファイルアクセス(作成、開く、閉じる、実行)をモニタリングし、ファイルスキャンを要求します。スキャン時に脅威が検出された場合は、脅威を駆除するためのアクションが適用されます。ファイルスキャンが終了するまで、アプリはファイルにアクセスできます。

実行ファイルの強化された制御 - SpIDer Guardは、実行不可能と見なされるファイルを通常モードの場合と同様にモニタリングします。実行可能と見なされるファイルへのアクセスは、ファイルスキャンが終了するまでアクセス試行時にブロックされます。

実行ファイルはPEフォーマットやELFフォーマットのバイナリファイルと、「#!」プリアンブルを含むテキストスクリプトファイルです。

「パラノイド」モード - ファイルスキャンが終了するまで、SpIDer Guardはファイルへのアクセスを試行時にブロックします。

Dr.Web File Checkerは指定された期間、スキャン結果をキャッシュに保存します。そのため、スキャン結果がキャッシュに保存されているファイルにアプリがアクセスすると、そのファイルは再スキャンされず、キャッシュされているスキャン結果が代わりに使用されます。それでも「パラノイド」モードではファイルへのアクセスが大幅に遅くなります。

モニタリングモードを構成するには、コンポーネント設定BlockBeforeScanパラメータ値を変更します。

SpIDer Guardの設定やファイルのモニタリングモードについては、ファイルシステムモニタリングの設定のセクションを参照してください。