Publicar logs de fluxo no CloudWatch Logs - Amazon Virtual Private Cloud

Publicar logs de fluxo no CloudWatch Logs

Os logs de fluxo podem publicar dados de log de fluxo diretamente no Amazon CloudWatch.

Ao publicar no CloudWatch Logs, os dados de log de fluxo são publicados em um grupo de logs, e cada interface de rede tem um stream de logs exclusivo no grupo de logs. Os fluxos de log contêm registros de log de fluxo. Você pode criar vários logs de fluxo que publicam dados no mesmo grupo de logs. Se houver uma mesma interface de rede em um ou mais logs de fluxo no mesmo grupo de logs, haverá um stream misto de logs. Se tiver especificado que um log de fluxo deve capturar tráfego rejeitado e outro log de fluxo deve capturar o tráfego aceito, o stream misto de logs capturará todos os tráfegos.

No CloudWatch Logs, o campo timestamp (carimbo de data/hora) corresponde à hora de início capturada no registro de log do fluxo. O campo ingestionTime (Tempo de consumo) indica a data e a hora em que o registro de log do fluxo foi recebido pelo CloudWatch Logs. Esse timestamp é posterior à hora de término capturada no registro de log do fluxo.

Para obter mais informações sobre o CloudWatch Logs, consulte Logs sent to CloudWatch Logs (Logs enviados ao CloudWatch Logs) no Guia do usuário do Amazon CloudWatch Logs.

Preços

As cobranças de ingestão e arquivamento de dados para logs vendidos se aplicam quando você publica logs de fluxo no CloudWatch Logs. Para obter mais informações, abra Amazon CloudWatch Pricing (Preços do Amazon CloudWatch), selecione Logs e encontre Vended Logs (Logs vendidos).

Perfil do IAM para publicar logs de fluxo no CloudWatch Logs

A função do IAM associada ao log de fluxo deve ter permissões suficientes para publicar logs de fluxo para o grupo de logs especificado no CloudWatch Logs. A função do IAM deve pertencer à sua conta da AWS.

A política do IAM anexada à sua função do IAM deve incluir pelo menos as permissões a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" } ] }

Verifique se a sua função tem a política de confiança a seguir, que permite que o serviço de logs de fluxo assuma a função.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Recomendamos o uso das chaves de condição aws:SourceAccount e aws:SourceArn para se proteger contra O problema do agente confuso. Por exemplo, você poderia adicionar o bloco de condições a seguir na política de confiança anterior. A conta de origem é o proprietário do log de fluxo e o ARN de origem é o ARN do log de fluxo. Se você não souber o ID do log de fluxo, poderá substituir essa parte do ARN por um curinga (*) e, em seguida, atualizar a política depois de criar o log de fluxo.

"Condition": { "StringEquals": { "aws:SourceAccount": "account_id" }, "ArnLike": { "aws:SourceArn": "arn:aws:ec2:region:account_id:vpc-flow-log/flow-log-id" } }

Criar um perfil do IAM para logs de fluxo

Você pode atualizar um perfil existente conforme descrito acima. Como alternativa, você pode usar o seguinte procedimento para criar um novo perfil para usar com os logs de fluxo. Você especificará esse perfil ao criar o log de fluxo.

Como criar uma função do IAM para logs de fluxo

  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Policies (Políticas).

  3. Escolha Create policy (Criar política).

  4. Na página Create policy (Criar política) faça o seguinte:

    1. Selecione JSON.

    2. Substitua o conteúdo dessa janela pela política de permissões no início desta seção.

    3. Selecione Next: Tags (Próximo: tags) e Next: Review (Próximo: revisar).

    4. Insira um nome e uma descrição opcional para a política e escolha Create policy (Criar política).

  5. No painel de navegação, escolha Roles.

  6. Selecione Create role.

  7. Em Trusted entity type (Tipo de entidade confiável), escolha Custom trust policy (Política de confiança personalizada). Em Custom trust policy (Tipo de entidade confiável), substitua"Principal": {}, pelo seguinte e escolha Next (Próximo).

    "Principal": { "Service": "vpc-flow-logs.amazonaws.com" },
  8. Na página Add permissions (Adicionar permissões), marque a caixa de seleção correspondente à política que você criou anteriormente neste procedimento e, em seguida, escolha Next (Próximo).

  9. Insira um nome para a função e, opcionalmente, uma descrição.

  10. Selecione Create role (Criar função).

