Esta tarefa discute como ativar a Autenticação de Cliente com o Apache Kafka.
Antes de iniciar
- Assegure-se de que as portas que são usadas pelo servidor Kafka não estejam bloqueadas por um firewall.
- Para ativar a autenticação de cliente entre os consumidores Kafka (QRadar) e um broker do Kafka , uma chave e um certificado para cada broker e cliente no cluster devem ser gerados. Os certificados também precisam
ser assinados por uma autoridade de certificação (CA).
Sobre esta tarefa
Nas etapas a seguir, você gera uma autoridade de certificação, assina os certificados do cliente e do broker com ela
e a inclui nos armazenamentos confiáveis do cliente e do broker. Você também gera as chaves e os certificados usando o keytool Java e o OpenSSL. Como alternativa, uma autoridade de certificação externa pode ser usada junto com várias autoridades de certificação, uma para assinar certificados do broker e outra para certificados de cliente.
Procedimento
- Gerar o armazenamento confiável, o keystore, a chave privada e o certificado de autoridade de certificação.
Nota: Substituir SENHA, VALIDADE, SERVER_ALIAS e CLIENT_ALIAS nos comandos a seguir com valores apropriados.
- Gerar keystore do Servidor.
Observação:O nome comum (CN) dos certificados do broker deve corresponder ao nome completo do domínio (FQDN) do
servidor/host. O cliente consumidor do Kafka que é usado pelo QRadar compara o CN com o nome de domínio do DNS para assegurar que ele esteja se conectando ao broker correto em vez de um malicioso Certifique-se de inserir o FQDN para o valor CN/First and Last name ao gerar o keystore do Servidor.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
-validity VALIDITY -genkey
- Exemplo
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-validity 365 -genkey
- Gerar Certificado de CA.
Observação:Esse certificado de autoridade de certificação pode ser usado para assinar todos os certificados do broker e do cliente.
openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
- Exemplo
openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
- Crie o armazenamento confiável do Servidor e importe o certificado de autoridade de certificação.
keytool -keystore kafka.server.truststore.jks -alias CARoot
-import -file ca-cert
- Crie o armazenamento confiável do cliente e importe o certificado de autoridade de certificação.
keytool -keystore kafka.client.truststore.jks -alias CARoot
-import -file ca-cert
- Gere um Certificado do Servidor e assine-o usando a autoridade de certificação.
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
- Exemplo
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
- Importe o certificado de autoridade de certificação para o keystore do Servidor.
keytool -keystore kafka.server.keystore.jks -alias CARoot
-import -file ca-cert
- Importe o Certificado do Servidor Assinado para o keystore do Servidor.
keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
-file cert-signed
- Exemplo
keytool -keystore kafka.server.keystore.jks -alias server.hostname
-import -file cert-signed
- Exporte o Certificado do Servidor para o arquivo DER binário.
Nota: O comando keytool -exportcert usa o formato DER por padrão. Coloque o
certificado no diretório trusted_certificates/ de qualquer EP que se comunica com Kafka. É necessário ter o certificado do servidor para cada servidor de autoinicialização que você usa na configuração. Caso contrário, QRadar rejeitará o handshake TLS com o servidor.
keytool -exportcert -keystore kafka.server.keystore.jks -alias
SERVER_ALIAS -file SEVER_ALIAS.der
- Exemplo
keytool -exportcert -keystore kafka.server.keystore.jks -alias
server.hostname -file server.hostname.der
- Gere um keystore do cliente.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-validity VALIDITY -genkey
- Exemplo
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-validity 365 -genkey
- Gere um Certificado de Cliente e assine-o usando a autoridade de certificação.
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
- Exemplo
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
- Importe o certificado de autoridade de certificação para o keystore do cliente.
keytool -keystore kafka.client.keystore.jks -alias CARoot
-import -file ca-cert
- Importe o Certificado do Cliente Assinado para o keystore do Cliente.
keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
-import -file client-cert-signed
- Exemplo
keytool -keystore kafka.client.keystore.jks -alias client.hostname
-import -file client-cert-signed
- Copiar keystore e armazenamento confiável do Cliente e para QRadar.
- Copie o kafka.client.keystore.jks e kafka.client.truststore.jks para /opt/qradar/conf/trusted_certificates/kafka/ em cada um dos processadores de evento para os quais a origem do log está configurada.
- Copie os certificados do servidor <filename>.der que foram gerados para cada broker para
/opt/qradar/conf/trusted_certificates/.
- Configure brokers Kafka para Autenticação de Cliente.
- Encontre a seção Configurações do Servidor de Socket .
- Conclua uma das opções a seguir:
- Se você não estiver usando a Autenticação SASL, mude
listeners=PLAINTEXT://:<port> para listeners=SSL://:<PORT> e inclua security.inter.broker.protocol=SSL.
- Se estiver usando a Autenticação SASL, mude
listeners=PLAINTEXT://:<port> para listeners=SASL_SSL://:<PORT> e inclua security.inter.broker.protocol=SASL_SSL.
- Inclua as propriedades a seguir para forçar a comunicação criptografada entre brokers e entre os brokers e os clientes. Ajuste os caminhos, os nomes de arquivos e as senhas, conforme necessário. Essas propriedades são o armazenamento confiável e o keystore do servidor:
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: Já que as senhas são armazenadas em texto simples no server.properties, é aconselhá-lo que o acesso ao arquivo seja restringido por meio de permissões do sistema de arquivos.
- Restart os intermediários Kafka que tiveram seus server.properties modificados.