Превращает операционную систему в реляционную базу данных: любой аспект состояния машины (процессы, сетевые соединения, установленные пакеты, автозагрузка) запрашивается обычным SQL. Разработан в Meta, используется тысячами компаний для мониторинга парка машин и хантинга угроз в реальном времени.
# Debian/Ubuntu: export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main' sudo apt update && sudo apt install osquery osqueryi "SELECT * FROM processes WHERE name = 'sshd';"

osquery — это работающий на основе SQL инструментарий для инструментации, мониторинга и аналитики операционных систем.
Доступен для Linux, macOS и Windows.
osquery представляет операционную систему как высокопроизводительную реляционную базу данных. Это позволяет вам писать запросы на SQL для исследования данных операционной системы. В osquery SQL-таблицы представляют абстрактные концепции, такие как запущенные процессы, загруженные модули ядра, открытые сетевые соединения, плагины браузеров, аппаратные события или хеши файлов.
SQL-таблицы реализуются через простой API плагинов и расширений. Уже существует множество таблиц, и создаются новые: https://osquery.io/schema. Чтобы лучше понять выразительность, которую дает вам osquery, рассмотрите следующие SQL-запросы:
Вывести список users:
SELECT * FROM users;
Проверить processes, у которых удален исполняемый файл:
SELECT * FROM processes WHERE on_disk = 0;
Получить имя процесса, порт и PID для процессов, слушающих на всех интерфейсах:
SELECT DISTINCT processes.name, listening_ports.port, processes.pid
FROM listening_ports JOIN processes USING (pid)
WHERE listening_ports.address = '0.0.0.0';
Найти каждый macOS LaunchDaemon, который запускает исполняемый файл и поддерживает его работающим:
SELECT name, program || program_arguments AS executable
FROM launchd
WHERE (run_at_load = 1 AND keep_alive = 1)
AND (program != '' OR program_arguments != '');
Проверить наличие аномалий ARP с точки зрения хоста:
SELECT address, mac, COUNT(mac) AS mac_count
FROM arp_cache GROUP BY mac
HAVING count(mac) > 1;
Альтернативно, вы также можете использовать SQL-подзапрос для достижения того же результата:
SELECT address, mac, mac_count
FROM
(SELECT address, mac, COUNT(mac) AS mac_count FROM arp_cache GROUP BY mac)
WHERE mac_count > 1;
Эти запросы могут:
Чтобы загрузить последние стабильные сборки, получить информацию о репозитории и инструкции по установке, посетите https://osquery.io/downloads.
Мы используем простую числовую схему версионирования X.Y.Z, где X — основная версия, Y — минорная, а Z — патч. Мы планируем минорные релизы примерно каждые два месяца. Эти релизы отслеживаются на нашей странице Вех. Патч-релиз используется, когда в минорном релизе обнаруживаются непредвиденные ошибки, и нам нужно быстро выпустить исправление. Редкий «ревизионный» релиз может быть использован, если нам нужно изменить конфигурации сборки.
Основные, минорные и патч-релизы помечаются тегами на GitHub, и их можно посмотреть на странице Релизы. Мы открываем новый выпуск Чек-лист релиза, когда готовим минорный релиз. Если вас интересует статус релиза, пожалуйста, найдите соответствующий выпуск чек-листа и обратите внимание, что выпуск будет помечен как закрытый, когда мы закончим чек-лист. Мы считаем релиз «находящимся в тестировании» в течение периода размещения новых загрузок на нашем сайте и добавления их в наши репозитории. Мы пометим релиз как «стабильный» на GitHub, когда будет проведено достаточно тестирования, обычно это занимает две недели.
Мы поощряем сборку osquery из исходного кода! Ознакомьтесь с нашим руководством по сборке. Также посмотрите наше руководство по участию и присоединяйтесь к сообществу в Slack.
Существует множество менеджеров кластеров osquery. Проект osquery не поддерживает, не рекомендует и не тестирует их. Они предоставлены в качестве отправной точки.
| Проект | Лицензия |
|---|---|
| Fleet | Open Core |
| Kolide | Коммерческая |
| OSCTRL | Открытый исходный код |
| Zentral | Открытый исходный код |
Внося свой вклад в osquery, вы соглашаетесь, что ваш вклад будет лицензирован в соответствии с файлом LICENSE.
Мы отслеживаем объявления о безопасности в примечаниях к выпущенным версиям на GitHub. Мы также агрегируем их в SECURITY.md.
Документация osquery доступна онлайн. Документация для более старых версий также доступна по номеру версии, по ссылке.
Если вы хотите узнать больше об osquery, прочитайте статью-анонс для получения предыстории проекта и посетите руководство пользователя.
Обсуждение разработки и использования происходит в Slack osquery, получите приглашение здесь!