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):
Бінарний файл: target/release/pike
Режими роботи¶
GUI режим¶
Запускається автоматично, коли не вказано жодних CLI аргументів:
Або примусово:
GUI надає візуальний інтерфейс для налаштування всіх параметрів: вибір файлів сенсорів, API credentials, CID, порт, таймаут та інші опції. Після старту сервера відображає стан підключених хостів у реальному часі.
CLI режим¶
Активується при передачі аргументів командного рядка. Підтримує два сценарії:
З локальними файлами сенсорів:
З CrowdStrike API (сенсори завантажуються на вимогу):
Автоматичне отримання 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).
Додаткові теги вказуються через кому:
У GUI теги налаштовуються в секції Sensor на екрані конфігурації.
Оновлення¶
Перевірити наявність нової версії:
Завантажити та встановити останню версію:
Pike також автоматично перевіряє наявність оновлень при кожному запуску — у CLI режимі повідомлення відображається у банері, у GUI режимі з'являється банер оновлення на екрані конфігурації.