株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

Kaspersky製品ナレッジ 第37回 ~KESLのシステム変更監視 (OAFIM, ODFIM) の紹介と実装する手順~

皆様、こんにちは。カスペルスキー製品担当SEの小池です。

今回は Kaspersky Endpoint Security for Linux 11.1.0 におけるシステム変更監視機能を紹介いたします。
今回の内容は以下の通りです。

  1. KESL のシステム変更監視とは
  2. ファイル変更監視を利用できるライセンス
  3. OAFIM実装手順 (KSCありの場合)
  4. ODFIM実装手順 (KSCありの場合)
  5. 実装時のワンポイント


今回の記事は以下のバージョンにて検証し、画面ショットを取得しております。
●管理サーバー
 OS:Windows Server 2019
 DB:Microsof SQL Server 2017 Express
 Kaspersky Security Center:13.0.0.111247
 Kaspersky Security Center Web Console:13.0.10285
 Kaspersky Endpoint Security 11.1.0 for Linux のプラグイン:バージョン 11.1.0.111

●保護製品
 Kaspersky Endpoint Security for Linux 11.1.0.3013

●保護対象デバイス
 Red Hat Enterprise Linux 8.4 (Ootpa)

●利用ライセンス
 Kaspersky Hybrid Cloud Security Enterprise, CPU Japanese Edition.

KSC13ではWebコンソールの利用が推奨されているので、今回の画面ショットはすべてWebコンソールのものを使用します。

1. KESL のシステム変更監視とは
KESLのシステム変更監視とは、指定した監視範囲で実行される処理を追跡し、変更や削除を検知をする機能です。
(11.1において本機能の日本語名称は「システム変更監視」ですが、メーカーの資料によってはファイル変更監視と記載されているケースがあります。)
検知の方法はリアルタイムの検知 (OAFIM)定期的な検知 (ODFIM) の2種類があります。

  • OAFIM (オンアクセスシステム変更監視) は、本機能をONにした瞬間の状態をベースに変更の有無を監視します。ポリシーのシステム変更監視の有効/無効だけで利用でき、タスクによるベースライン作成は不要です。
  • ODFIM (オンデマンドシステム変更監視) は、ベースラインの作成、および、作成済のベースラインと現在の状況をタスク実行時 (定期的) に比較して、監視します。ベースラインの作成~検知まですべてタスクで完結するので、ポリシーのシステム変更監視の有効/無効とは無関係です。

先述した通り、OAFIMはベースライン不要 且つ ポリシーで有効/無効を制御し、ODFIMはベースライン作成~検知をすべてタスクで完結させます。
よって、OAFIMかODFIMのどちらを使うかによって必要なポリシー設定やタスク設定が全く異なります
また2021/7/12現在、OAFIM・ODFIMともに検知のみ可能であり、変更や削除自体をブロックすることはできません
今回の記事ではOAFIM・ODFIMともにKSCで統合管理しているケースを紹介しますが、本機能を利用するにあたりKSCは必須ではありませんスタンドアロンのKESLでも本機能を利用することができます
OAFIM・ODFIMともに、領域や拡張子などによる監視除外設定も可能です。
OAFIM・ODFIMともに、任意の操作 (例えばファイルの作成や、特定ユーザによる編集) だけを監視したり除外することはできません

2. ファイル変更監視を利用できるライセンス
2021/7/12現在、ファイル変更監視機能を利用できるライセンスは以下に限られています。

  • Kaspersky Hybrid Cloud Security Enterprise CPU
  • Kaspersky Hybrid Cloud Security Enterprise サーバー


3. OAFIM実装手順 (KSCありの場合)
まず、OAFIMの実装手順を紹介いたします。
ここでは以下の要件があると仮定して手順を記載いたします。
【要件】

  • 現在、KSCで3台のRHEL 8.4 (サーバーA, B, C) を統合管理しています。
  • サーバーA,B,C で、/test01/、/test02/、/opt/kaspersky/kesl/ 配下のすべてのサブフォルダとファイルの変更を、リアルタイムで監視します。
  • サーバーA,B,C で、/test01/、/test02/ 配下に限っては、.jpg ファイルだけ監視対象外にします。

この場合の実装の流れは以下の通りです。
Step1: KESLのポリシーでシステム変更監視の監視領域と除外を設定し、本機能を有効にします。
Step2: (任意) 対象のLinux側でOAFIMが開始されたことを確認します。
Step3: (任意) 対象フォルダで意図する監視ができていることをテストします。

