Установка и использование osquery на Debian 10

- osquery — бесплатный инструмент для выполнения SQL-подобных запросов к состоянию ОС, полезен для мониторинга и расследований.
- В статье описана установка репозитория на Debian 10, запуск демона osqueryd и интерактивной оболочки osqueryi, а также набор практических запросов.
- В конце — чек-листы, сниппеты и рекомендации по развёртыванию в продакшн.
Требования
- Сервер с Debian 10.
- Доступ root или привилегии sudo.
Начало работы
Перед установкой обновите пакеты системы:
apt-get update -y
apt-get upgrade -yПосле обновления рекомендуется перезагрузить систему, чтобы применить обновления ядра и сервисов.
Установка osquery
По умолчанию osquery отсутствует в стандартном репозитории Debian 10, поэтому добавим официальный репозиторий.
Сначала импортируйте GPG-ключ:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80BЗатем установите helper и добавьте репозиторий:
apt-get install software-properties-common -y
add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'Обновите индекс пакетов и установите osquery:
apt-get update -y
apt-get install osquery -yЗапустите демон osqueryd и проверьте статус:
osqueryctl start osqueryd
osqueryctl status osquerydОжидаемый пример вывода службы systemd (пример):
? osqueryd.service - The osquery Daemon
Loaded: loaded (/lib/systemd/system/osqueryd.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2020-04-19 15:21:57 UTC; 6s ago
Process: 25333 ExecStartPre=/bin/sh -c if [ ! -f $CONFIG_FILE ]; then echo {} > $CONFIG_FILE; fi (code=exited, status=0/SUCCESS)
Process: 25334 ExecStartPre=/bin/sh -c if [ ! -f $FLAG_FILE ]; then touch $FLAG_FILE; fi (code=exited, status=0/SUCCESS)
Process: 25336 ExecStartPre=/bin/sh -c if [ -f $LOCAL_PIDFILE ]; then mv $LOCAL_PIDFILE $PIDFILE; fi (code=exited, status=0/SUCCESS)
Main PID: 25337 (osqueryd)
Tasks: 13 (limit: 4701)
Memory: 6.4M
CGroup: /system.slice/osqueryd.service
??25337 /usr/bin/osqueryd --flagfile /etc/osquery/osquery.flags --config_path /etc/osquery/osquery.conf
??25339 /usr/bin/osqueryd
Apr 19 15:21:57 debian10 systemd[1]: Starting The osquery Daemon...
Apr 19 15:21:57 debian10 systemd[1]: Started The osquery Daemon.
Apr 19 15:21:57 debian10 osqueryd[25337]: osqueryd started [version=4.2.0]
Apr 19 15:21:57 debian10 osqueryd[25337]: I0419 15:21:57.261158 25339 events.cpp:863] Event publisher not enabled: auditeventpublisher: Publish
Apr 19 15:21:57 debian10 osqueryd[25337]: I0419 15:21:57.261485 25339 events.cpp:863] Event publisher not enabled: syslog: Publisher disabled vВажно: apt-key официально помечен как устаревший в новых версиях Debian. При необходимости используйте безопасное добавление ключей в /etc/apt/trusted.gpg.d или подписанные релизы.
Компоненты osquery
- osqueryi — интерактивная оболочка, полезна для ad-hoc запросов и исследования системы.
- osqueryd — демон для постоянного мониторинга и планирования запросов.
- osqueryctl — вспомогательный скрипт для тестирования конфигураций и управления демоном.
Подключитесь к оболочке:
osqueryiОжидаемый приветственный текст:
Using a virtual database. Need help, type '.help'Чтобы посмотреть доступные команды, выполните:
osquery> .help(вывод .help содержит список команд и режимов отображения)
Доступные таблицы и базовые запросы
Список всех таблиц:
osquery> .tableПримеры полезных запросов для быстрой диагностики
- Информация о системе:
osquery> select hostname,cpu_physical_cores,physical_memory from system_info;- Конфигурация ssh клиента:
osquery> select * from ssh_configs;- Все пользователи:
osquery> SELECT * FROM users;- Текущие вошедшие пользователи:
osquery> select * from logged_in_users where type = 'user';- Память:
osquery> select * from memory_info;- Средняя загрузка:
osquery> select * from load_average;- Первые 5 пакетов (deb):
osquery> select * from deb_packages top limit 5;- Прослушиваемые порты и процессы:
osquery> SELECT DISTINCT processes.name, listening_ports.port, processes.pid FROM listening_ports JOIN processes USING (pid) WHERE listening_ports.address = '0.0.0.0';- История логинов:
osquery> select * from last;- Cron задания:
osquery> select command, path from crontab ;- Все прослушиваемые порты:
osquery> select * from listening_ports;- Топ 5 активных процессов по количеству PID:
osquery> select count(pid) as total, name from processes group by name order by total desc limit 5;Мониторинг и использование на практике
osquery удобно использовать для:
- Быстрой инвентаризации хоста.
- Поиска необычных процессов и сетевых соединений.
- Автоматического сбора состояния для SIEM и EDR.
Рекомендации по базовой конфигурации:
- Составьте файл конфигурации osquery.conf с набором регулярных запросов.
- Настройте log rotation и безопасную передачу логов на центральный сервер.
- Запустите osqueryd под системным пользователем и ограничьте доступ к конфигам.
Когда osquery может не подойти
- osquery не заменяет сетевой снэпшот-каптюр и не анализирует пакеты на уровне pcap.
- Для поведенческого EDR и детальной трассировки приложений потребуется дополнительное ПО.
- Некоторые виртуальные таблицы возвращают данные в контексте текущего пользователя, будьте внимательны при агрегировании.
Быстрый набор запросов — cheat sheet
Часто используемые запросы для расследования:
- Список SUID/SGID файлов:
osquery> select * from file where mode & 04000 != 0 or mode & 02000 != 0;- Исполняемые файлы в домашней директории пользователя:
osquery> select path from file where directory = '/home' and (mode & 0111) != 0 limit 50;- Автозапуск служб и юниты systemd:
osquery> select name, runlevels from initd where runlevels != '';
osquery> select name, path, enabled from systemd_units where type = 'service';- Недавно изменённые файлы в /etc:
osquery> select path, atime, mtime from file where directory = '/etc' order by mtime desc limit 50;Развёртывание на нескольких хостах — мини-методология
- Разработайте набор базовых запросов и формат логов.
- Протестируйте конфигурацию на тестовой машине в osqueryi и osqueryd.
- Внедрите доставку логов (syslog, fluentd, beats, HTTPS) в центральный репозиторий.
- Настройте шаблоны оповещений для критичных показателей.
- Периодически ревью конфигураций и обновлений osquery.
Ролевые чек-листы
Администратор:
- Установить пакет и импортировать ключ.
- Запустить osqueryd и убедиться в логировании.
- Обновить конфигурацию и протестировать паузы.
Инженер безопасности:
- Составить набор запланированных запросов для IOC.
- Настроить передачу логов в SIEM.
- Проверить доступность и валидность данных для расследований.
DevOps:
- Интегрировать osquery с системой управления конфигурациями.
- Автоматизировать развёртывание и обновления.
- Контролировать SLI/SLO на основе доставленных логов.
Модель принятия решений
flowchart TD
A[Нужен интерактивный аудит?] -->|Да| B[osqueryi]
A -->|Нет, нужен постоянный сбор| C[osqueryd]
C --> D{Нужна централизованная аналитика?}
D -->|Да| E[Отправлять логи в SIEM/ELK]
D -->|Нет| F[Локальные журналы и alerting]1-строчная глоссарий
- osqueryi — интерактивная SQL-оболочка для ad-hoc запросов.
- osqueryd — демон для регулярных сборов и мониторинга.
- table — виртуальная таблица, представляющая набор системных данных.
Критерии приёмки
- osqueryd запущен и активен на хосте.
- Логи доставляются в центральное хранилище или остаются доступны локально.
- Набор базовых запросов успешно выполняется и возвращает ожидаемые столбцы.
Заключение
В этой инструкции рассмотрена установка osquery на Debian 10, запуск демона и примеры полезных запросов для мониторинга и расследований. osquery даёт быстрый программный доступ к множеству системных артефактов, что делает его удобным инструментом для администраторов и специалистов по безопасности.
Важно: osquery — часть экосистемы мониторинга, и для глубокого анализа событий рекомендуется комбинировать его с SIEM/EDR и инструментами сетевого анализа.
Короткая памятка: начните с osqueryi для изучения таблиц, затем переведите набор запросов в конфигурацию osqueryd и настройте централизованную доставку логов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента