Esta tarea describe cómo habilitar la autenticación de cliente con Apache Kafka.
Antes de empezar
- Asegúrese de que los puertos utilizados por el servidor Kafka no estén bloqueados por un cortafuegos.
- Para habilitar la autenticación de cliente entre los consumidores Kafka (QRadar) y un intermediario Kafka , se debe generar una clave y un certificado para cada intermediario y cliente del clúster. Los certificados también deben estar firmados por una entidad emisora de certificados (CA).
Acerca de esta tarea
En los pasos siguientes, generará una CA, firmará los certificados de cliente e intermediario con ella y la añadirá a los almacenes de confianza de cliente e intermediario. También puede generar las claves y certificados utilizando la herramienta de claves Java y OpenSSL. De forma alternativa, se puede utilizar una CA externa junto con varias CA, una para firmar certificados de intermediario y otra para certificados de cliente.
Procedimiento
- Genere el almacén de confianza, el almacén de claves, la clave privada y el certificado de CA.
Nota: Sustituya PASSWORD, VALIDEZ, SERVER_ALIAS y CLIENT_ALIAS en los mandatos siguientes con los valores adecuados.
- Generar almacén de claves de servidor.
Nota:El nombre común (CN) de los certificados de intermediario debe coincidir con el nombre de dominio completo (FQDN) del servidor/host. El cliente de consumidor Kafka que utiliza QRadar compara el CN con el nombre de dominio DNS para asegurarse de que se conecta con el intermediario correcto en lugar de con uno malicioso. Asegúrese de especificar el FQDN para el valor CN/Nombre y apellido al generar el almacén de claves del servidor.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
-validity VALIDITY -genkey
- Ejemplo
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-validity 365 -genkey
- Generar certificado de CA.
Nota:Este certificado de CA se puede utilizar para firmar todos los certificados de intermediario y cliente.
openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
- Ejemplo
openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
- Cree el almacén de confianza del servidor e importe el certificado de CA.
keytool -keystore kafka.server.truststore.jks -alias CARoot
-import -file ca-cert
- Cree el almacén de confianza del cliente e importe el certificado de CA.
keytool -keystore kafka.client.truststore.jks -alias CARoot
-import -file ca-cert
- Generar un certificado de servidor y firmarlo utilizando 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
- Ejemplo
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
- Importar certificado de CA en el almacén de claves del servidor.
keytool -keystore kafka.server.keystore.jks -alias CARoot
-import -file ca-cert
- Importar certificado de servidor firmado en el almacén de claves del servidor.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
-file cert-signed
- Ejemplo
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-import -file cert-signed
- Exportar el certificado de servidor al archivo DER binario.
Nota: El mandato keytool -exportcert utiliza el formato DER de forma predeterminada. Coloque el certificado en el directorio trusted_certificates/ de cualquier EP que se comunique con Kafka. Necesita el certificado de servidor para cada servidor de rutina de carga que utilice en la configuración. De lo contrario, QRadar rechaza el reconocimiento TLS con el servidor.
keytool -exportcert -keystore kafka.server.keystore.jks -alias
SERVER_ALIAS -file SEVER_ALIAS.der
- Ejemplo
keytool -exportcert -keystore kafka.server.keystore.jks -alias
server.hostname -file server.hostname.der
- Generar un almacén de claves de cliente.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-validity VALIDITY -genkey
- Ejemplo
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-validity 365 -genkey
- Generar un certificado de cliente y firmarlo utilizando 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
- Ejemplo
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
- Importar certificado de CA en el almacén de claves del cliente.
keytool -keystore kafka.client.keystore.jks -alias CARoot
-import -file ca-cert
- Importar certificado de cliente firmado en el almacén de claves de cliente.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-import -file client-cert-signed
- Ejemplo
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-import -file client-cert-signed
- Copie el almacén de claves y el almacén de confianza del cliente y en QRadar.
- Copie kafka.client.keystore.jks y kafka.client.truststore.jks en /opt/qradar/conf/trusted_certificates/kafka/ en cada uno de los procesadores de sucesos para los que está configurado el origen de registro.
- Copie los certificados de servidor <filename>.der que se han generado para cada intermediario en /opt/qradar/conf/trusted_certificates/.
- Configure los intermediarios de Kafka para la autenticación de cliente.
- Busque la sección Valores del servidor de sockets .
- Complete 1 de las opciones siguientes:
- Si no utiliza la autenticación SASL, cambie
listeners=PLAINTEXT://:<port> por listeners=SSL://:<PORT> y añada security.inter.broker.protocol=SSL.
- Si está utilizando la autenticación SASL, cambie
listeners=PLAINTEXT://:<port> por listeners=SASL_SSL://:<PORT> y añada security.inter.broker.protocol=SASL_SSL.
- Añada las propiedades siguientes para forzar la comunicación cifrada entre intermediarios y entre los intermediarios y los clientes. Ajuste las vías de acceso, los nombres de archivo y las contraseñas según sea necesario. Estas propiedades son el almacén de confianza y el almacén de claves del servidor de :
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: Puesto que las contraseñas se almacenan en texto sin formato en server.properties, se recomienda que el acceso al archivo esté restringido por medio de los permisos del sistema de archivos.
- Reinicie los intermediarios de Kafka que han modificado su server.properties .