Step1: KESLのポリシーでシステム変更監視の監視領域と除外の設定をします。
まず、サーバーA,B,Cに適用されているKESLのポリシーでシステム変更監視の監視領域と除外の設定をします。
Webコンソールで[デバイス]>[ポリシーとプロファイル]を開き、対象のポリシー名をクリックします。

f:id:networld-blog-post:20210713111522p:plain

[アプリケーション設定]>[先進の脅威対策]>[システム変更監視]をクリックします。

f:id:networld-blog-post:20210713111537p:plain

[監視範囲を設定する]をクリックして監視領域を設定します。

f:id:networld-blog-post:20210713111547p:plain

デフォルトでKESLのインストールパスが設定されています。この領域の監視は必須ではないので、必要に応じて削除してもかまいません。(今回はこのまま残して進みます。)
[+追加]をクリックします。

f:id:networld-blog-post:20210713111601p:plain

スキャン範囲名を任意に指定します。
[スキャンタスクでこの範囲を使用する]にチェックを入れます。
パス欄に監視範囲のパスを指定します。
マスクを任意に指定します。なお、デフォルトでマスクは "*" が指定されていますが、この設定はサブフォルダを含めた全オブジェクトが監視対象となります
[OK]をクリックします。

f:id:networld-blog-post:20210713111613p:plain

同じ要領で/test02/も登録します。
全ての監視範囲を設定したら[OK]をクリックします。

f:id:networld-blog-post:20210713111644p:plain

続けて除外設定をします。
[監視からの除外を設定する]をクリックします。

f:id:networld-blog-post:20210713111656p:plain

[+追加]をクリックします。

f:id:networld-blog-post:20210713111707p:plain

今回の要件の場合、/test01/と/test02/配下の.jpgファイルを除外します。
除外範囲名を任意に指定します。
[スキャンタスクでこの範囲を使用する]のチェックを有効にします。
パス欄で、除外範囲のパスを入力します。
マスクで除外設定をします。今回の場合は*.jpgとなります。なお、マスクはデフォルトで "*" が入っていて、これは "パス欄で指定したパス配下をサブディレクトリを含めて全部除外する" の意なので、必要に応じて削除・編集してください
[OK]をクリックします。

f:id:networld-blog-post:20210713111721p:plain

同じ要領で除外設定を追加します。
すべて設定したら、[OK]をクリックします。

f:id:networld-blog-post:20210713111748p:plain

最後に[システム変更監視]を有効にし、[OK]をクリックします。

f:id:networld-blog-post:20210713111811p:plain

[保存]をクリックします。

f:id:networld-blog-post:20210713111821p:plain

これでポリシーの編集とシステム変更監視の有効化は完了です。

Step2: (任意) 対象のLinux側でOAFIMが開始されたことを確認します。
KESLのローカルコマンドでOAFIMが開始されていることを確認してみましょう。
対象のLinuxに管理者権限でサインインし、以下のコマンドを実行します。

# kesl-control --get-task-list

上の出力結果で、名前: System_Integrity_Monitoring の状態が 開始済み になっていればOKです。

f:id:networld-blog-post:20210713111908p:plain

また、以下のコマンドを実行すると、先ほどポリシーで設定したシステム変更変更監視の領域と除外設定が確認できます。

# kesl-control --get-settings System_Integrity_Monitoring

f:id:networld-blog-post:20210713111931p:plain


Step3: (任意) 対象フォルダで意図する監視ができていることをテストします。
設定した監視領域 /test02/ にファイル add02.html を追加してみます。

f:id:networld-blog-post:20210713111947p:plain

KSC側で検知された旨のイベントが発生しているか確認します。
Webコンソールで[監視とレポート]>[イベントの抽出]>[最近のイベント]をクリックします。

f:id:networld-blog-post:20210713112000p:plain

右上の検索ボックスで "add02.html" を検索すると、該当するイベントがフィルタされます。
今回の場合は正常に検知できていることが確認できました。

f:id:networld-blog-post:20210713112026p:plain


次に、除外した.jpgファイルを削除してもイベントが出ないことを確認します。
/test02/3561993_m-after.jpg を削除します。

f:id:networld-blog-post:20210713112038p:plain

前と同じ手順で、最近のイベントで "3561993_m-after.jpg" で検索します。
.jpgファイルの削除は除外されているため、イベントが出ていないことが確認できました。

f:id:networld-blog-post:20210713112048p:plain

