In questa attività viene illustrato come abilitare l'autenticazione del client con Apache Kafka.
Prima di iniziare
- Assicurarsi che le porte utilizzate dal server Kafka non siano bloccate da un firewall.
- Per abilitare l'autenticazione client tra gli utenti Kafka (QRadar) e i broker Kafka , è necessario generare una chiave e un certificato per ciascun broker e client nel cluster. I certificati devono inoltre essere firmati da un'autorità di certificazione (CA).
Informazioni su questa attività
Nei seguenti passaggi, si genera una CA, firma i certificati client e broker con esso, e lo aggiungi al client e broker truststore. Puoi anche generare le chiavi e i certificati utilizzando il keytool Java e OpenSSL. In alternativa, una CA esterna può essere utilizzata insieme a più CAs, una per la firma dei certificati broker e un'altra per i certificati client.
Procedura
- Genera il truststore, il memorizzazione chiave, la chiave privata e il certificato CA.
Nota: Sostituire PASSWORD, VALIDITÀ, SERVER_ALIAS e CLIENT_ALIAS nei seguenti comandi con valori appropriati.
- Genera il memorizzazione chiave del server.
Nota:Il nome comune (CN) dei certificati broker deve corrispondere al nome del dominio completamente qualificato (FQDN) del server / host. Il client consumer Kafka utilizzato da QRadar confronta il CN con il nome dominio DNS per garantire che si stia collegando al broker corretto invece che a un broker doloso. Assicurarsi di immettere l'FQDN per il valore CN/Nome e cognome quando si genera il keystore del server.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
-validity VALIDITY -genkey
- Esempio
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-validity 365 -genkey
- Genera certificato CA.
Nota:Questo certificato CA può essere utilizzato per firmare tutti i certificati broker e client.
openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
- Esempio
openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
- Crea truststore di server e importazione certificato CA.
keytool -keystore kafka.server.truststore.jks -alias CARoot
-import -file ca-cert
- Crea truststore Client e importazione certificato CA.
keytool -keystore kafka.client.truststore.jks -alias CARoot
-import -file ca-cert
- Generare un Certificato Server e firmarlo utilizzando la 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
- Esempio
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
- Importa certificato CA nel Keystore Server.
keytool -keystore kafka.server.keystore.jks -alias CARoot
-import -file ca-cert
- Import Signed Server Certificate al server di memorizzazione del server.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
-file cert-signed
- Esempio
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-import -file cert-signed
- Esporta il Certificato Server nel file binario DER.
Nota: Il comando keytool -exportcert utilizza il formato DER per impostazione predefinita. Inserire il certificato nella directory trusted_certificates/ di qualsiasi EP che comunica con Kafka. È necessario il certificato server per ogni server bootstrap che si utilizza nella configurazione. Altrimenti, QRadar rifiuta l'handshake TLS con il server.
keytool -exportcert -keystore kafka.server.keystore.jks -alias
SERVER_ALIAS -file SEVER_ALIAS.der
- Esempio
keytool -exportcert -keystore kafka.server.keystore.jks -alias
server.hostname -file server.hostname.der
- Generare un archivio di chiavi Client.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-validity VALIDITY -genkey
- Esempio
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-validity 365 -genkey
- Generare un Certificato Client e firmarlo utilizzando la CA.
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
- Esempio
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
- Importa certificato CA nel Keystore del Client.
keytool -keystore kafka.client.keystore.jks -alias CARoot
-import -file ca-cert
- Import Signed Client Certificate al client di memorizzazione del client.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-import -file client-cert-signed
- Esempio
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-import -file client-cert-signed
- Copia keystore e truststore client e in QRadar.
- Copiare kafka.client.keystore.jks e kafka.client.truststore.jks in /opt/qradar/conf/trusted_certificates/kafka/ su ciascun processore eventi per cui è configurata l'origine log.
- Copiare i certificati server <filename>.der generati per ogni broker in /opt/qradar/conf/trusted_certificates/.
- Configura Kafka broker per l'autenticazione del client.
- Trova la sezione Impostazioni socket server .
- Completa 1 delle seguenti opzioni:
- Se non si utilizza SASL Authentication, modificare
listeners=PLAINTEXT://:<port> a listeners=SSL://:<PORT> e aggiungere security.inter.broker.protocol=SSL.
- Se si utilizza l'autenticazione SASL, cambiare
listeners=PLAINTEXT://:<port> a listeners=SASL_SSL://:<PORT> e aggiungere security.inter.broker.protocol=SASL_SSL.
- Aggiungere le seguenti proprietà per forzare la comunicazione crittografata tra i broker e tra i broker e i client. Regolare i percorsi, i nomi dei file e le password come servono. Queste proprietà sono il truststore e il memorizzazione chiave del server:
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=test1234Importante: poiché le password sono memorizzate in testo semplice in server.properties, si consiglia di limitare l'accesso al file tramite le autorizzazioni del filesystem.
- Riavviare i broker Kafka che hanno server.properties modificato.