Устранение неполадок
На этой странице рассмотрены наиболее распространённые проблемы при работе с PRX-SD, их причины и решения.
Ошибка обновления базы данных сигнатур
Симптомы: sd update завершается с ошибкой сети, таймаутом или несовпадением SHA-256.
Возможные причины:
- Нет подключения к интернету или брандмауэр блокирует исходящий HTTPS
- Сервер обновлений временно недоступен
- Прокси или корпоративный брандмауэр изменяет ответ
Решения:
- Проверьте подключение к серверу обновлений:
curl -fsSL https://api.github.com/repos/openprx/prx-sd-signatures/commits?per_page=1- Используйте скрипт офлайн-обновления при сетевых ограничениях:
# На машине с доступом в интернет
./tools/update-signatures.sh
# Скопировать каталог сигнатур на целевую машину
scp -r ~/.prx-sd/signatures user@target:~/.prx-sd/- Принудительно перезагрузите для очистки повреждённого кеша:
sd update --force- Используйте пользовательский сервер обновлений если вы используете частное зеркало:
sd config set update_server_url "https://internal-mirror.example.com/prx-sd/v1"
sd update- Проверьте несовпадение SHA-256 — обычно это означает, что загрузка была повреждена при передаче. Попробуйте ещё раз или загрузите вручную:
sd update --forceTIP
Запустите sd update --check-only для проверки наличия обновлений без загрузки.
Низкая скорость сканирования
Симптомы: Сканирование каталога занимает значительно больше времени, чем ожидается.
Возможные причины:
- Сканирование файловых систем, подключённых по сети (NFS, CIFS, SSHFS)
- Правила YARA компилируются при каждом сканировании (нет кешированной компиляции)
- Слишком много потоков конкурируют за ввод-вывод на вращающихся дисках
- Рекурсия в архивах с большими вложенными архивами
Решения:
- Увеличьте количество потоков для хранилища на базе SSD:
sd config set scan.threads 16- Уменьшите количество потоков для вращающихся дисков (с ограниченным ввод-выводом):
sd config set scan.threads 2- Исключите медленные или неважные пути:
sd config set scan.exclude_paths '["/mnt/nfs", "/proc", "/sys", "/dev", "*.iso"]'- Отключите сканирование архивов если не требуется:
sd config set scan.scan_archives false- Уменьшите глубину архивов для предотвращения глубоко вложенных архивов:
sd config set scan.max_archive_depth 1- Используйте флаг
--excludeдля разовых сканирований:
sd scan /home --exclude "*.iso" --exclude "node_modules"- Включите debug-логирование для выявления узких мест:
sd --log-level debug scan /path/to/dir 2>&1 | grep -i "slow\|timeout\|skip"Ошибки прав доступа fanotify
Симптомы: sd monitor --block завершается с ошибкой «Permission denied» или «Operation not permitted».
Возможные причины:
- Запуск не от имени root
- Ядро Linux не имеет включённого
CONFIG_FANOTIFY_ACCESS_PERMISSIONS - AppArmor или SELinux блокирует доступ к fanotify
Решения:
- Запустите от имени root:
sudo sd monitor /home /tmp --block- Проверьте конфигурацию ядра:
zgrep FANOTIFY /proc/config.gz
# Должно показать: CONFIG_FANOTIFY=y и CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y- Используйте режим без блокировки как запасной вариант (всё ещё обнаруживает угрозы, но не предотвращает доступ к файлам):
sd monitor /home /tmpWARNING
Режим блокировки доступен только в Linux с поддержкой fanotify. В macOS (FSEvents) и Windows (ReadDirectoryChangesW) мониторинг в реальном времени работает только в режиме обнаружения.
- Проверьте SELinux/AppArmor:
# SELinux: проверить отказы
ausearch -m AVC -ts recent | grep prx-sd
# AppArmor: проверить отказы
dmesg | grep apparmor | grep prx-sdЛожное срабатывание (легитимный файл определён как угроза)
Симптомы: Заведомо безопасный файл помечается как Подозрительный или Вредоносный.
Решения:
- Проверьте, что вызвало обнаружение:
sd scan /path/to/file --jsonПосмотрите на поля detection_type и threat_name:
HashMatch— хеш файла совпадает с известным хешем вредоносного ПО (маловероятное ложное срабатывание)YaraRule— правило YARA совпало с паттернами в файлеHeuristic— эвристический движок оценил файл выше порога
- Для ложных срабатываний эвристики повысьте порог:
# По умолчанию 60; повысьте до 70 для меньшего числа ложных срабатываний
sd config set scan.heuristic_threshold 70- Исключите файл или каталог из сканирования:
sd config set scan.exclude_paths '["/path/to/safe-file", "/opt/known-good/"]'Для ложных срабатываний YARA можно исключить конкретные правила, удалив или закомментировав их в каталоге
~/.prx-sd/yara/.Белый список через хеш — добавьте SHA-256 файла в локальный список разрешённых (функция в будущем). В качестве обходного решения исключите файл по пути.
TIP
Если вы считаете, что обнаружение является подлинным ложным срабатыванием, пожалуйста, сообщите об этом на github.com/openprx/prx-sd/issues с хешем файла (не самим файлом) и названием правила.
Демон не может запуститься
Симптомы: sd daemon немедленно завершается или sd status показывает «stopped».
Возможные причины:
- Другой экземпляр уже запущен (существует файл PID)
- Каталог данных недоступен или повреждён
- База данных сигнатур отсутствует
Решения:
- Проверьте наличие устаревшего файла PID:
cat ~/.prx-sd/prx-sd.pid
# Если указанный PID не запущен, удалите файл
rm ~/.prx-sd/prx-sd.pid- Проверьте статус демона:
sd status- Запустите на переднем плане с debug-логированием для просмотра ошибок запуска:
sd --log-level debug daemon /home /tmp- Убедитесь, что сигнатуры существуют:
sd info
# Если hash_count равен 0, выполните:
sd update- Проверьте права доступа к каталогам:
ls -la ~/.prx-sd/
# Все каталоги должны принадлежать вашему пользователю и быть доступны для записи- Повторно инициализируйте если каталог данных повреждён:
# Создать резервную копию существующих данных
mv ~/.prx-sd ~/.prx-sd.bak
# Повторно запустить любую команду для инициализации первого запуска
sd info
# Повторно загрузить сигнатуры
sd updateНастройка уровня журналирования
Проблема: Вам нужна более подробная диагностическая информация для отладки проблемы.
PRX-SD поддерживает пять уровней журналирования, от наиболее к наименее подробному:
| Уровень | Описание |
|---|---|
trace | Всё, включая детали сопоставления YARA для каждого файла |
debug | Подробные операции движка, загрузка плагинов, поиск хешей |
info | Прогресс сканирования, обновления сигнатур, регистрация плагинов |
warn | Предупреждения и не критические ошибки (по умолчанию) |
error | Только критические ошибки |
# Максимальная детализация
sd --log-level trace scan /tmp
# Debug-уровень для устранения неполадок
sd --log-level debug monitor /home
# Перенаправить журналы в файл для анализа
sd --log-level debug scan /home 2> /tmp/prx-sd-debug.logTIP
Флаг --log-level является глобальным и должен указываться перед подкомандой:
# Правильно
sd --log-level debug scan /tmp
# Неправильно (флаг после подкоманды)
sd scan /tmp --log-level debugВысокое использование памяти
Симптомы: Процесс sd потребляет больше памяти, чем ожидается, особенно при сканировании больших каталогов.
Возможные причины:
- Сканирование очень большого числа файлов со многими потоками
- Правила YARA компилируются в память (38 800+ правил занимают значительную память)
- Сканирование архивов распаковывает большие сжатые файлы в память
- WASM-плагины с высокими лимитами
max_memory_mb
Решения:
- Уменьшите количество потоков (каждый поток загружает собственный YARA-контекст):
sd config set scan.threads 2- Ограничьте максимальный размер файла для пропуска очень больших файлов:
# Ограничить до 50 МиБ
sd config set scan.max_file_size 52428800- Отключите сканирование архивов для систем с ограниченной памятью:
sd config set scan.scan_archives false- Уменьшите глубину архивов:
sd config set scan.max_archive_depth 1Проверьте лимиты памяти WASM-плагинов — просмотрите
~/.prx-sd/plugins/*/plugin.jsonна наличие плагинов с высокими значениямиmax_memory_mbи уменьшите их.Мониторинг памяти во время сканирований:
# В другом терминале
watch -n 1 'ps aux | grep sd | grep -v grep'- Для демона следите за использованием памяти со временем:
sd status
# Показывает PID; используйте top/htop для отслеживания памятиДругие распространённые проблемы
Предупреждение «No YARA rules found»
Каталог правил YARA пуст. Повторно запустите начальную настройку или загрузите правила:
sd update
# Или вручную инициируйте настройку, удалив каталог yara:
rm -rf ~/.prx-sd/yara
sd info # запускает начальную настройку со встроенными правиламиОшибка «Failed to open signature database»
База данных сигнатур LMDB может быть повреждена:
rm -rf ~/.prx-sd/signatures
sd updateAdblock: «insufficient privileges»
Команды включения/отключения adblock изменяют системный файл hosts и требуют права root:
sudo sd adblock enable
sudo sd adblock disableСканирование пропускает файлы с ошибкой «timeout»
Таймауты отдельных файлов по умолчанию составляют 30 секунд. Увеличьте для сложных файлов:
sd config set scan.timeout_per_file_ms 60000Получение помощи
Если ни одно из приведённых выше решений не устраняет вашу проблему:
- Проверьте существующие issues: github.com/openprx/prx-sd/issues
- Создайте новый issue с:
- Версией PRX-SD (
sd info) - Операционной системой и версией ядра
- Выводом debug-журнала (
sd --log-level debug ...) - Шагами для воспроизведения
- Версией PRX-SD (
Следующие шаги
- Просмотрите Справочник конфигурации для тонкой настройки поведения движка
- Изучите Движок обнаружения, чтобы понять как идентифицируются угрозы
- Настройте Оповещения для проактивного уведомления о проблемах