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 o 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. Depois do 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 um 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_NAME
pelo 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.txt
e 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_NAME
pelo nome real do bucket.
- Substitua
- Opções de exclusão de fontes: 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 da UDM
Campo de registro | Mapeamento da UDM | Lógica |
---|---|---|
action_type | security_result.action_details | Mapeado diretamente do campo de registro bruto action_type . |
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 de registro bruto additionalValue . |
blocked_categories | additional.fields{}.key | Defina como blocked_categories . |
blocked_categories | additional.fields{}.value.string_value | Mapeado diretamente do campo de registro bruto blocked_categories . |
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 de registro bruto column10 . |
column11 | most_granular_identity_type | Mapeado diretamente do campo de registro bruto column11 . |
column12 | identity_types | Mapeado diretamente do campo de registro bruto column12 . |
column13 | blocked_categories | Mapeado diretamente do campo de registro bruto column13 . |
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 de registro bruto column6 . |
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 de registro bruto column9 . |
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 de registro bruto identity_types . |
internal_ip | principal.ip | Mapeado do campo internal_ip se 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 de registro bruto most_granular_identity . |
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 de registro bruto most_granular_identity_type . |
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.