In dieser Task wird beschrieben, wie die SASL-Authentifizierung mit Apache Kafka ohne SSL-Clientauthentifizierung aktiviert wird.
Vorbereitende Schritte
Wenn Sie die SASL-Authentifizierung mit aktivierter Clientauthentifizierung verwenden, lesen Sie die Informationen unter Apache Kafka , um die Clientauthentifizierung zu aktivieren.
- 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 Truststores des Brokers 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
- 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
- Konfigurieren Sie Kafka -Broker für die Clientauthentifizierung.
- Suchen Sie den Abschnitt Einstellungen für Socket-Server und ändern Sie dann
listeners=PLAINTEXT://:<port>
in listeners=SSL://:<PORT>
.
- 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=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
Hinweis:Da die Kennwörter im server.propertiesals Klartext gespeichert werden, wird empfohlen, den Zugriff auf die Datei über Dateisystemberechtigungen einzuschränken.
- Starten Sie die Kafka -Broker erneut, deren server.properties geändert wurde.