이 태스크는 SSL 클라이언트 인증 없이 Apache Kafka에 대해 SASL 인증을 사용으로 설정하는 방법을 설명합니다.
시작하기 전에
클라이언트 인증을 사용하는 SASL 인증을 사용하는 경우 클라이언트 인증을 사용하도록 Apache Kafka 구성을 참조하십시오.
- Kafka 서버가 사용하는 포트가 방화벽에 의해 차단되지 않았는지 확인하십시오.
- Kafka 이용자 (QRadar) 와 Kafka 브로커 간에 클라이언트 인증을 사용하려면 클러스터의 각 브로커 및 클라이언트에 대한 키 및 인증서를 생성해야 합니다. 또한 인증 기관(CA)이 이 인증서에 서명해야 합니다.
이 태스크에 대한 정보
다음과 같은 단계에서는 CA를 생성하여 이 CA를 사용하여 클라이언트 및 브로커 인증서에 서명한 후
이를 브로커 신뢰 저장소에 추가합니다. Java keytool 및 OpenSSL을 사용하여 키 및 인증서도 생성합니다. 또는 여러 CA(브로커 인증서 서명을 위한 CA 하나와 클라이언트 인증서를 위한 다른 CA)와 함께
외부 CA를 사용할 수 있습니다.
프로시저
- 신뢰 저장소, 키 저장소, 개인 키 및 CA 인증서를 생성하십시오.
참고: 다음 명령에서 PASSWORD, VALIDITY, SERVER_ALIAS및 CLIENT_ALIAS를 적절한 값으로 대체하십시오.
- 서버 키 저장소를 생성하십시오.
참고:브로커 인증서의 공통 이름(CN)은 서버/호스트의 완전한 도메인 이름(FQDN)과 일치해야 합니다. QRadar 에서 사용되는 Kafka 이용자 클라이언트는 CN을 DNS 도메인 이름과 비교하여 악성 브로커 대신 올바른 브로커에 연결되어 있는지 확인합니다. 서버 키 저장소를 생성할 때 CN/First and Last name 값에 대해 FQDN을 입력해야 합니다.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
-validity VALIDITY -genkey
- 예
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-validity 365 -genkey
- CA 인증서를 생성하십시오.
참고:이 CA 인증서를 사용하여 모든 브로커 및 클라이언트 인증서에 서명할 수 있습니다.
openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
- 예
openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
- 서버 신뢰 저장소를 작성하고 CA 인증서를 가져오십시오.
keytool -keystore kafka.server.truststore.jks -alias CARoot
-import -file ca-cert
- 서버 인증서를 생성한 후 CA를 사용하여 서명하십시오.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
-certreq -file cert-file
openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out
cert-signed -days VALIDITY -CAcreateserial
- 예
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-certreq -file cert-file
openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out
cert-signed -days 365 -CAcreateserial
- CA 인증서를 서버 키 저장소로 가져오십시오.
keytool -keystore kafka.server.keystore.jks -alias CARoot
-import -file ca-cert
- 서명된 서버 인증서를 서버 키 저장소로 가져오십시오.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
-file cert-signed
- 예
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-import -file cert-signed
- 서버 인증서를 2진 DER 파일에 내보내십시오.
참고: keytool -exportcert
명령은 기본적으로 DER 형식을 사용합니다. Kafka와 통신하는 EP의 trusted_certificates/ 디렉토리에 인증서를 배치하십시오. 구성에서 사용하는 모든 부트스트랩 서버에 대한 서버 인증서가 필요합니다. 그렇지 않으면 QRadar 는 서버와의 TLS 핸드쉐이크를 거부합니다.
keytool -exportcert -keystore kafka.server.keystore.jks -alias
SERVER_ALIAS -file SEVER_ALIAS.der
- 예
keytool -exportcert -keystore kafka.server.keystore.jks -alias
server.hostname -file server.hostname.der
- 클라이언트 인증을 위해 Kafka 브로커를 구성하십시오.
- 소켓 서버 설정 섹션을 찾은 후
listeners=PLAINTEXT://:<port>
를 listeners=SSL://:<PORT>
로 변경하십시오.
- 다음과 같은 특성을 추가하여 브로커 사이 및 브로커와 클라이언트 사이에
암호화된 통신을 강제하십시오. 필요에 따라 경로, 파일 이름 및 비밀번호를 조정하십시오. 이러한 특성은 서버의 신뢰 저장소 및 키 저장소입니다.
security.inter.broker.protocol=SASL_SSL
ssl.client.auth=none
ssl.keystore.location=/somefolder/kafka.server.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234
ssl.truststore.location=/somefolder/kafka.server.truststore.jks
ssl.truststore.password=test1234
참고:비밀번호는 일반 텍스트로 server.properties에 저장되므로
파일 시스템 권한을 사용하여 파일에 대한 액세스를 제한하는 것이 좋습니다.
- server.properties 가 수정된 Kafka 브로커를 다시 시작하십시오.