
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
보안 분석은 인증, 권한 부여, 암호화, 접근 제어, 설정의 5가지 범주에 걸쳐 20개의 내장 보안 규칙에 대해 클러스터를 평가합니다. 결과에는 보안 점수(0-100), 등급, 그리고 상세한 발견 사항과 함께 수정 지침이 포함됩니다.
보안 분석 엔진은 Kafka 클러스터를 다음 규칙에 따라 평가합니다:
분석은 0-100 범위의 보안 점수와 문자 등급을 생성합니다:
버그 신고 및 기능 요청은 문제 추적기를 사용해 주세요.
PR은 환영합니다! 일반적인 "fork-and-pull" Git 워크플로를 따릅니다.
[!TIP] 풀 리퀘스트를 만들기 전에 '업스트림'의 최신 변경 사항을 병합하세요!
| 플래그 | 설명 | 기본값 |
|---|
-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 |
| 규칙 ID | 이름 | 심각도 | 설명 |
|---|
| AUTH001 | 인증이 구성되지 않음 | 심각 | 인증 메커니즘이 구성되지 않은 경우를 감지합니다. |
| AUTH002 | 일반 텍스트 리스너 감지 | 심각 | PLAINTEXT 프로토콜을 사용하는 리스너를 식별합니다. |
| AUTH003 | 취약한 SASL 메커니즘 | 높음 | SSL 없이 PLAIN과 같은 취약한 SASL 메커니즘을 표시합니다. |
| 규칙 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 | 토픽 삭제 활성화 | 중간 | 토픽 삭제가 활성화된 경우를 식별합니다. |
| 등급 | 점수 범위 | 설명 |
|---|
| A | 90-100 | 탁월한 보안 상태 |
| B | 80-89 | 좋은 보안, 약간의 개선 필요 |
| C | 70-79 | 보통 수준의 보안, 여러 개선 권장 |
| D | 60-69 | 취약한 보안, 상당한 변경 필요 |
| F | 0-59 | 즉시 주의가 필요한 심각한 보안 문제 |