Permissões para entidades principais do IAM que publicam logs de fluxo no CloudWatch Logs

Os usuários devem ter permissões para usar a ação iam:PassRole para o perfil do IAM associado ao log de fluxo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iam:PassRole"], "Resource": "arn:aws:iam::account-id:role/flow-log-role-name" } ] }

Criar um log de fluxo que publique no CloudWatch Logs

É possível criar logs de fluxos para suas VPCs, sub-redes ou interfaces de rede. Se executar essas etapas como um usuário do IAM, verifique se você tem permissões para usar a ação iam:PassRole. Para mais informações, consulte Permissões para entidades principais do IAM que publicam logs de fluxo no CloudWatch Logs.

Pré-requisitos

Para criar um log de fluxo usando o console

  1. Faça um dos seguintes procedimentos:

  2. Escolha Actions (Ações), Create flow log (Criar log de fluxo).

  3. Em Filter (Filtrar), especifique o tipo de tráfego a ser registado. Selecione All (Todos) para registrar o tráfego aceito e rejeitado, Rejected (Rejeitado) para registrar somente o tráfego rejeitado ou Accepted (Aceito) para registrar somente o tráfego aceito.

  4. Em Maximum aggregation interval (Intervalo máximo de agregação), escolha o período máximo durante o qual um fluxo é capturado e agregado em um registro de log de fluxo.

  5. Para Destination (Destino), escolha Send to CloudWatch Logs (Enviar para o CloudWatch Logs).

  6. Para Destination log group (Grupo de log de destino), escolha o nome do grupo de log de destino que você criou.

  7. Em IAM role (Função do IAM), especifique o nome da função que tem as permissões para publicar logs no CloudWatch Logs.

  8. Para Log record format (Formato de registro de log) , selecione o formato para o registro de log de fluxo.

    • Para usar o formato padrão, escolha AWS default format (Formato padrão da ).

    • Para usar um formato personalizado, escolha Custom format (Formato personalizado) e, em seguida, selecione os campos de Log format (Formato de log) .

  9. (Opcional) Escolha Add new tag (Adicionar nova tag) para aplicar tags ao log de fluxo.

  10. Selecione Create flow log (Criar log de fluxo).

Para criar um log de fluxo usando a linha de comando

Use um dos seguintes comandos.

O exemplo de AWS CLI a seguir cria um log de fluxo que captura todo o tráfego aceito para a sub-rede especificada. Os logs de fluxo são entregues ao grupo de logs especificado. O parâmetro --deliver-logs-permission-arn especifica o perfil do IAM necessário para publicar no CloudWatch Logs.

aws ec2 create-flow-logs --resource-type Subnet --resource-ids subnet-1a2b3c4d --traffic-type ACCEPT --log-group-name my-flow-logs --deliver-logs-permission-arn arn:aws:iam::123456789101:role/publishFlowLogs

Exibir registros de log de fluxo

É possível visualizar os registros dos logs de fluxo por meio do console do CloudWatch Logs. Depois que o log de fluxo é criado, pode levar alguns minutos para ele ficar visível no console.

Para visualizar registros de log de fluxo publicados no CloudWatch Logs

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, escolha Logs, Log groups (Grupos de log).

  3. Selecione o nome do grupo de logs que contém os logs de fluxo para abrir a página de detalhes.

  4. Selecione o nome do fluxo de logs que contém os registros de log de fluxo. Para mais informações, consulte Registros de log de fluxo.

Para visualizar registros de log de fluxo publicados no CloudWatch Logs usando a linha de comando

Procurar registros de log de fluxo

É possível pesquisar os registros de log de fluxo publicados no CloudWatch Logs usando o console do CloudWatch Logs. Você pode usar filtros de métrica para filtrar registros de log de fluxo. Os registros de log de fluxo são delimitados por espaço.

