Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Мониторинг файлов

Команда sd monitor отслеживает каталоги на предмет активности файловой системы и сканирует новые или изменённые файлы в реальном времени. Это основной способ обнаружения вредоносных программ в момент их появления на диске, до того как они успеют выполниться.

Использование

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

Если пути не указаны, sd monitor отслеживает текущий рабочий каталог.

Параметры

ФлагСокр.По умолчаниюОписание
--recursive-rtrueРекурсивное отслеживание каталогов
--block-bfalseБлокировать выполнение файлов до завершения сканирования (только Linux)
--daemon-dfalseЗапустить в фоне как демон-процесс
--pid-fileЗаписать PID в указанный файл (подразумевает --daemon)
--exclude-eGlob-паттерны для исключения (повторяемый)
--log-fileЗаписывать вывод журнала в файл вместо stderr
--auto-quarantine-qfalseАвтоматически помещать обнаруженные угрозы в карантин
--eventsвсеСписок событий для отслеживания через запятую
--jsonfalseВыводить события в виде JSON-строк

Механизмы платформ

PRX-SD использует наиболее функциональный API файловой системы, доступный на каждой платформе:

ПлатформаAPIВозможности
Linuxfanotify (ядро 5.1+)Системный мониторинг, управление разрешениями выполнения, передача файловых дескрипторов
Linux (резервный)inotifyНаблюдение за каталогами, без поддержки блокировки
macOSFSEventsМониторинг рекурсии с низкой задержкой, воспроизведение исторических событий
WindowsReadDirectoryChangesWАсинхронный мониторинг каталогов с портами завершения

TIP

На Linux sd monitor требует возможности CAP_SYS_ADMIN (или root) для использования fanotify. При недоступности автоматически переключается на inotify с предупреждением.

Отслеживаемые события

Следующие события файловой системы запускают сканирование:

СобытиеОписаниеПлатформы
CreateСоздан новый файлВсе
ModifyЗаписано содержимое файлаВсе
CloseWriteФайл закрыт после записи (избегает частичных сканирований)Linux
DeleteФайл удалёнВсе
RenameФайл переименован или перемещёнВсе
OpenФайл открыт для чтенияLinux (fanotify)
ExecuteФайл собирается выполнитьсяLinux (fanotify)

Фильтрация событий, запускающих сканирование, с помощью --events:

bash
# Сканировать только новые файлы и изменения
sd monitor --events Create,CloseWrite /home

Режим блокировки

На Linux с fanotify --block включает режим FAN_OPEN_EXEC_PERM. В этом режиме ядро приостанавливает выполнение процесса до возврата вердикта PRX-SD:

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

WARNING

Режим блокировки добавляет задержку при каждом запуске программ в отслеживаемых путях. Используйте его только в каталогах высокого риска, таких как /tmp или папки загрузок, а не в системных путях, таких как /usr или /lib.

При обнаружении угрозы в режиме блокировки:

  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.