以上で OAFIM実装手順 (KSCありの場合) は完了です。

4. ODFIM実装手順 (KSCありの場合)
この章ではODFIMを実装する手順を紹介します。
ここでは以下の要件があると仮定して実装の手順を紹介いたします。
【要件】

  • 現在、KSCで2台のRHEL 8.4 (サーバーA, B) を統合管理しています。
  • サーバーAのみで、/test01/、/test02/ 配下のすべてのサブフォルダとファイルの変更を、リアルタイムで監視します。
  • 監視は毎日1回、16:30 に実施します。
  • ベースラインはタスク作成後に手動で作成しておきます。

この場合の実装の流れは以下の通りです。
Step1: タスク "オンデマンドでのシステム変更監視" を新規作成します。
Step2: Step1で作成したタスクを実行してベースラインを作成します。
Step3: (任意) Linux側でベースラインがあることを確認します。
Step4: (任意) 対象フォルダで意図する監視ができていることをテストします。

Step1: タスク "オンデマンドでのシステム変更監視" を新規作成します。
まず、ベースライン作成 及び 検知のためのタスクを作成します。
Webコンソールの[デバイス]>[タスク]を開き、[+追加]をクリックします。

f:id:networld-blog-post:20210713112225p:plain

アプリケーションで [Kaspersky Endpoint Security 11.1.0 for Linux] を選択し、タスク種別で [オンデマンドでのシステム変更監視] を選択します。
タスク名は任意に指定します。
次に、対象デバイスの選択なのですが、今回はサーバーAでのみシステム変更監視をするため、[デバイスのアドレスを手動で指定するか、リストからアドレスをインポートする]を選択します。
[次へ]をクリックします。

f:id:networld-blog-post:20210713112238p:plain

[+デバイスの追加]をクリックします。

f:id:networld-blog-post:20210713112250p:plain

[ネットワークの管理サーバーによって検出されたデバイスを選択する] を選択し、ツリーを展開して対象サーバー (今回の場合はサーバーA) にチェックを入れ、[追加]をクリックします。

f:id:networld-blog-post:20210713112259p:plain

[次へ]をクリックします。

f:id:networld-blog-post:20210713112310p:plain

[タスクの作成が完了したらタスクの詳細を表示する] にチェックを入れ、[終了] をクリックします。

f:id:networld-blog-post:20210713112324p:plain

タスクの詳細画面が自動で表示されるので、[アプリケーション設定] タグを開き、[システム変更監視の設定]を開きます。

f:id:networld-blog-post:20210713112334p:plain

まず、基本設定をします。
以下の4つについて有効/無効を設定します。
・タスクを開始するたびにベースラインを再構築する
・監視でハッシュを使用する (SHA256)
・監視範囲にあるディレクトリを監視する
・タスクにアクセスした日時を監視する

各設定項目の詳細は以下のオンラインヘルプに詳細がありますのでご参照ください。

https://support.kaspersky.com/KES4Linux/11.1.0/ja-JP/194157.htm

今回は例としてハッシュの使用とディレクトリの監視を有効にしました。

f:id:networld-blog-post:20210713112435p:plain

次に、監視範囲を指定します。
[+追加]をクリックします。

f:id:networld-blog-post:20210713112454p:plain

スキャン範囲名を任意に指定します。
[スキャンタスクでこの範囲を使用する]にチェックを入れます。
パス欄に監視範囲のパスを指定します。
マスクを任意に指定します。なお、デフォルトでマスクは "*" が指定されていますが、この設定はサブフォルダを含めた全オブジェクトが監視対象となります。必要に応じて変更してください。
[OK]をクリックします。

f:id:networld-blog-post:20210713112542p:plain

続けて監視範囲を設定します。
今回の要件では除外が不要なので除外設定は割愛しますが、もし除外設定が必要な場合は、[除外範囲]で指定することができます。

f:id:networld-blog-post:20210713115417p:plain

今回はシステム変更監視を毎日16:30に実行する要件があるので、そのスケジューリングをします。
[スケジュール]タブを開き、要件を満たすスケジューリングを設定し、[保存]をクリックします。

f:id:networld-blog-post:20210713115535p:plain

以上でタスク "オンデマンドでのシステム変更監視" を新規作成は完了です。


Step2: Step1で作成したタスクを実行してベースラインを作成します。
先ほど作成したタスクにチェックを入れ、[開始]をクリックします。

f:id:networld-blog-post:20210713112614p:plain

