osquery — это открытое ПО для мониторинга, запросов и аналитики операционной системы. Проект был создан Facebook. Osquery представляет ОС как высокопроизводительную реляционную базу данных. Все элементы системы (процессы, пользователи, пакеты, монтирования, сетевые интерфейсы и т. д.) доступны в виде таблиц. Запросы формулируются на знакомом SQL.
Краткое определение: osquery — агент, который экспортирует данные ОС в виде SQL‑таблиц для интерактивного исследования и автоматического мониторинга.
Факты: платформа — мультиродовая. Osquery поддерживается на Linux, Windows, macOS и FreeBSD. В этой статье сосредоточимся на Ubuntu 18.04 и CentOS 7.
Важно: для установки требуются права root.
Что вы получите из руководства
Пошаговая установка osquery на Ubuntu 18.04 и CentOS 7.
Быстрый старт с osqueryi — интерактивной консолью.
Набор практических SQL‑запросов для мониторинга оборудования, ПО, сетей и безопасности.
Чек‑листы для администратора, DevOps и аналитика безопасности.
SOP (плейбук) установки и проверки работоспособности.
Важно: после установки пакет osquery обычно ставит системные юниты. На некоторых дистрибутивах osqueryd запускается как сервис; проверьте systemctl status osqueryd.
Шаг 2 — Быстрая работа в osqueryi (интерактивный режим)
osquery поставляется с двумя основными интерфейсами:
osqueryi — интерактивная консоль для ad‑hoc запросов.
osqueryd — демон для постоянного мониторинга и логирования.
osqueryi похож на mysql/psql: он предназначен для быстрой проверки данных и отладки.
Запустите консоль:
osqueryi
Полезные команды внутри osqueryi:
.help — показать список встроенных команд.
.show — показать текущие конфигурации и состояние.
.mode csv
.mode list
.mode column
.mode line
.mode pretty
Примечание: режим line удобен для быстрого парсинга внешними инструментами; pretty — для чтения человеком.
Шаг 3 — Базовый мониторинг Linux с помощью SQL‑запросов
Ниже собраны практические запросы, которые помогают получить профиль системы, состояние пакетов, загрузку, сетевые интерфейсы, процессы и параметры безопасности.
Получение информации о системе
Показать все доступные данные о системе:
SELECT * FROM system_info;
Выбрать ключевые поля:
SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;
Версия ОС
SELECT * FROM os_version;
Версия ядра и модули
Показать сведения о ядре:
SELECT * FROM kernel_info;
Показать загруженные модули (ограничение для быстрого вывода):
SELECT * FROM kernel_modules LIMIT 5;
Репозитории и пакеты
Osquery имеет разные таблицы для Ubuntu и CentOS.
Ubuntu: apt_sources, deb_packages.
CentOS: yum_sources, rpm_packages.
Примеры для Ubuntu:
SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;
SELECT name, version FROM deb_packages ORDER BY name;
SELECT name, version FROM deb_packages WHERE name='nginx';
Примеры для CentOS:
SELECT * FROM yum_sources;
SELECT name, baseurl, enabled FROM yum_sources WHERE enabled=1;
SELECT name, version FROM rpm_packages ORDER BY name;
SELECT name, version FROM rpm_packages WHERE name='firewalld';
Монтирования и файловые системы
SELECT * FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type='ext4';
Память
SELECT * FROM memory_info;
Сетевые интерфейсы
Адреса интерфейсов:
SELECT * FROM interface_addresses;
Детальная статистика интерфейсов:
SELECT * FROM interface_details;
SELECT interface, mac, ipackets, opackets, ibytes, obytes FROM interface_details;
SELECT * FROM last;
SELECT username, time, host FROM last WHERE type=7;
Текущие авторизованные пользователи:
SELECT * FROM logged_in_users;
Правила iptables
SELECT * FROM iptables;
SELECT chain, policy, src_ip, dst_ip FROM iptables WHERE chain='POSTROUTING' ORDER BY src_ip;
Процессы
Все процессы:
SELECT * FROM processes;
Выборка ключевых полей:
SELECT pid, name, path, cmdline FROM processes;
Cron‑задания
SELECT * FROM crontab;
SUID бинарники
SUID — это бит в правах доступа, который позволяет исполняемому файлу запускаться с правами владельца файла. Такие файлы представляют потенциальную угрозу безопасности.
SELECT * FROM suid_bin;
SELECT * FROM suid_bin WHERE username='root' AND groupname='nobody' ORDER BY path;
Cheat sheet: часто используемые запросы (сводный набор)
Цель
Запрос
Проверить hostname и память
SELECT hostname, physical_memory FROM system_info;
Проверить активные пакеты nginx
SELECT name, version FROM deb_packages WHERE name=’nginx’;
Найти процессы с большой командной строкой
SELECT pid, name, cmdline FROM processes WHERE LENGTH(cmdline) > 100;
Список подключённых интерфейсов
SELECT interface, ipaddress FROM interface_addresses;
Загруженные ядро модули
SELECT name, size FROM kernel_modules ORDER BY name;
Текущие авторизованные пользователи
SELECT * FROM logged_in_users;
SOP: плейбук установки и проверки (краткий)
Подготовка: убедитесь в подключении к интернету и наличии root‑прав.
Добавление GPG‑ключа и репозитория (см. шаг 1).
Установка osquery и проверка статуса пакета.
Запуск osqueryi и выполнение .tables и .schema для ознакомления со структурами.
Выполнение контрольных запросов из Cheat sheet.
По результатам проверок сформировать baseline и настроить osqueryd с конфигурационными файлами для постоянного мониторинга.
Критерии приёмки
osquery установлен и версия пакета отображается в менеджере пакетов.
osqueryi запускается без ошибок.
Минимальный набор запросов возвращает ожидаемые данные (system_info, os_version, processes).
Чек‑листы по ролям
Администратор систем:
Установить пакет и проверить systemctl status osqueryd.
Настроить ротацию логов и права доступа к файлам конфигурации.
DevOps/Инженер SRE:
Интегрировать osqueryd с центральной системой логирования (ELK/Graylog/Fluentd).
Настроить правила для оповещений по критическим изменениям (новые пакеты, удаление пользователей).
Внедрить шаблоны конфигурации для развертывания на кластере.
Аналитик безопасности (SOC):
Создать регулярные запросы на обнаружение SUID, подозрительных процессов, изменений в crontab.
Сравнить текущие результаты с базовой линией и обнаруживать отклонения.
Настроить экспорт данных в SIEM.
Методология быстрых проверок (mini‑methodology)
Составьте baseline: выполните набор запросов на чистой системе.
Автоматизируйте сбор: настроите osqueryd для периодического снятия снимков.
Сравнивайте изменения: используйте diff по снимкам или правила для срабатывания оповещений.
Реагируйте: откатывайте изменения или инициируйте инцидент‑процедуру при выявлении подозрительных отклонений.
Частые ошибки и когда это не работает
Если система не имеет доступа к repo, установка не завершится.
Если SELinux жестко запрещает новые бинарники, osquery может неправильно функционировать; проверьте логи audit.
На очень старых или минимальных системах могут отсутствовать некоторые таблицы — это зависит от платформенных API.
Устранение неполадок (короткий набор шагов)
Проверка версии и статуса: sudo systemctl status osqueryd или dpkg -l | grep osquery / rpm -qa | grep osquery.
Запуск osqueryi вручную для локальной диагностики.
Просмотр системных логов: journalctl -u osqueryd.
Проверка разрешений файлов конфигурации и ключей.
Краткий глоссарий (1 строка каждый)
osqueryi — интерактивный консольный клиент для выполнения SQL‑запросов к таблицам ОС.
osqueryd — демон для фонового сбора событий и отправки логов.
Таблица — представление сущностей ОС (например, processes, users) в виде SQL‑таблицы.
SUID — специальный бит прав, позволяющий исполняемому файлу работать с правами владельца.
Заключение и рекомендации
Osquery даёт гибкий и мощный способ исследовать состояние операционной системы с помощью привычных SQL‑запросов. Для продакшн‑использования настройте osqueryd, интегрируйте его с системами логирования и создайте набор правил для обнаружения аномалий. Начните с базовых запросов из Cheat sheet и постепенно расширяйте профиль мониторинга под задачи вашей организации.