Чтобы сохранить краткость этого руководства, мы не будем углубляться в «что» и «как» стека ELK. Вместо этого мы быстро и прямо обсудим, как использовать его с Osquery. Мы также предполагаем, что у вас есть практические знания SQL, несмотря на предоставленное руководство).
Что такое Osquery?
Osquery, разработанный Facebook, представляет собой кроссплатформенный инструмент с открытым исходным кодом, используемый для запросов и мониторинга систем с помощью запросов на основе SQL.
Osquery может взаимодействовать с системой и собирать подробную информацию, такую как использование памяти, запущенные процессы, загруженные модули ядра, аппаратные события, сетевые соединения и т. Д. Инструмент работает во всех системах, включая Windows, Linux, Mac и BSD.
Используя Osquery, вы можете создавать SQL-запросы, отображающие информацию о системе, и использовать эту информацию для мониторинга и анализа собранных данных.
Как установить Osquery в системах Debian
Установить Osquery в системах Debian очень просто, и хотя он недоступен в основных репозиториях Debian, добавить его довольно просто.
Давайте посмотрим на первый метод, который вы можете использовать для установки Osquery в Debian:
Первый и самый простой шаг - загрузить установщик deb с главной страницы:
https: // пакет.osquery.io / deb / osquery_4.6.0-1.linux_amd64.деб
wget https: // pkg.osquery.io / deb / osquery_4.6.0-1.linux_amd64.дебsudo dpkg -i osquery_4.6.0-1.linux_amd64.деб
Мы рекомендуем вышеуказанный метод, поскольку пакеты deb очень мало зависят от большинства дистрибутивов Debian. Однако, если вы хотите добавить в apt, используйте следующий метод.
Введите следующие команды для установки Osquery из репозиториев.
экспорт OSQUERY_KEY = 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80Bsudo apt-key adv --keyserver hkp: // сервер ключей.убунту.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.
ПРИМЕЧАНИЕ: Osquery уважает пользовательские пространства, и если вы запустите оболочку в обычном пользовательском режиме, у вас не будет доступа к привилегированным таблицам.
Оскуерид: Другой компонент - osqueryd, демон Osquery, используемый для планирования запросов и записи изменений состояния в фоновом режиме. Демон работает путем агрегирования результатов запросов, выполненных за определенный период времени, и генерирует журналы, используемые для сравнения изменений состояния каждого запроса.
Osqueryctl: Третий компонент - Osqueryctl, вспомогательный скрипт, используемый для проверки конфигурации развертывания. Вы также можете использовать его в качестве диспетчера служб Osquery, позволяя запускать и останавливать службу.
Osquery - это не что иное, как простой инструмент для запроса информации о системе. Однако когда вы комбинируете запросы для создания хорошо отсортированных и агрегированных данных, он становится больше, чем инструмент запросов.
Чтобы начать работу, давайте начнем с основ, чтобы понять, как это работает:
Первый шаг - получить помощь с помощью команды:
sudo osqueryd --helpЭта команда отобразит справку демона Osquery со списком аргументов, которые вы можете использовать в оболочке.
Следующий и самый простой способ взаимодействия с Osquery - использовать сеанс osqueryi. Например, если вы выполните команду osqueryi без аргумента, вы попадете в оболочку, подобную SQL:
sudo osqueryiВнутри оболочки osqueryi вы можете выполнять команды и синтаксис SQL для выбора конкретной информации о системе.
Чтобы просмотреть режим справки внутри оболочки osqueryi, используйте команду:
osquery> .помощьВыполнение этой команды должно отобразить справку по сеансу Osquery.
Поскольку Osquery - это средство отображения реляционной базы данных для вашей системы, у него есть список таблиц, которые вы можете использовать для выбора информации с помощью SQLite Queries.
ПРИМЕЧАНИЕ: Запросы Osquery основаны на SQLite. Вы можете обратиться к его документации, если Osquery не предоставляет достаточно информации:
https: // www.sqlite.org / index.html
Внутри оболочки osqueryi используйте команду:
osquery> .столыЭта команда выводит список доступных таблиц, содержащих системную информацию.
Оттуда вы можете выбрать информацию из доступных схем. Например, просмотреть информацию о преобразователях DNS.
ВЫБРАТЬ * ИЗ dns_resolvers;В зависимости от схемы, которую вы запрашиваете, вы получите огромное количество информации и, возможно, потребуется использовать комбинацию SQL-запросов, чтобы понять ее.
Вы можете узнать больше о таблицах и схемах Osquery из следующего ресурса:
https: // osquery.io / schema / 4.6.0 /
Базовое руководство по SQL
Osquery работает, используя синтаксические запросы SQLite для сбора информации о системе. Понятия не имею, почему Facebook выбрал этот маршрут, но он работает.
В этом простом руководстве обсуждаются основы SQLite, чтобы объяснить, как его можно использовать для взаимодействия с Osquery.
ПРИМЕЧАНИЕ: Это никоим образом не предназначено для руководства по SQL или родственным языкам. Дополнительные руководства для конкретных языков см. В основной документации.
Выбор конкретных записей из таблицы
Используя базовый синтаксис SQLite, мы можем выбрать конкретную информацию из таблицы с помощью оператора SELECT, как показано:
ВЫБЕРИТЕ pid, имя, путь ИЗ процессов;Добавление функций SQL
Osquery также поддерживает функции SQL, позволяя выполнять различные действия с данными, собранными из запросов.
Например, функция подсчета может позволить вам просмотреть количество пользователей в вашей системе.
ВЫБРАТЬ СЧЕТЧИК (*) ИЗ пользователей;Эта команда вернет общее количество пользователей в системе.
Возможность Osquery использовать синтаксис SQL является огромным преимуществом, которое может помочь вам создавать сложные наборы данных, которые могут дать вам более глубокий анализ системы. Он также создает мост, который разработчики SQL, использующие такие механизмы, как PostgreSQL, MySQL и другие, могут использовать для легкой адаптации.
https: // osquery.читать.io / en / стабильный / введение / sql /
Веселый побочный проект
Когда вы изучите Osquery дальше и поэкспериментируете с ним, вы обнаружите, что это всеобъемлющий и мощный инструмент, который упрощает создание проектов, специально настроенных для мониторинга ваших систем.
Из-за объема этого руководства и, чтобы не запутать новичков, мы не будем углубляться в сложные проекты. Как уже упоминалось, вот несколько инструментов, которые вы можете создать с помощью Osquery:
- Собирайте логи с помощью Logstash
- Создайте панель мониторинга системы с помощью Elasticsearch, Logstash и Kibana.
- Создайте флот Osquery с помощью Kolide
https: // osquery.читать.io / en / стабильный / развертывание / агрегация журналов /
https: // www.эластичный.co / руководство / en / beats / filebeat / 7.10 / файл-модуль-osquery.html
https: // github.com / fleetdm / флот
Заключение
В этом руководстве мы рассмотрели основы Osquery, в том числе то, как использовать его для сбора системной информации.
Хотя это руководство не является исчерпывающим, оно призвано предоставить вам быстрое и понятное введение в Osquery; отнюдь не было справочником.
Не стесняйтесь использовать другие ресурсы, чтобы глубже понять различные концепции, которые мы обсуждали в этом руководстве.