Visibilidade total em ataques DDoS com flow logs no AWS Shield Advanced

O problema que os flow logs resolvem

Reconstruir o tráfego de um ataque de negação de serviço distribuído — Distributed Denial of Service (DDoS) — costumava ser um trabalho de arqueologia: você combinava dados de múltiplas fontes depois que o estrago já havia acontecido. A AWS mudou essa dinâmica com os attack flow logs do Shield Advanced, que capturam metadados de tráfego durante os ataques, permitindo identificar origens, confirmar se as mitigações funcionaram e alimentar os pipelines de análise que você já usa.

Os logs são publicados no Amazon Simple Storage Service (Amazon S3), no Amazon CloudWatch Logs ou no Amazon Data Firehose, usando a mesma infraestrutura de entrega do CloudWatch Logs que outros flow logs da AWS já utilizam. Isso significa que eles se encaixam diretamente nas ferramentas de monitoramento e análise que você já tem em operação.

Como ataques DDoS afetam suas aplicações

Um ataque DDoS inunda uma aplicação com tráfego até torná-la indisponível para os usuários. Ataques na camada de infraestrutura saturam a banda disponível e esgotam as tabelas de conexão — o resultado prático são perdas de pacotes e timeouts.

O AWS Shield Advanced é um serviço gerenciado de proteção contra DDoS que detecta e mitiga ataques para os seguintes recursos: distribuições do Amazon CloudFront, balanceadores de carga do Elastic Load Balancing, zonas hospedadas do Amazon Route 53, aceleradores padrão do AWS Global Accelerator e endereços Elastic IP (EIP). Consulte a documentação do AWS Shield Advanced para ver a lista completa de recursos suportados.

Inicialmente, a AWS disponibilizou os flow logs de ataques na camada de infraestrutura para proteções de EIP, com suporte a outros tipos de recursos previsto para o futuro.

Principais benefícios dos flow logs

Os flow logs ajudam as equipes de segurança de várias formas práticas:

  • Reconstruir padrões de tráfego: é possível consultar os logs após um ataque para analisar volume, distribuição de origens e mix de protocolos, sem depender apenas das métricas agregadas do CloudWatch.
  • Identificar origens dos ataques: os campos srccountry e location mostram de onde o tráfego se originou e por qual localização de borda da AWS ele entrou.
  • Verificar o comportamento de mitigação: o campo action registra o que o Shield fez com cada fluxo de tráfego.

Os logs podem ser enviados para o Amazon S3, CloudWatch Logs ou Data Firehose. A partir daí, você pode consultá-los com o Amazon Athena (serviço serverless de consulta de dados no S3), encaminhá-los para plataformas de Gerenciamento de Informações e Eventos de Segurança — Security Information and Event Management (SIEM) de terceiros — ou criar consultas no CloudWatch Logs Insights, tudo isso sem precisar implantar nenhuma infraestrutura nova.

O que os attack flow logs capturam

Cada registro de log captura endereços IP de origem e destino, portas, protocolo, contagem de pacotes e bytes, a ação tomada pelo Shield Advanced, flags TCP, a localização de entrada na AWS e um código de país de duas letras para a origem do tráfego (quando disponível).

Os logs são gravados em intervalos de 5 minutos e ficam disponíveis tanto durante um ataque ativo quanto após sua conclusão. O tamanho máximo de cada arquivo é 75 MB. Se esse limite for atingido dentro da janela de 5 minutos, o arquivo é fechado, publicado e um novo arquivo começa a ser gravado.

Os flow logs suportam os formatos de saída JSON, texto simples, W3C e Parquet. Os campos disponíveis em cada registro são:

  • protection_arn — Nome de Recurso da Amazon (ARN) da proteção do Shield
  • event_timestamp — Timestamp de geração do log
  • version — Versão do flow log
  • srcaddr — Endereço IP de origem
  • dstaddr — Endereço IP de destino
  • srcport — Porta de origem
  • dstport — Porta de destino
  • protocol — Número do protocolo IP
  • packets — Contagem de pacotes na janela de agregação
  • bytes — Contagem de bytes na janela de agregação
  • starttime — Início da janela de agregação
  • endtime — Fim da janela de agregação
  • action — Ação tomada pelo Shield
  • location — Localização de entrada na AWS
  • sampling_rate — Taxa de amostragem usada no processamento de pacotes
  • tcp_flags — Flags TCP do pacote
  • srccountry — Código de país de duas letras para a origem do tráfego

Como configurar os flow logs para proteções do Shield Advanced

A seguir, o passo a passo para criar os recursos de entrega do CloudWatch Logs que conectam uma proteção do Shield Advanced ao destino de log de sua preferência.

Pré-requisitos

Antes de configurar os flow logs, certifique-se de ter:

Os flow logs incorrem nas cobranças padrão de vended logs do CloudWatch Logs, e os recursos de destino (armazenamento em bucket S3, grupo de logs do CloudWatch Logs ou processamento de dados no Firehose) têm cobranças separadas. Revise a entrada de Vended Logs na página de preços do CloudWatch e os preços do serviço de destino escolhido antes de habilitar os flow logs em recursos de alto tráfego.

Como funciona a entrega de logs

A entrega de logs requer três objetos:

  • DeliverySource — Representa a proteção do Shield Advanced que produz os logs
  • DeliveryDestination — Representa para onde os logs devem ser enviados (Amazon S3, CloudWatch Logs ou Amazon Data Firehose)
  • Delivery — Conecta a origem ao destino

