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
srccountryelocationmostram 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
actionregistra 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 Shieldevent_timestamp— Timestamp de geração do logversion— Versão do flow logsrcaddr— Endereço IP de origemdstaddr— Endereço IP de destinosrcport— Porta de origemdstport— Porta de destinoprotocol— Número do protocolo IPpackets— Contagem de pacotes na janela de agregaçãobytes— Contagem de bytes na janela de agregaçãostarttime— Início da janela de agregaçãoendtime— Fim da janela de agregaçãoaction— Ação tomada pelo Shieldlocation— Localização de entrada na AWSsampling_rate— Taxa de amostragem usada no processamento de pacotestcp_flags— Flags TCP do pacotesrccountry— 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:
- Uma assinatura ativa do Shield Advanced
- Ao menos uma proteção do Shield Advanced existente
- Permissões do AWS Identity and Access Management (IAM) para criar recursos de entrega do CloudWatch Logs (
logs:PutDeliverySource,logs:PutDeliveryDestination,logs:CreateDelivery)
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:
- Opção A – Bucket S3: melhor para armazenamento de longo prazo e consultas com Athena. Veja como criar um bucket S3.
- Opção B – Grupo de logs do CloudWatch Logs: melhor para monitoramento em tempo real e CloudWatch Logs Insights. Veja como criar um grupo de logs no CloudWatch Logs.
- Opção C – Stream do Data Firehose: melhor para streaming para ferramentas de terceiros e SIEMs. Veja como criar um stream do Firehose.
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:
- Construir uma tabela no Athena para consultar logs no Amazon S3
- Pesquisar e analisar dados de log interativamente no Amazon CloudWatch Logs
- Criar alarmes no CloudWatch com base em padrões de ataque
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/)
Leave a Reply