Перейти до змісту

Pike

Pike — інструмент для швидкого розгортання сенсора CrowdStrike Falcon на Linux та Windows хостах. Піднімає HTTP-сервер, який роздає інсталяційні скрипти та бінарні файли сенсорів, дозволяючи встановити сенсор на цільовому хості одним one-liner'ом.

Можливості

  • Розгортання сенсора через one-liner команду (curl/iex)
  • Підтримка Linux (DEB, RPM) та Windows (EXE)
  • Два режими роботи: GUI та CLI
  • Локальні файли сенсорів або автоматичне завантаження через CrowdStrike API
  • Автоматичний підбір правильного сенсора для дистрибутива та архітектури
  • Токен-автентифікація для захисту ендпоінтів
  • Верифікація SHA256 контрольної суми при встановленні
  • Трекінг статусу встановлення на цільових хостах
  • Sensor grouping tags для ідентифікації хостів у Falcon Console

Репозиторій: github.com/ih3xcode/pike

Встановлення

Готові бінарні файли для Linux та Windows доступні на сторінці Releases.

Для збірки з вихідного коду потрібен Rust (2024 edition):

cargo build --release

Бінарний файл: target/release/pike

Режими роботи

GUI режим

Запускається автоматично, коли не вказано жодних CLI аргументів:

pike

Або примусово:

pike --gui

GUI надає візуальний інтерфейс для налаштування всіх параметрів: вибір файлів сенсорів, API credentials, CID, порт, таймаут та інші опції. Після старту сервера відображає стан підключених хостів у реальному часі.

CLI режим

Активується при передачі аргументів командного рядка. Підтримує два сценарії:

З локальними файлами сенсорів:

pike --sensor ./falcon-sensor.deb --sensor ./falcon-sensor.rpm --cid <CID>

З CrowdStrike API (сенсори завантажуються на вимогу):

pike --client-id <CLIENT_ID> --client-secret <CLIENT_SECRET> --cloud us-1

Автоматичне отримання CID

При використанні API credentials без явного --cid, Pike автоматично отримає CID через API.

Параметри конфігурації

Параметр Опис За замовчуванням
--sensor <PATH> Шлях до файлу сенсора (можна вказати декілька разів)
--cid <CID> CrowdStrike Customer ID
--client-id <ID> API Client ID (вмикає завантаження через API)
--client-secret <SECRET> API Client Secret
--cloud <CLOUD> Cloud регіон: us-1, us-2, eu-1, us-gov-1, us-gov-2 eu-1
--addr <ADDR> Адреса сервера для one-liner'ів автовизначення
--port <PORT> HTTP порт 8080
--bind <ADDR> Bind адреса 0.0.0.0
--timeout <MIN> Таймаут розгортання у хвилинах (0 = без обмежень) 30
--max-downloads <N> Зупинити сервер після N завантажень (0 = без обмежень) 0
--tags <TAGS> Sensor grouping tags через кому
--no-default-tag Не додавати тег deployment/pike автоматично
--no-auth Вимкнути токен-автентифікацію
--gui Примусово запустити GUI режим
--version Показати версію Pike

HTTP ендпоінти

Pike піднімає наступні HTTP ендпоінти:

Шлях Метод Опис
/lin GET Bash скрипт встановлення для Linux
/win GET PowerShell скрипт встановлення для Windows
/s/{filename} GET Завантаження бінарного файлу сенсора
/cb POST Callback від хоста (реєстрація + підбір сенсора)
/done POST Звіт про результат встановлення

Автентифікація

Коли токен-автентифікація увімкнена (за замовчуванням), всі шляхи мають префікс /<token>, наприклад: /<token>/lin. Токен генерується автоматично при кожному запуску і відображається у виводі сервера.

Підбір сенсорів

Pike автоматично підбирає правильний сенсор для кожного хоста на основі інформації, яку надсилає інсталяційний скрипт:

  • RPM — підбір за тегом дистрибутива та архітектурою з імені файлу (наприклад, .el9.x86_64.rpm). Для RHEL-сімейства (Fedora, Rocky, AlmaLinux, Oracle, CentOS) діє fallback-ланцюжок, якщо точний match недоступний
  • DEB — підбір лише за архітектурою, оскільки один і той самий бінарний файл працює на Ubuntu та Debian
  • Windows — єдиний мультиархітектурний інсталятор

Якщо для хоста не знайдено сумісного сенсора, Pike поверне зрозумілу помилку замість встановлення несумісного пакета. Інсталяційний скрипт на цільовому хості також відобразить повідомлення про причину помилки.

Валідація імен файлів

При використанні локальних файлів сенсорів Pike аналізує імена файлів для визначення дистрибутива та архітектури. Якщо ім'я файлу не містить розпізнаваних тегів (наприклад, файл перейменовано), Pike покаже попередження — у CLI в stderr, у GUI у вигляді жовтого банера.

Sensor grouping tags

Pike підтримує передачу grouping tags, які присвоюються сенсору під час встановлення. Це дозволяє легко ідентифікувати та фільтрувати хости у Falcon Console.

За замовчуванням Pike автоматично додає тег deployment/pike до кожного розгортання. Це можна вимкнути прапорцем --no-default-tag у CLI або відповідним чекбоксом у GUI (Advanced settings).

Додаткові теги вказуються через кому:

pike --sensor ./sensor.deb --cid <CID> --tags "environment/production,team/infrastructure"

У GUI теги налаштовуються в секції Sensor на екрані конфігурації.

Оновлення

Перевірити наявність нової версії:

pike update

Завантажити та встановити останню версію:

pike update --apply

Pike також автоматично перевіряє наявність оновлень при кожному запуску — у CLI режимі повідомлення відображається у банері, у GUI режимі з'являється банер оновлення на екрані конфігурації.

Подальше читання