Coletar registros do AWS Elastic Load Balancer
Neste documento, explicamos como coletar registros do AWS Elastic Load Balancer configurando um feed do Google Security Operations. O analisador converte os registros no formato UDM. Ele usa padrões grok para extrair campos de mensagens formatadas em CEF e não CEF, mapeando-os para campos da UDM e processando várias transformações de dados, incluindo lógica específica para campos HTTP, TLS e relacionados à segurança. Ele também realiza o processamento condicional com base na presença ou no formato de determinados campos para garantir uma representação precisa da UDM.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps
- Acesso privilegiado à AWS
Configurar o Elastic Load Balancer da AWS
- Ativar a geração de registros de acesso para enviar registros de acesso a um bucket de armazenamento do S3
- Crie um Amazon Simple Queue Service (SQS) e anexe-o a um bucket de armazenamento do S3.
Configurar o bucket do Amazon S3
- Faça login no console da AWS.
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket
- Salve o Nome do bucket (por exemplo,
elb-logs
) e a Região para uso posterior. - 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
Como configurar o balanceador de carga elástico da AWS para ativar os registros de acesso
- Faça login no console de gerenciamento da AWS.
- Pesquise e selecione EC2.
- Selecione Balanceadores de carga no menu de navegação.
- Selecione o balanceador de carga para o qual você quer ativar o registro.
- Na guia Descrição, role até Atributos.
- Clique em Editar atributos.
- Selecione Ativar para ativar os registros de acesso.
- Selecione o bucket do S3 criado anteriormente (por exemplo,
elb-logs
). - Opcional: defina o prefixo do registro para facilitar a identificação (por exemplo,
elb/access-logs/
). - Clique em Salvar.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações do SIEM > Feeds > Adicionar novo
- Central de conteúdo > Pacotes de conteúdo > Começar
Como configurar o feed do Elastic Load Balancer da AWS
- Clique no pacote Amazon Cloud Platform.
- Localize o tipo de registro AWS Elastic Load Balancer.
Especifique os valores nos campos a seguir.
- Especifique os valores nos campos a seguir.
- Tipo de origem: Amazon SQS V2
- Nome da fila: o nome da fila do SQS de onde ler.
- URI do S3: o URI do bucket.
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do seu bucket do S3.
- Substitua
Opções de exclusão de origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.
Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.
ID da chave de acesso à fila do SQS: uma chave de acesso à conta que é uma string alfanumérica de 20 caracteres.
Chave de acesso secreta da fila do SQS: uma chave de acesso da conta que é uma string alfanumérica de 40 caracteres.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
Clique em Criar feed.
Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
actions_executed |
security_result.action |
Se actions_executed for "waf,forward" ou "waf,redirect", defina como "ALLOW". Se actions_executed for "waf", defina como "BLOCK". |
chosen_cert_arn |
principal.user.attribute.labels |
Se chosen_cert_arn contiver "session", mapeie o valor para security_result.description . Caso contrário, crie um rótulo com a chave "ARN" e o valor chosen_cert_arn e adicione-o à matriz principal.user.attribute.labels . |
chosen_cert_arn |
security_result.description |
Se chosen_cert_arn contiver "session", mapeie o valor dele para esse campo. |
client_ip |
principal.asset.ip |
Mapeado diretamente. |
client_ip |
principal.ip |
Mapeado diretamente. |
client_port |
principal.port |
Mapeado diretamente. |
classification |
security_result.rule_name |
Mapeado diretamente se não estiver vazio ou "-". |
classification_reason |
security_result.summary |
Mapeado diretamente se não estiver vazio ou "-". |
Customer (CEF) |
principal.user.user_display_name |
Mapeado diretamente do campo CEF. |
data |
Vários | Analisado usando padrões grok para extrair vários campos. Consulte outras linhas para mapeamentos específicos. |
data.act (CEF) |
security_result.action_details |
Mapeado diretamente do campo CEF. |
data.app (CEF) |
principal.application |
Mapeado diretamente do campo CEF. |
data.ccode (CEF) |
principal.location.country |
Mapeado diretamente do campo CEF. |
data.cicode (CEF) |
principal.location.city |
Mapeado diretamente do campo CEF. |
data.cn1 (CEF) |
network.http.response_code |
Mapeado diretamente do campo CEF. |
data.cpt (CEF) |
principal.port |
Mapeado diretamente do campo CEF. |
data.cs1Label (CEF) |
additional.fields |
Cria um par de chave-valor com a chave "Cap Support" e o valor de cs1Label . |
data.cs2Label (CEF) |
additional.fields |
Cria um par de chave-valor com a chave "Suporte a JavaScript" e o valor de cs2Label . |
data.cs3Label (CEF) |
additional.fields |
Cria um par de chave-valor com a chave "CO Support" e o valor de cs3Label . |
data.cs4Label (CEF) |
additional.fields |
Cria um par de chave-valor com a chave "VID" e o valor de cs4Label . |
data.cs5Label (CEF) |
additional.fields |
Cria um par de chave-valor com a chave "clappsig" e o valor de cs5Label . |
data.cs6Label (CEF) |
additional.fields |
Cria um par de chave-valor com a chave "clapp" e o valor de cs6Label . |
data.cs7Label (CEF) |
additional.fields |
Cria um par de chave-valor com a chave "latitude" e o valor de cs7Label . |
data.deviceExternalId (CEF) |
about.asset.asset_id |
Usado como parte do ID do recurso: Incapsula.SIEMintegration:deviceExternalId . |
data.deviceFacility (CEF) |
principal.location.region |
Mapeado diretamente do campo CEF. |
data.dproc (CEF) |
target.process.command_line |
Mapeado diretamente do campo CEF. |
data.dst_ip |
target.asset.ip |
Mapeado diretamente. |
data.dst_ip |
target.ip |
Mapeado diretamente. |
data.dst_port |
target.port |
Mapeado diretamente. |
data.elb |
target.resource.id |
Mapeado diretamente. |
data.fileId (CEF) |
security_result.detection_fields |
Cria um par de chave-valor com a chave "fileId" e o valor de fileId . |
data.in (CEF) |
network.received_bytes |
Mapeado diretamente do campo CEF. |
data.request (CEF) |
target.url |
Mapeado diretamente do campo CEF. |
data.requestClientApplication (CEF) |
network.http.user_agent |
Mapeado diretamente do campo CEF. |
data.requestMethod (CEF) |
network.http.method |
Mapeado diretamente do campo CEF. |
data.severity (CEF) |
security_result.severity |
Mapeado como "BAIXA" se a gravidade for 0. |
data.sip (CEF) |
principal.asset.ip |
Mapeado diretamente do campo CEF. |
data.sip (CEF) |
principal.ip |
Mapeado diretamente do campo CEF. |
data.siteid (CEF) |
security_result.detection_fields |
Cria um par de chave-valor com a chave "siteid" e o valor de siteid . |
data.sourceServiceName (CEF) |
principal.application |
Mapeado diretamente do campo CEF. |
data.spt (CEF) |
principal.port |
Mapeado diretamente do campo CEF. |
data.src (CEF) |
principal.ip |
Mapeado diretamente do campo CEF. |
data.suid (CEF) |
principal.user.userid |
Mapeado diretamente do campo CEF. |
data.ver (CEF) |
network.tls.version |
A parte da versão é extraída usando grok e mapeada. |
data.ver (CEF) |
network.tls.cipher |
A parte da cifra é extraída usando grok e mapeada. |
data.xff (CEF) |
principal.ip |
Mapeado diretamente do campo CEF. |
domain_name |
principal.administrative_domain |
Mapeado diretamente. |
http_method |
network.http.method |
Mapeado diretamente. |
log_type |
metadata.log_type |
Mapeado diretamente. |
message |
Vários | Analisado usando padrões grok para extrair vários campos. Consulte outras linhas para mapeamentos específicos. |
received_bytes |
network.received_bytes |
Mapeado diretamente. |
redirect_url |
network.application_protocol |
Se redirect_url começar com "http", o protocolo será extraído e mapeado. |
redirect_url |
target.asset.hostname |
Se redirect_url começar com "http", o nome do host será extraído e mapeado. |
redirect_url |
target.hostname |
Se redirect_url começar com "http", o nome do host será extraído e mapeado. |
redirect_url |
target.port |
Se redirect_url começar com "http", a porta será extraída e mapeada. |
request_creation_time |
metadata.collected_timestamp |
Mapeado diretamente após a análise da data. |
request_processing_time |
security_result.detection_fields |
Cria um par de chave-valor com a chave "request_processing_time" e o valor desse campo. |
response_processing_time |
security_result.detection_fields |
Cria um par de chave-valor com a chave "response_processing_time" e o valor desse campo. |
sent_bytes |
network.sent_bytes |
Mapeado diretamente. |
ssl_cipher |
network.tls.cipher |
Mapeado diretamente. |
ssl_protocol |
network.tls.version |
Mapeado diretamente. |
target_group_arn |
target.group.group_display_name |
Mapeado diretamente. |
target_processing_time |
security_result.detection_fields |
Cria um par de chave-valor com a chave "target_processing_time" e o valor deste campo. |
target_status_code |
target.labels |
Cria um rótulo com a chave "target_status_code" e o valor desse campo e o adiciona à matriz target.labels . |
time |
metadata.event_timestamp |
Mapeado diretamente após a análise da data. |
trace_id |
metadata.product_log_id |
Mapeado diretamente após a remoção de "Root=". |
url |
network.http.referral_url |
Mapeado diretamente. |
user_agent |
network.http.user_agent |
Mapeado diretamente. |
(Parser) | metadata.event_type |
Definido como "NETWORK_HTTP" se os IDs principal e da máquina de destino estiverem presentes, "STATUS_UPDATE" se apenas o ID da máquina principal estiver presente, "GENERIC_EVENT" se não houver IP de destino, nome do host ou IP de destino e "NETWORK_HTTP" caso contrário. |
(Parser) | metadata.product_name |
Definido como "Balanceador de carga elástico da AWS". |
(Parser) | metadata.vendor_name |
Defina como "AMAZON". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.