Esse modelo de três objetos permite reutilizar destinos em múltiplas origens e gerenciar pipelines de entrega de forma independente. Por exemplo, é possível enviar logs de múltiplas proteções do Shield para o mesmo bucket S3 criando múltiplos objetos DeliverySource que referenciam o mesmo DeliveryDestination.

Como os attack flow logs do Shield Advanced usam a infraestrutura de entrega do CloudWatch Logs, eles podem ser agregados entre contas e regiões assim como outros vended logs. É possível entregar diretamente para um bucket S3 centralizado com política cross-account, replicar grupos de logs do CloudWatch usando regras de centralização cross-account e cross-Region, ou transmitir para um stream compartilhado do Firehose usando assinaturas cross-account.

Passo 1: Criar o recurso de destino

Escolha um destino:

Passo 2: Configurar a política do recurso de destino (se necessário)

O recurso de destino precisa de uma política que conceda permissões de escrita ao serviço de entrega do CloudWatch Logs. A política varia conforme o tipo de destino. Para mais informações, consulte Logs enviados ao Amazon S3, Logs enviados ao CloudWatch Logs ou Logs enviados ao Firehose.

Para destinos no Amazon S3, há duas opções: criação automática de política (se o bucket não tiver política de recurso existente e você tiver as permissões s3:GetBucketPolicy e s3:PutBucketPolicy, a AWS cria a política necessária automaticamente ao criar a entrega no passo 6) ou atualização manual da política (se precisar customizá-la ou se sua organização exigir políticas pré-aprovadas, siga as instruções em Logs enviados ao Amazon S3).

Passo 3: Obter o ARN da proteção

O Shield Advanced é um serviço global e usa a região us-east-1 para gerenciamento. Execute o comando abaixo para listar suas proteções do Shield Advanced:

aws shield list-protections \
--region us-east-1

Na saída, copie o valor de ProtectionArn da proteção que você deseja registrar.

Passo 4: Criar a origem de entrega (DeliverySource)

Execute o comando abaixo para criar a origem de entrega, substituindo <protection-arn> pelo valor de ProtectionArn obtido no passo 3:

aws logs put-delivery-source \
--name my-shield-delivery-source \
--resource-arn <protection-arn> \
--log-type FLOW_LOGS \
--region us-east-1

O parâmetro --resource-arn é o ARN da proteção do Shield Advanced — não o do recurso protegido em si. O Shield Advanced cria um objeto de proteção separado que envolve seu recurso, e os flow logs são gerados por essa camada de proteção, não pelo recurso subjacente.

Passo 5: Criar o destino de entrega (DeliveryDestination)

Execute o comando abaixo para criar o destino de entrega, substituindo <resource-arn> pelo ARN do recurso de destino criado no passo 1:

aws logs put-delivery-destination \
--name my-shield-delivery-destination \
--output-format plain \
--delivery-destination-configuration '{"destinationResourceArn":"<resource-arn>"}' \
--region us-east-1

O parâmetro --delivery-destination-configuration recebe um objeto JSON com a chave destinationResourceArn, cujo valor é o ARN do seu bucket S3, grupo de logs ou stream do Firehose. Na saída, copie o valor do campo ARN de nível superior — este é o ARN do destino de entrega (diferente do ARN do bucket). Você usará esse valor no passo 6.

Passo 6: Criar a entrega (Delivery)

Execute o comando abaixo para conectar a origem ao destino, substituindo <delivery-destination-arn> pelo ARN do destino de entrega obtido no passo 5:

aws logs create-delivery \
--delivery-source-name my-shield-delivery-source \
--delivery-destination-arn <delivery-destination-arn> \
--region us-east-1

Passo 7: Verificar a entrega

Execute o comando abaixo para confirmar que a entrega está ativa:

aws logs describe-deliveries \
--region us-east-1

Após a entrega estar ativa, o Shield Advanced publica registros de flow logs no seu destino durante eventos de DDoS.

Limpeza dos recursos

Para evitar cobranças contínuas, exclua os recursos criados seguindo a ordem abaixo.

Exclua a entrega:

aws logs delete-delivery \
--id <delivery-id> \
--region us-east-1

Exclua a origem de entrega:

aws logs delete-delivery-source \
--name my-shield-delivery-source \
--region us-east-1

Exclua o destino de entrega:

aws logs delete-delivery-destination \
--name my-shield-delivery-destination \
--region us-east-1

Opcionalmente, faça backup dos dados de flow log se precisar retê-los para conformidade ou análise. Em seguida, exclua o recurso de destino.

Atenção: excluir o recurso de destino apagará permanentemente todos os dados de flow log.

Para um bucket S3:

aws s3 rb s3://<bucket-name> \
--force \
--region <region>

Para um grupo de logs do CloudWatch Logs:

aws logs delete-log-group \
--log-group-name <log-group-name> \
--region <region>

Para um stream do Firehose:

aws firehose delete-delivery-stream \
--delivery-stream-name <stream-name> \
--region <region>

Próximos passos

Com os flow logs habilitados nas proteções do Shield Advanced, a AWS recomenda explorar as seguintes possibilidades para aprofundar a análise:

Para a referência completa sobre configuração de flow logs, consulte a documentação do AWS Shield Advanced.

Fonte

Gain visibility into DDoS attacks with flow logs in AWS Shield Advanced (https://aws.amazon.com/blogs/security/gain-visibility-into-ddos-attacks-with-flow-logs-in-aws-shield-advanced/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *