Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

ファイル監視

sd monitorコマンドはファイルシステムのアクティビティのためにディレクトリを監視し、新しいまたは変更されたファイルをリアルタイムでスキャンします。これはマルウェアがディスクに到着した瞬間、実行される前に捕捉する主要な方法です。

使い方

bash
sd monitor [OPTIONS] [PATHS...]

パスが指定されていない場合、sd monitorは現在の作業ディレクトリを監視します。

オプション

フラグショートデフォルト説明
--recursive-rtrueディレクトリを再帰的に監視
--block-bfalseスキャン完了までファイル実行をブロック(Linuxのみ)
--daemon-dfalseバックグラウンドのデーモンプロセスとして実行
--pid-file指定したファイルにPIDを書き込む(--daemonを暗示)
--exclude-e除外するglobパターン(繰り返し可能)
--log-filestderrの代わりにファイルにログ出力を書き込む
--auto-quarantine-qfalse検出された脅威を自動的に隔離
--eventsすべて監視するイベントのカンマ区切りリスト
--jsonfalseイベントをJSON行として出力

プラットフォームメカニズム

PRX-SDは各プラットフォームで利用可能な最も有能なファイルシステムAPIを使用します:

プラットフォームAPI機能
Linuxfanotify(カーネル5.1以上)システム全体の監視、実行権限制御、ファイルディスクリプタパススルー
Linux(フォールバック)inotifyディレクトリごとの監視、ブロックサポートなし
macOSFSEvents低レイテンシの再帰的監視、履歴イベントリプレイ
WindowsReadDirectoryChangesW完了ポートによるディレクトリごとの非同期監視

TIP

Linuxでは、sd monitorはfanotifyを使用するためにCAP_SYS_ADMIN機能(またはroot)が必要です。利用できない場合は、警告とともにinotifyに自動的にフォールバックします。

監視されるイベント

以下のファイルシステムイベントがスキャンをトリガーします:

イベント説明プラットフォーム
Create新しいファイルが作成されるすべて
Modifyファイル内容が書き込まれるすべて
CloseWrite書き込み後にファイルが閉じられる(部分スキャンを回避)Linux
Deleteファイルが削除されるすべて
Renameファイルが名前変更または移動されるすべて
Openファイルが読み取り用に開かれるLinux(fanotify)
Executeファイルが実行されようとしているLinux(fanotify)

--eventsでスキャンをトリガーするイベントをフィルタリング:

bash
# 新しいファイルと変更のみスキャン
sd monitor --events Create,CloseWrite /home

ブロックモード

Linuxのfanotifyでは、--blockFAN_OPEN_EXEC_PERMモードを有効にします。このモードではPRX-SDが判定を返すまでカーネルがプロセス実行を一時停止します:

bash
sudo sd monitor --block /usr/local/bin /tmp

WARNING

ブロックモードは監視されたパス内のすべてのプログラム起動にレイテンシを追加します。/usr/libなどのシステム全体のパスではなく、/tmpやダウンロードフォルダーなどのリスクの高いディレクトリにのみ使用してください。

ブロックモードで脅威が検出された場合:

  1. ファイルのオープン/実行がカーネルによって拒否されます
  2. イベントがBLOCKED判定でログに記録されます
  3. --auto-quarantineが設定されている場合、ファイルは隔離ボールトに移動されます

デーモンモード

--daemonを使用してモニターをターミナルから切り離す:

bash
sd monitor --daemon --pid-file /var/run/sd-monitor.pid /home /tmp /var/www

SIGTERMを送信してデーモンを停止:

bash
kill $(cat /var/run/sd-monitor.pid)

またはデーモンマネージャーを通じて実行している場合はsd daemon stopを使用します。詳細についてはデーモンを参照してください。

bash
# homeとtmpディレクトリを監視
sd monitor /home /tmp

# 自動隔離で監視
sd monitor --auto-quarantine /home/downloads

# Linuxでの機密ディレクトリのブロックモード
sudo sd monitor --block --auto-quarantine /tmp

# ビルドアーティファクトとnode_modulesを除外
sd monitor -e "*.o" -e "node_modules/**" /home/dev/projects

# JSON ロギングでデーモンとして実行
sd monitor --daemon --json --log-file /var/log/sd-monitor.json /home

# 特定のイベントのみで監視
sd monitor --events Create,Modify,Rename /var/www

JSON出力

--jsonが有効な場合、各イベントは単一のJSON行を生成します:

json
{
  "timestamp": "2026-03-21T10:15:32.456Z",
  "event": "CloseWrite",
  "path": "/tmp/payload.exe",
  "verdict": "malicious",
  "threat": "Win.Trojan.Agent-123456",
  "action": "quarantined",
  "scan_ms": 12
}

次のステップ

Released under the Apache-2.0 License.