Мониторинг файлов
Команда sd monitor отслеживает каталоги на предмет активности файловой системы и сканирует новые или изменённые файлы в реальном времени. Это основной способ обнаружения вредоносных программ в момент их появления на диске, до того как они успеют выполниться.
Использование
sd monitor [OPTIONS] [PATHS...]Если пути не указаны, sd monitor отслеживает текущий рабочий каталог.
Параметры
| Флаг | Сокр. | По умолчанию | Описание |
|---|---|---|---|
--recursive | -r | true | Рекурсивное отслеживание каталогов |
--block | -b | false | Блокировать выполнение файлов до завершения сканирования (только Linux) |
--daemon | -d | false | Запустить в фоне как демон-процесс |
--pid-file | Записать PID в указанный файл (подразумевает --daemon) | ||
--exclude | -e | Glob-паттерны для исключения (повторяемый) | |
--log-file | Записывать вывод журнала в файл вместо stderr | ||
--auto-quarantine | -q | false | Автоматически помещать обнаруженные угрозы в карантин |
--events | все | Список событий для отслеживания через запятую | |
--json | false | Выводить события в виде JSON-строк |
Механизмы платформ
PRX-SD использует наиболее функциональный API файловой системы, доступный на каждой платформе:
| Платформа | API | Возможности |
|---|---|---|
| Linux | fanotify (ядро 5.1+) | Системный мониторинг, управление разрешениями выполнения, передача файловых дескрипторов |
| Linux (резервный) | inotify | Наблюдение за каталогами, без поддержки блокировки |
| macOS | FSEvents | Мониторинг рекурсии с низкой задержкой, воспроизведение исторических событий |
| Windows | ReadDirectoryChangesW | Асинхронный мониторинг каталогов с портами завершения |
TIP
На Linux sd monitor требует возможности CAP_SYS_ADMIN (или root) для использования fanotify. При недоступности автоматически переключается на inotify с предупреждением.
Отслеживаемые события
Следующие события файловой системы запускают сканирование:
| Событие | Описание | Платформы |
|---|---|---|
Create | Создан новый файл | Все |
Modify | Записано содержимое файла | Все |
CloseWrite | Файл закрыт после записи (избегает частичных сканирований) | Linux |
Delete | Файл удалён | Все |
Rename | Файл переименован или перемещён | Все |
Open | Файл открыт для чтения | Linux (fanotify) |
Execute | Файл собирается выполниться | Linux (fanotify) |
Фильтрация событий, запускающих сканирование, с помощью --events:
# Сканировать только новые файлы и изменения
sd monitor --events Create,CloseWrite /homeРежим блокировки
На Linux с fanotify --block включает режим FAN_OPEN_EXEC_PERM. В этом режиме ядро приостанавливает выполнение процесса до возврата вердикта PRX-SD:
sudo sd monitor --block /usr/local/bin /tmpWARNING
Режим блокировки добавляет задержку при каждом запуске программ в отслеживаемых путях. Используйте его только в каталогах высокого риска, таких как /tmp или папки загрузок, а не в системных путях, таких как /usr или /lib.
При обнаружении угрозы в режиме блокировки:
- Открытие/выполнение файла запрещается ядром
- Событие записывается с вердиктом
BLOCKED - Если установлен
--auto-quarantine, файл перемещается в хранилище карантина
Режим демона
Используйте --daemon для отсоединения монитора от терминала:
sd monitor --daemon --pid-file /var/run/sd-monitor.pid /home /tmp /var/wwwОстановите демон, отправив SIGTERM:
kill $(cat /var/run/sd-monitor.pid)Или используйте sd daemon stop, если работаете через менеджер демона. Подробнее см. в Демон.
Примеры
# Отслеживать каталоги 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-строку:
{
"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
}Следующие шаги
- Демон — запуск мониторинга как управляемого фонового сервиса
- Защита от программ-вымогателей — специализированное поведенческое обнаружение
- Управление карантином — управление файлами в карантине
- Реагирование на угрозы — настройка политик автоматического реагирования