В этой статье по Osquery мы начнем с обсуждения того, что такое Osquery, как он работает, как установить его в Debian, краткого введения в SQL и, наконец, создадим проект, подробно описывающий, как интегрировать Osquery со стеком ELK.
Чтобы сохранить краткость этого руководства, мы не будем углубляться в «что» и «как» стека ELK. Вместо этого мы быстро и прямо обсудим, как использовать его с Osquery. Мы также предполагаем, что у вас есть практические знания SQL, несмотря на предоставленное руководство).
Что такое Osquery?
Osquery, разработанный Facebook, представляет собой кроссплатформенный инструмент с открытым исходным кодом, используемый для запросов и мониторинга систем с помощью запросов на основе SQL.
Osquery может взаимодействовать с системой и собирать подробную информацию, такую как использование памяти, запущенные процессы, загруженные модули ядра, аппаратные события, сетевые соединения и т. д. Инструмент работает во всех системах, включая Windows, Linux, Mac и BSD.
Используя Osquery, вы можете создавать SQL-запросы, отображающие информацию о системе, и использовать эту информацию для отслеживания и анализа собранных данных.
Как установить Osquery в системах Debian
Установить Osquery в системах Debian очень просто, и хотя он недоступен в основных репозиториях Debian, добавить его довольно просто.
Давайте посмотрим на первый метод, который вы можете использовать для установки Osquery в Debian:
Первый и самый простой шаг – загрузить установщик deb с главной страницы:
https://pkg.osquery.io/deb/osquery_4.6.0-1.linux_amd64.deb
wget https://pkg.osquery.io/deb/osquery_4.6.0-1.linux_amd64.deb sudo dpkg -i osquery_4.6.0-1.linux_amd64.deb
Мы рекомендуем вышеуказанный метод, так как пакеты deb очень мало зависят от большинства дистрибутивов Debian. Однако, если вы хотите добавить в apt, используйте следующий метод.
Введите следующие команды, чтобы установить Osquery из репозиториев.
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main' sudo apt-get update sudo apt-get install osquery
Как использовать Osquery в Debian 10
Прежде чем углубиться в создание автоматизированных скриптов и работу со стеком ELK, давайте обсудим некоторые простые способы использования Osquery в локальной системе.
Osquery имеет три основных компонента, которые вы можете использовать для взаимодействия с API.
Osquery: первый компонент – это osqueryi, интерактивный сеанс оболочки. Режим osqueryi полностью автономен и не требует взаимодействия с демоном Osquery — Osquery. Используя режим osqueryi, вы можете интерактивно выполнять SQL-запросы и исследовать текущую систему, как в оболочке SQL.
Osqueryd: Другой компонент – osqueryd, демон Osquery, используемый для планирования запросов и записи изменений состояния в фоновом режиме. Демон работает путем агрегирования результатов запросов, выполненных за определенный период времени, и генерирует журналы, используемые для сравнения изменений состояния каждого запроса.
Osqueryctl: третий компонент – Osqueryctl, вспомогательный скрипт, используемый для тестирования конфигурации развертывания. Вы также можете использовать его в качестве диспетчера служб Osquery, позволяя запускать и останавливать службу.
По умолчанию Osquery – не более чем простой инструмент для запроса информации о системе. Однако когда вы комбинируете запросы для создания хорошо отсортированных и агрегированных данных, это становится больше, чем инструмент запросов.
Чтобы начать работу, давайте начнем с основ, чтобы понять, как это работает:
Первый шаг – получить помощь с помощью команды:
sudo osqueryd --help
Эта команда отобразит справку демона Osquery со списком аргументов, которые вы можете использовать в оболочке.
Следующий и самый простой способ взаимодействия с Osquery – использовать сеанс osqueryi. Например, если вы выполните команду osqueryi без аргумента, вы попадете в оболочку, подобную SQL:
sudo osqueryi
Внутри оболочки osqueryi вы можете выполнять команды и синтаксис SQL для выбора конкретной информации о системе.
Чтобы просмотреть режим справки внутри оболочки osqueryi, используйте команду:
osquery > .help
Выполнение этой команды должно отобразить справку по сеансу Osquery.
Поскольку Osquery – это средство отображения реляционной базы данных для вашей системы, у него есть список таблиц, которые вы можете использовать для выбора информации с помощью SQLite Queries.
https://www.sqlite.org/index.html
Внутри оболочки osqueryi используйте команду:
osquery > .tables
Эта команда выводит список доступных таблиц, содержащих системную информацию.
Оттуда вы можете выбрать информацию из доступных схем. Например, просмотрите информацию о преобразователях DNS.
SELECT * FROM dns_resolvers;
В зависимости от схемы, которую вы запрашиваете, вы получите огромное количество информации, и, возможно, потребуется использовать комбинацию SQL-запросов, чтобы понять ее.
Вы можете узнать больше о таблицах и схемах Osquery из следующего ресурса:
https://osquery.io/schema/4.6.0/
Базовое руководство по SQL
Osquery работает, используя синтаксические запросы SQLite для сбора информации о системе. Понятия не имею, почему Facebook выбрал этот путь, но он работает.
В этом простом руководстве обсуждаются основы SQLite, чтобы объяснить, как вы можете использовать его для взаимодействия с Osquery.
Выбор конкретных записей из таблицы
Используя базовый синтаксис SQLite, мы можем выбрать конкретную информацию из таблицы с помощью оператора SELECT, как показано:
ВSELECT pid, name, path FROM processes;
Добавление функций SQL
Osquery также поддерживает функции SQL, позволяя выполнять различные действия с данными, собранными из запросов.
Например, функция подсчета может позволить вам просмотреть количество пользователей в вашей системе.
SELECT COUNT(*) FROM users;
Эта команда вернет общее количество пользователей в системе.
Возможность Osquery использовать синтаксис SQL является огромным преимуществом, которое может помочь вам создавать сложные наборы данных, которые могут дать вам более глубокий анализ системы. Это также создает мост, который разработчики SQL, использующие такие механизмы, как PostgreSQL, MySQL и другие, могут использовать для легкой адаптации.
Веселый побочный проект
Когда вы изучите Osquery дальше и поэкспериментируете с ним, вы обнаружите, что это всеобъемлющий и мощный инструмент, который позволяет легко создавать проекты, специально настроенные для мониторинга ваших систем.
Из-за объема данного руководства и во избежание путаницы новичков мы не будем углубляться в сложные проекты. Как уже упоминалось, вот несколько инструментов, которые вы можете создать с помощью Osquery:
- Собирайте журналы с Logstash
- Создайте панель мониторинга системы с помощью Elasticsearch, Logstash и Kibana.
- Создайте флот Osquery с помощью Kolide
Заключение
В этой статье мы рассмотрели основы Osquery, в том числе то, как его использовать для сбора системной информации.
Хотя эта статья не является исчерпывающим, оно призвано предоставить вам быстрое и понятное введение в Osquery; это ни в коем случае не было справочником.
Не стесняйтесь использовать другие ресурсы, чтобы лучше понять различные концепции, которые мы обсуждали в этой статье.