
Ловите то, что скрывается в ваших кластерах Kafka.
Ловите то, что скрывается в ваших кластерах Kafka.
Kcatcher — это утилита командной строки для перечисления и оценки конфигураций кластеров Kafka. Она подключается к кластерам Apache Kafka и получает подробную информацию о брокерах, топиках, ACL и даже образцы сообщений. Идеально подходит для аудита безопасности, оценки инфраструктуры или просто для понимания того, что работает в вашей среде Kafka.

Если у вас есть рабочее окружение Go, вы можете установить с помощью:
go install github.com/RoseSecurity/kcatcher@latest
Чтобы установить пакеты, вы можете быстро настроить репозиторий автоматически:
curl -1sLf \
'https://dl.cloudsmith.io/public/rosesecurity/kcatcher/setup.deb.sh' \
| sudo -E bash
После настройки репозитория вы можете установить с помощью:
apt install kcatcher
git clone [email protected]:RoseSecurity/kcatcher.git
cd kcatcher
make build
Подключитесь к кластеру Kafka и получите метаданные о брокерах и топиках:
kcatcher -b kafka-broker-1,kafka-broker-2
Укажите нестандартный порт Kafka:
kcatcher -b kafka-broker-1 -p 9093
Получите списки контроля доступа, настроенные в кластере:
kcatcher -b kafka-broker-1 --acls
Получите образцы последних сообщений из конкретного топика:
kcatcher -b kafka-broker-1 --sample-topic my-topic --sample-count 5
Вывод результатов в формате JSON для дальнейшей обработки:
kcatcher -b kafka-broker-1 --acls -o json
Получите конфигурации брокеров и топиков:
kcatcher -b kafka-broker-1 --configs
Проведите комплексный анализ безопасности вашего кластера Kafka:
kcatcher -b kafka-broker-1 --analyze
Комбинируйте с перечислением ACL и конфигураций для полной оценки:
kcatcher -b kafka-broker-1 --acls --configs --analyze
Анализ безопасности оценивает ваш кластер по 20 встроенным правилам безопасности в пяти категориях: аутентификация, авторизация, шифрование, контроль доступа и конфигурация. Результаты включают оценку безопасности (0–100), буквенную оценку и подробные выводы с рекомендациями по устранению проблем.
| Флаг | Описание | По умолчанию |
|---|---|---|
-b, --brokers | Список брокеров Kafka для перечисления (обязательно) | - |
-p, --port | Порт брокера Kafka | 9092 |
-t, --timeout | Длительность тайм-аута подключения | 10s |
-o, --output | Формат вывода (text или json) | text |
--acls | Включить перечисление ACL | false |
--configs | Включить получение конфигураций брокеров и топиков | false |
--analyze | Выполнить анализ безопасности конфигурации кластера | false |
--metadata | Показать метаданные кластера (автоматически включено, если не указан только --analyze) | true |
--sample-topic | Топик для выборки сообщений | - |
--sample-count | Количество сообщений для выборки | 10 |
Механизм анализа безопасности оценивает ваш кластер Kafka по следующим правилам:
| ID правила | Название | Серьёзность | Описание |
|---|---|---|---|
| AUTH001 | Нет настроенной аутентификации | КРИТИЧЕСКИЙ | Обнаруживает, когда не настроен механизм аутентификации |
| AUTH002 | Обнаружен слушатель Plaintext | КРИТИЧЕСКИЙ | Определяет слушателей, использующих протокол PLAINTEXT |
| AUTH003 | Слабый механизм SASL | ВЫСОКИЙ | Отмечает слабые механизмы SASL, такие как PLAIN без SSL |
| ID правила | Название | Серьёзность | Описание |
|---|---|---|---|
| AUTHZ001 | Не настроен авторизатор | КРИТИЧЕСКИЙ | Обнаруживает отсутствие конфигурации авторизатора |
| AUTHZ002 | Разрешение для всех | КРИТИЧЕСКИЙ | Определяет излишне разрешающие настройки «разрешить всем» |
| AUTHZ003 | Раскрыты суперпользователи | СРЕДНИЙ | Отмечает раскрытые конфигурации суперпользователей |
| ID правила | Название | Серьёзность | Описание |
|---|---|---|---|
| ENC001 | Нет шифрования между брокерами | КРИТИЧЕСКИЙ | Обнаруживает незашифрованную связь между брокерами |
| ENC002 | Слабый протокол SSL | ВЫСОКИЙ | Определяет устаревшие или слабые протоколы SSL/TLS |
| ENC003 | Нет клиентской аутентификации SSL | СРЕДНИЙ | Отмечает отсутствие клиентской аутентификации SSL |
| ENC004 | Нет идентификации конечной точки | СРЕДНИЙ | Обнаруживает отключённую идентификацию конечной точки SSL |
| ID правила | Название | Серьёзность | Описание |
|---|---|---|---|
| ACL001 | Подстановочный субъект в ACL | КРИТИЧЕСКИЙ | Определяет ACL с подстановочными субъектами (*) |
| ACL002 | Подстановочный хост в ACL | СРЕДНИЙ | Отмечает ACL, разрешающие доступ с любого хоста |
| ACL003 | Излишне разрешающий ACL | ВЫСОКИЙ | Обнаруживает ACL, предоставляющие чрезмерные разрешения |
| ACL004 | ACL на уровне кластера | СРЕДНИЙ | Определяет ACL, применяемые ко всему кластеру |
| ACL005 | Подстановочный ресурс в ACL | ВЫСОКИЙ | Отмечает ACL с подстановочными шаблонами ресурсов |
| ID правила | Название | Серьёзность | Описание |
|---|---|---|---|
| TOPIC001 | Включено автоматическое создание топиков | ВЫСОКИЙ | Обнаруживает включённое автоматическое создание топиков |
| TOPIC002 | Небезопасные выборы лидера | ВЫСОКИЙ | Определяет конфигурацию небезопасных выборов лидера |
| TOPIC003 | Низкий минимальный ISR | ВЫСОКИЙ | Отмечает топики с недостаточным минимальным числом синхронизированных реплик |
| TOPIC004 | Короткий период хранения | СРЕДНИЙ | Обнаруживает необычно короткие периоды хранения сообщений |
| TOPIC005 | Удаление топиков включено | СРЕДНИЙ | Определяет, когда включено удаление топиков |
Анализ формирует оценку безопасности от 0 до 100 и буквенную оценку:
| Оценка | Диапазон баллов | Описание |
|---|---|---|
| A | 90-100 | Отличная позиция безопасности |
| B | 80-89 | Хорошая безопасность с незначительными улучшениями |
| C | 70-79 | Умеренная безопасность, рекомендуется несколько улучшений |
| D | 60-69 | Слабая безопасность, требуются значительные изменения |
| F | 0-59 | Критические проблемы безопасности, требующие немедленного внимания |
По вопросам об ошибках и запросам функций, пожалуйста, используйте трекер задач.
PR приветствуются! Мы следуем типичному Git-процессу «fork-and-pull».
[!TIP] Обязательно объедините последние изменения из «upstream» перед созданием pull request!