Configurando o Apache Kafka para ativar a Autenticação de Cliente

Esta tarefa discute como ativar a Autenticação de Cliente com o Apache Kafka.

Antes de iniciar

  1. Assegure-se de que as portas que são usadas pelo servidor Kafka não estejam bloqueadas por um firewall.
  2. 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

  1. 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.
    1. 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
    2. 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
    3. 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
    4. 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
    5. 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 
    6. 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
    7. 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
    8. 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
    9. 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
    10. 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
    11. 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
    12. 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
    13. Copiar keystore e armazenamento confiável do Cliente e para QRadar.
      1. 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.
      2. Copie os certificados do servidor <filename>.der que foram gerados para cada broker para /opt/qradar/conf/trusted_certificates/.
  2. Configure brokers Kafka para Autenticação de Cliente.
    1. Encontre a seção Configurações do Servidor de Socket .
    2. 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.
    3. 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=test1234
      Importante: 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.
    4. Restart os intermediários Kafka que tiveram seus server.properties modificados.