Coletar registros de auditoria do Cisco Umbrella
Este documento explica como coletar registros de auditoria do Cisco Umbrella em um feed do Google Security Operations usando um bucket do AWS S3. O analisador normaliza os dados de registro CSV brutos, processando diferentes delimitadores e possíveis inconsistências de formatação. Em seguida, com base no tipo de registro (DNS ou auditoria), ele mapeia os campos extraídos para o esquema UDM correspondente, enriquecendo os dados com contexto adicional e padronizando a representação para análise posterior.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você tem acesso privilegiado ao AWS IAM e ao S3.
- Verifique se você tem acesso privilegiado ao Cisco Umbrella.
Configurar um bucket do Amazon S3 gerenciado pela Cisco
- Faça login no painel do Cisco Umbrella.
- Acesse Administrador > Gerenciamento de registros.
- Selecione a opção Usar um bucket do Amazon S3 gerenciado pela Cisco.
- Informe os seguintes detalhes de configuração:
- Selecione uma região: escolha uma região mais próxima de você para reduzir a latência.
- Selecione uma duração de retenção: escolha o período. A duração da retenção é de 7, 14 ou 30 dias. Após o período selecionado, os dados são excluídos e não podem ser recuperados. Se o ciclo de ingestão for regular, use um período mais curto. É possível mudar a duração da retenção depois.
- Clique em Salvar.
- Clique em Continuar para confirmar suas seleções e receber a notificação de ativação.
Na janela Ativação concluída que aparece, os valores de Chave de acesso e Chave secreta são exibidos. - Copie os valores de Chave de acesso e Chave secreta. Se você perder essas chaves, será necessário gerá-las novamente.
- Clique em Entendi > Continuar.
- Uma página de resumo mostra a configuração e o nome do bucket. Você pode ativar ou desativar a geração de registros conforme exigido pela sua organização. No entanto, os registros são limpos com base na duração da retenção, independentemente da adição de novos dados.
Opcional: configurar chaves de acesso do usuário para o bucket do AWS S3 autogerenciado
- Faça login no Console de Gerenciamento da AWS.
- Crie um usuário seguindo este guia: Como criar um usuário do IAM.
- Selecione o usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como o Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para uso posterior.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione a política AmazonS3FullAccess.
- Clique em Próxima.
- Clique em Adicionar permissões
Opcional: configurar um bucket do Amazon S3 autogerenciado
Faça login no Console de Gerenciamento da AWS.
Acesse S3.
Clique em Criar bucket.
Informe os seguintes detalhes de configuração:
- Nome do bucket: informe um nome para o bucket do Amazon S3.
- Região: selecione uma região.
Clique em Criar.
Opcional: configure uma política de bucket para o bucket do AWS S3 autogerenciado
- Clique no bucket recém-criado para abrir.
- Selecione Propriedades > Permissões.
- Na lista Permissões, clique em Adicionar política de bucket.
Insira a política de bucket pré-configurada da seguinte maneira:
{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*" }, { "Sid": "", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*"}, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::BUCKET_NAME" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BUCKET_NAME" } ] }- Substitua
BUCKET_NAMEpelo nome do bucket do Amazon S3 que você informou.
- Substitua
Clique em Salvar.
Opcional: verificação obrigatória para bucket do Amazon S3 autogerenciado
- No painel Cisco Umbrella, selecione Admin > Log management > Amazon S3.
- No campo Nome do bucket, especifique o nome exato do bucket do Amazon S3 e clique em Verificar.
- Como parte do processo de verificação, um arquivo chamado
README_FROM_UMBRELLA.txté enviado do Cisco Umbrella para seu bucket do Amazon S3. Talvez seja necessário atualizar o navegador para ver o arquivo readme quando ele for enviado. - Faça o download do arquivo
README_FROM_UMBRELLA.txte abra-o usando um editor de texto. - Copie e salve o token exclusivo do Cisco Umbrella do arquivo.
- Acesse o painel do Cisco Umbrella.
- No campo Número do token, especifique o token e clique em Salvar.
- Se for bem-sucedida, você vai receber uma mensagem de confirmação no painel indicando que o bucket foi verificado. Se você receber um erro indicando que não é possível verificar seu bucket, confira novamente a sintaxe do nome dele e revise a configuração.
Configurar um feed no Google SecOps para ingerir os registros de auditoria do Cisco Umbrella
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed, por exemplo, Registros de auditoria do Cisco Umbrella.
- Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Auditoria do Cisco Umbrella como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: o URI do bucket.
s3:/BUCKET_NAME- Substitua
BUCKET_NAMEpelo nome real do bucket.
- Substitua
- Opções de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência.
- URI do S3: o URI do bucket.
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| action_type | security_result.action_details | Mapeado diretamente do campo action_type do registro bruto. |
| action_type | security_result.action | Se action_type contiver allow (sem diferenciar maiúsculas e minúsculas), defina como ALLOW. Se action_type contiver block (sem diferenciar maiúsculas e minúsculas), defina como BLOCK. |
| additionalValue | additional.fields{}.key | Defina como Additional Value. |
| additionalValue | additional.fields{}.value.string_value | Mapeado diretamente do campo additionalValue do registro bruto. |
| blocked_categories | additional.fields{}.key | Defina como blocked_categories. |
| blocked_categories | additional.fields{}.value.string_value | Mapeado diretamente do campo blocked_categories do registro bruto. |
| categorias | security_result.category_details | Mapeado diretamente do campo de registro bruto categories, depois de ser dividido por vírgula. |
| column1 | metadata.product_log_id | Mapeado do campo de registro bruto column1 se o registro for de registro de auditoria. |
| column1 | date_time | Mapeado do campo de registro bruto column1 se o registro for de DNS. |
| column10 | categorias | Mapeado diretamente do campo column10 do registro bruto. |
| column11 | most_granular_identity_type | Mapeado diretamente do campo column11 do registro bruto. |
| column12 | identity_types | Mapeado diretamente do campo column12 do registro bruto. |
| column13 | blocked_categories | Mapeado diretamente do campo column13 do registro bruto. |
| column2 | date_time | Mapeado do campo de registro bruto column2 se o registro for de registro de auditoria. |
| column2 | most_granular_identity | Mapeado do campo de registro bruto column2 se o registro for de DNS. |
| column3 | principal.user.email_addresses | Mapeado do campo de registro bruto column3 se o registro for de registro de auditoria. |
| column3 | identidades | Mapeado do campo de registro bruto column3 se o registro for de DNS. |
| column4 | principal.user.userid | Mapeado do campo de registro bruto column4 se o registro for de registro de auditoria. |
| column4 | internal_ip | Mapeado do campo de registro bruto column4 se o registro for de DNS. |
| column5 | security_result.rule_name | Mapeado do campo de registro bruto column5 se o registro for de registro de auditoria. |
| column5 | external_ip | Mapeado do campo de registro bruto column5 se o registro for de DNS. |
| column6 | action_type | Mapeado diretamente do campo column6 do registro bruto. |
| column7 | principal.ip | Mapeado do campo de registro bruto column7 se o registro for de registro de auditoria. |
| column7 | dns_query_type | Mapeado do campo de registro bruto column7 se o registro for de DNS. |
| column8 | additionalValue | Mapeado do campo de registro bruto column8 se o registro for de registro de auditoria. |
| column8 | dns_response_code | Mapeado do campo de registro bruto column8 se o registro for de DNS. |
| column9 | domínio | Mapeado diretamente do campo column9 do registro bruto. |
| date_time | metadata.event_timestamp.seconds | O carimbo de data/hora da época extraído do campo date_time. |
| dns_query_type | network.dns.questions.type | Extraído do campo dns_query_type usando uma expressão regular e convertido em número inteiro. |
| dns_response_code | network.dns.response_code | Mapeado do campo dns_response_code e convertido em número inteiro com base nos valores do código de resposta do DNS. |
| domínio | network.dns.questions.name | Mapeado diretamente do campo domain. |
| external_ip | principal.ip | Mapeado do campo external_ip se não estiver vazio e for diferente de internal_ip. |
| identidades | principal.location.name | Mapeado do campo identities se o campo identity_types correspondente for Networks. |
| identidades | principal.hostname | Mapeado do campo identities se o campo identity_types correspondente for AD Computers, Roaming Computers ou Anyconnect Roaming Client. |
| identidades | principal.asset.hostname | Mapeado do campo identities se o campo identity_types correspondente for AD Computers, Roaming Computers ou Anyconnect Roaming Client. |
| identidades | principal.location.city | Mapeado do campo identities se o campo identity_types correspondente for Sites. |
| identity_types | additional.fields{}.key | Defina como identities_types. |
| identity_types | additional.fields{}.value.string_value | Mapeado diretamente do campo identity_types do registro bruto. |
| internal_ip | principal.ip | Mapeado do campo internal_ip se ele não estiver vazio. |
| most_granular_identity | additional.fields{}.key | Defina como most_granular_identity. |
| most_granular_identity | additional.fields{}.value.string_value | Mapeado diretamente do campo most_granular_identity do registro bruto. |
| most_granular_identity_type | additional.fields{}.key | Defina como most_granular_identity_type. |
| most_granular_identity_type | additional.fields{}.value.string_value | Mapeado diretamente do campo most_granular_identity_type do registro bruto. |
| metadata.event_type | Defina como NETWORK_DNS se o registro for de DNS. |
|
| metadata.event_type | Definido como STATUS_UPDATE se o registro for registro de auditoria e principal_ip não estiver vazio. |
|
| metadata.event_type | Definido como GENERIC_EVENT se o registro for registro de auditoria e principal_ip estiver vazio. |
|
| metadata.vendor_name | Defina como CISCO UMBERLLA. |
|
| metadata.product_name | Defina como CISCO UMBERLLA. |
|
| metadata.log_type | Defina como AUDITD. |
|
| network.application_protocol | Defina como DNS se o registro for de DNS. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.