In dieser Task wird beschrieben, wie die Clientauthentifizierung mit Apache Kafkaaktiviert wird.
Vorbereitende Schritte
- Stellen Sie sicher, dass die Ports, die vom Kafka -Server verwendet werden, nicht durch eine Firewall blockiert werden.
- Um die Clientauthentifizierung zwischen den Kafka -Konsumenten (QRadar) und einem Kafka -Broker zu aktivieren, muss ein Schlüssel und ein Zertifikat für jeden Broker und Client im Cluster generiert werden. Die Zertifikate müssen auch von der Zertifizierungsstelle signiert werden.
Informationen zu dieser Task
In den folgenden Schritten generieren Sie eine Zertifizierungsstelle, signieren die Client-und Brokerzertifikate mit ihr und fügen sie den Client-und Broker-Truststores hinzu. Sie können die Schlüssel und Zertifikate auch mit dem Java-Keytool und OpenSSLgenerieren. Alternativ kann eine externe Zertifizierungsstelle zusammen mit mehreren Zertifizierungsstellen verwendet werden, eine zum Signieren von Brokerzertifikaten und eine andere für Clientzertifikate.
Vorgehensweise
- Generieren Sie den Truststore, den Keystore, den privaten Schlüssel und das CA-Zertifikat.
Hinweis: Ersetzen Sie PASSWORD, VALIDITY, SERVER_ALIAS und CLIENT_ALIAS in den folgenden Befehlen durch entsprechende Werte.
- Server-Keystore generieren
Hinweis:Der allgemeine Name (CN) der Brokerzertifikate muss mit dem vollständig qualifizierten Domänennamen (FQDN) des Servers/Hosts übereinstimmen. Der Kafka -Konsumentenclient, der von QRadar verwendet wird, vergleicht den CN mit dem DNS-Domänennamen, um sicherzustellen, dass er eine Verbindung zum richtigen Broker und nicht zu einem schädlichen Broker herstellt. Stellen Sie sicher, dass Sie den FQDN für den Wert CN/Vor-und Nachname eingeben, wenn Sie den Server-Keystore generieren.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
-validity VALIDITY -genkey
- Beispiel
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-validity 365 -genkey
- CA-Zertifikat generieren.
Hinweis:Dieses CA-Zertifikat kann zum Signieren aller Broker-und Clientzertifikate verwendet werden.
openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
- Beispiel
openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
- Server-Truststore erstellen und CA-Zertifikat importieren.
keytool -keystore kafka.server.truststore.jks -alias CARoot
-import -file ca-cert
- Client-Truststore erstellen und CA-Zertifikat importieren
keytool -keystore kafka.client.truststore.jks -alias CARoot
-import -file ca-cert
- Generieren Sie ein Serverzertifikat und signieren Sie es mithilfe der Zertifizierungsstelle.
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
- Beispiel
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
- Importieren Sie das CA-Zertifikat in den Server-Keystore.
keytool -keystore kafka.server.keystore.jks -alias CARoot
-import -file ca-cert
- Importieren Sie das signierte Serverzertifikat in den Server-Keystore.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
-file cert-signed
- Beispiel
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-import -file cert-signed
- Exportieren Sie das Serverzertifikat in die binäre DER-Datei.
Hinweis: Der keytool -exportcert -Befehl verwendet das DER-Format standardmäßig. Stellen Sie das Zertifikat in das Verzeichnis trusted_certificates/ eines beliebigen Ereignisprozessors, der mit Kafkakommuniziert. Sie benötigen das Serverzertifikat für jeden Bootstrap-Server, den Sie in der Konfiguration verwenden. Andernfalls weist QRadar den TLS-Handshake mit dem Server zurück.
keytool -exportcert -keystore kafka.server.keystore.jks -alias
SERVER_ALIAS -file SEVER_ALIAS.der
- Beispiel
keytool -exportcert -keystore kafka.server.keystore.jks -alias
server.hostname -file server.hostname.der
- Client-Keystore generieren.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-validity VALIDITY -genkey
- Beispiel
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-validity 365 -genkey
- Generieren Sie ein Clientzertifikat und signieren Sie es mithilfe der Zertifizierungsstelle.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-certreq -file client-cert-file
openssl x509 -req -CA ca-cert -CAkey ca-key -in client-cert-file -out
client-cert-signed -days VALIDITY -CAcreateserial
- Beispiel
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-certreq -file client-cert-file
openssl x509 -req -CA ca-cert -CAkey ca-key -in client-cert-file
-out client-cert-signed -days 365 -CAcreateserial
- Importieren Sie das CA-Zertifikat in den Client-Keystore.
keytool -keystore kafka.client.keystore.jks -alias CARoot
-import -file ca-cert
- Importieren Sie das signierte Clientzertifikat in den Client-Keystore.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-import -file client-cert-signed
- Beispiel
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-import -file client-cert-signed
- Kopieren Sie den Client-Keystore und -Truststore in QRadar.
- Kopieren Sie die Dateien kafka.client.keystore.jks und kafka.client.truststore.jks in /opt/qradar/conf/trusted_certificates/kafka/ auf jedem Ereignisprozessor, für den die Protokollquelle konfiguriert ist.
- Kopieren Sie die Serverzertifikate <filename>.der , die für jeden Broker generiert wurden, in /opt/qradar/conf/trusted_certificates/.
- Konfigurieren Sie Kafka -Broker für die Clientauthentifizierung.
- Suchen Sie den Abschnitt Socket-Server-Einstellungen .
- Führen Sie 1 der folgenden Optionen aus
- Wenn Sie die SASL-Authentifizierung nicht verwenden, ändern Sie
listeners=PLAINTEXT://:<port> in listeners=SSL://:<PORT> und fügen Sie security.inter.broker.protocol=SSLhinzu.
- Wenn Sie die SASL-Authentifizierung verwenden, ändern Sie
listeners=PLAINTEXT://:<port> in listeners=SASL_SSL://:<PORT> und fügen Sie security.inter.broker.protocol=SASL_SSLhinzu.
- Fügen Sie die folgenden Eigenschaften hinzu, um die verschlüsselte Kommunikation zwischen Brokern und zwischen Brokern und Clients zu erzwingen. Passen Sie die Pfade, Dateinamen und Kennwörter nach Bedarf an. Die folgenden Eigenschaften sind der Truststore und Keystore des -Servers:
security.inter.broker.protocol=SSL
ssl.client.auth=required
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=test1234Wichtig: Da die Kennwörter im Klartext in server.propertiesgespeichert werden, wird empfohlen, den Zugriff auf die Datei über Dateisystemberechtigungen zu beschränken.
- Starten Sie die Kafka -Broker erneut, deren server.properties geändert wurde.