[リストの更新]をクリックすると画面が更新できます。
[オンデマンドでのシステム変更監視]のステータスが "正常終了" になることを確認します。

f:id:networld-blog-post:20210713112628p:plain


Step3: (任意) Linux側でベースラインがあることを確認します。
ODFIMの場合、ベースラインはローカルの ”/var/opt/kaspersky/kesl/private/fim.db” に作成されます。
よってこのファイルが存在することと、その更新日時で、ベースラインが更新 (もしくは作成) されたことまでは確認ができます。
対象Linuxにサインインし、以下のコマンドを実行します。

$ ll /var/opt/kaspersky/kesl/private/fim.db

残念ながらこのファイルの中身を見ることができないので、具体的なベースラインの内容を確認することはできません。

f:id:networld-blog-post:20210713112709p:plain


Step4: (任意) 対象フォルダで意図する監視ができていることをテストします。
システム変更監視の対象になっているディレクトリやファイルに対し、変更を加えます。
ここではテストとして/test01/info01b.html の中身を少し変更しました。

変更したら、その変更が検知されてKSCのイベントとして発生しているかを確認します。
KSCのWebコンソールで[デバイス]>[タスク]>[<Step.1で作成したタスク名>]にチェックを入れ、[開始]をクリックします。

f:id:networld-blog-post:20210713115905p:plain

タスクが完了したら、[監視とレポート]>[イベントの抽出]>[最近のイベント]をクリックします。

f:id:networld-blog-post:20210713112846p:plain

画面右上の検索ボックスで "info01b.html" を検索すると、変更等に関するイベントが出力されていることが確認できました。
(今回は対象ファイルをviコマンドで編集したので、一時ファイル等の変更履歴も検知されています。)

f:id:networld-blog-post:20210713112859p:plain

以上でODFIM実装手順 (KSCありの場合)の手順は完了です。

5. 実装時のワンポイント
実際にKESLでシステム変更監視を実装する場合において、ポイントになりそうな事項を記載します。

Point1:
リアルタイムの監視(OAFIM) or 定期的な監視(ODFIM)のどちらが必要なのかを明確にしましょう。
要件的には大差ないように見えますが、先述の通り実装方法が異なります。

Point2:
OAFIM、ODFIMともにKSCは必須ではないです。
ローカルのコマンド "kesl-control" を用いることでこれらを有効化し設定することができます。

Point3:
短時間にシステム変更監視に関するイベントが大量発生すると、イベントの記録がオーバーフローする可能性があります
これについてはオンラインヘルプに詳細が載っていませんが、少なくとも私が検証した限りでは、以下の通り6時間で50件以上のイベントが発生するとオーバーフローし、それ以降しばらくは当該監視領域での変更に関するイベントが上がってこなくなります。

f:id:networld-blog-post:20210713113020p:plain


Point4:
KESL11.1では、OADIMやODFIMで検知したイベントは "システム変更監視の問題があります" というイベント名で発生しますが、通知設定やイベントの抽出条件では、当該イベント名が "システム変更監視で警告が発生しました" となっており、微妙に日本語表記が異なります。
これはおそらくKESL11.1 日本語版のプラグインの誤訳かと思われます。
もし、OAFIMやODFIMで検知したイベントをメール等で通知したい、もしくはイベントの抽出条件にしたい場合、イベント一覧に "システム変更監視の問題があります" がありませんが、代わりに "システム変更監視で警告が発生しました" を設定してください。
日本語表記上は差がありますが、内部的には"システム変更監視の問題があります"と"システム変更監視で警告が発生しました"はおなじイベントです。

実際にOAFIMやODFIMで検知した際に発生するイベント。

f:id:networld-blog-post:20210713113138p:plain

KESLのポリシー設定画面におけるイベント一覧。

f:id:networld-blog-post:20210713113201p:plain

以上です。

今回はKESLのシステム変更監視 (OAFIMとODFIM) の紹介と実装する手順を紹介いたしました。
Linuxサーバーのアンチウイルス製品の要件として「特定のファイルやフォルダーの監視ができること」がある場合は、ぜひ本製品とライセンスをご検討いただけますと幸いです。

この度は最後まで記事をご覧いただき誠にありがとうございました。
記載事項へのご指摘、ご不明点、ご質問等ございましたら、以下からご連絡いただければと存じます。

https://www.networld.co.jp/product/kaspersky/

それでは次回の記事でお会いしましょう!