Como pesquisar registros de log de fluxo usando o console do CloudWatch Logs

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, escolha Logs, Log groups (Grupos de log).

  3. Selecione o grupo de logs que contém o log de fluxo e, em seguida, selecione o fluxo de logs se você souber a interface de rede que está pesquisando. Como alternativa, escolha Search log group (Pesquisar grupo de logs). Isso pode levar algum tempo se houver muitas interfaces de rede no grupo de logs ou dependendo do intervalo de tempo selecionado.

  4. Em Filter events (Filtrar eventos), insira a string a seguir. Isso pressupõe que o registro de log de fluxo usa o formato padrão.

    [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]
  5. Modifique o filtro conforme necessário especificando valores para os campos. Os exemplos a seguir filtram por endereços IP de origem específicos.

    [version, accountid, interfaceid, srcaddr = 10.0.0.1, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus] [version, accountid, interfaceid, srcaddr = 10.0.2.*, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]

    Os exemplos a seguir filtram por porta de destino, número de bytes e se o tráfego foi rejeitado.

    [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 80 || dstport = 8080, protocol, packets, bytes, start, end, action, logstatus] [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 80 || dstport = 8080, protocol, packets, bytes >= 400, start, end, action = REJECT, logstatus]

Processar registros de log de fluxo no CloudWatch Logs

É possível trabalhar com registro de log de fluxo do mesmo modo que você trabalharia com outros eventos de coletados pelo CloudWatch Logs. Para obter mais informações sobre monitoramento de dados de log e filtros de métricas, consulte Pesquisar e filtrar dados de log no Manual do usuário do Amazon CloudWatch.

Exemplo: criação de um filtro de métricas no CloudWatch e um alarme para um log de fluxo

Neste exemplo, você tem um log de fluxo para eni-1a2b3c4d. Pode ser útil criar um alarme que o alerte se houver 10 ou mais tentativas rejeitadas de conexão à sua instância pela porta TCP 22 (SSH) no período de 1 hora. Primeiro, você deve criar um filtro de métrica que corresponda ao padrão do tráfego para o qual o alarme será criado. Depois, você pode criar um alarme para o filtro de métricas.

Para criar um filtro de métricas para tráfego SSH rejeitado e um alarme para o filtro

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, escolha Logs, Log groups (Grupos de log).

  3. Marque a caixa de seleção do grupo de log e, em seguida, escolha Actions (Ações), Create metric filter (Criar filtro de métrica).

  4. Em Filter Pattern (Padrão de filtro), insira a seguinte string.

    [version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
  5. Em Select Log Data to Test (Selecionar dados de log para teste), selecione o fluxo de logs da interface de rede. (Opcional) Para visualizar as linhas de dados de log que correspondem ao padrão do filtro, escolha Test Pattern (Padrão de teste).

  6. Quando estiver pronto, escolha Next (Avançar).

  7. Insira um nome de filtro, um namespace de métrica e o nome da métrica. Defina o valor da métrica como 1. Quando terminar, escolha Next (Avançar) e, em seguida, escolha Create metric filter (Criar filtro de métrica).

  8. No painel de navegação, escolha Alarms (Alarmes), All alarms (Todos os alarmes).

  9. Selecione Create alarm (Criar alarme).

  10. Escolha o namespace do filtro de métrica que você criou.

    Pode levar alguns minutos para uma nova métrica ser exibida no console.

  11. Selecione o nome da métrica que você criou e, em seguida. escolha Select metric (Selecionar métrica).

  12. Siga as instruções a seguir para configurar o alarme e, em seguida, escolha Next (Avançar):

    • Em Statistic (Estatística), selecione Sum (Soma). Isso garante que você esteja capturando o número total de pontos de dados do período especificado.

    • Em Period (Período), selecione 1 hour (1 hora).

    • Em Whenever (Sempre que), escolha Greater/Equal (Maior que/igual a) e insira 10 como limite.

    • Em Additional configuration (Configuração adicional), Datapoints to alarm (Pontos de dados para alarme), deixe o padrão de 1.

  13. Em Notification (Notificação), escolha um tópico existente do SNS ou Create new topic (Criar tópico) para criar um. Escolha Next (Próximo).

  14. Insira um nome e uma descrição para o alarme e selecione Next (Avançar).

  15. Quando terminar de configurar o alarme, escolha Create alarm (Criar alarme).