Personalize os CloudWatch alertas da Amazon para AWS Network Firewall - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Personalize os CloudWatch alertas da Amazon para AWS Network Firewall

Criado por Jason Owens (AWS)

Resumo

O padrão ajuda você a personalizar os CloudWatch alertas da Amazon que são gerados por AWS Network Firewall. Você poderá usar regras predefinidas ou criar regras personalizadas que determinam a mensagem, os metadados e a gravidade dos alertas. Você pode então agir de acordo com esses alertas ou automatizar as respostas de outros serviços da Amazon, como a Amazon EventBridge.

Nesse padrão, você gera regras de firewall compatíveis com o Suricata. O Suricata é um mecanismo de detecção de ameaças de código aberto. Primeiro, você cria regras simples e depois as testa para confirmar se os CloudWatch alertas foram gerados e registrados. Depois de testar as regras com sucesso, você as modifica para definir mensagens, metadados e severidades personalizados e, em seguida, testa mais uma vez para confirmar as atualizações.

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS.

  • AWS Command Line Interface (AWS CLI) instalado e configurado em sua estação de trabalho Linux, macOS ou Windows. Para obter mais informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI.

  • AWS Network Firewall instalado e configurado para usar o CloudWatch Logs. Para obter mais informações, consulte Registrar tráfego de rede de AWS Network Firewall.

  • Uma instância do Amazon Elastic Compute Cloud (Amazon EC2) em uma sub-rede privada de uma nuvem privada virtual (VPC) protegida pelo Firewall de Rede.

Versões do produto

  • Para a versão 1 do AWS CLI, use 1.18.180 ou posterior. Para a versão 2 do AWS CLI, use 2.1.2 ou posterior.

  • O arquivo classification.config do Suricata versão 5.0.2. Para obter uma cópia desse arquivo de configuração, consulte a seção Informações adicionais.

Arquitetura

Uma solicitação de EC2 instância gera um alerta no Network Firewall, que encaminha o alerta para CloudWatch

O diagrama da arquitetura mostra o seguinte fluxo de trabalho:

  1. Uma EC2 instância da Amazon em uma sub-rede privada faz uma solicitação usando curl ou Wget.

  2. O Network Firewall processa o tráfego e gera um alerta.

  3. O Network Firewall envia os alertas registrados para o CloudWatch Logs.

Ferramentas

Serviços da AWS

  • CloudWatchA Amazon ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.

  • O Amazon CloudWatch Logs ajuda você a centralizar os registros de todos os seus sistemas e aplicativos, Serviços da AWS para que você possa monitorá-los e arquivá-los com segurança.

  • AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.

  • AWS Network Firewallé um serviço gerenciado e estável de firewall de rede e detecção e prevenção de intrusões para nuvens privadas virtuais (VPCs) no. Nuvem AWS 

Outras ferramentas

  • curl é uma ferramenta e biblioteca de linha de comando de código aberto.

  • GNU Wget é uma ferramenta de linha de comando gratuita.

Épicos

TarefaDescriçãoHabilidades necessárias

Criar regras.

  1. Em um editor de texto, crie uma lista de regras que você deseja adicionar ao firewall. Cada regra deverá estar em uma linha separada. O valor no parâmetro classtype é do arquivo de configuração padrão da classificação Suricata. Para ver o conteúdo completo do arquivo de configuração, consulte a seção Informações adicionais. Veja os dois exemplos de regras a seguir.

    alert http any any -> any any (content:"badstuff"; classtype:misc-activity; sid:3; rev:1;) alert http any any -> any any (content:"morebadstuff"; classtype:bad-unknown; sid:4; rev:1;)
  2. Salve as regras em um arquivo chamado custom.rules.

Administrador de sistemas da AWS, administrador de rede

Criar o grupo de regras.

No AWS CLI, insira o seguinte comando. Isso cria o grupo de regras.

❯ aws network-firewall create-rule-group \ --rule-group-name custom --type STATEFUL \ --capacity 10 --rules file://custom.rules \ --tags Key=environment,Value=development

Veja a seguir um exemplo de saída. Anote o RuleGroupArn, que você vai precisar em uma etapa posterior.

{ "UpdateToken": "4f998d72-973c-490a-bed2-fc3460547e23", "RuleGroupResponse": { "RuleGroupArn": "arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom", "RuleGroupName": "custom", "RuleGroupId": "238a8259-9eaf-48bb-90af-5e690cf8c48b", "Type": "STATEFUL", "Capacity": 10, "RuleGroupStatus": "ACTIVE", "Tags": [ { "Key": "environment", "Value": "development" } ] }
Administrador de sistemas AWS
TarefaDescriçãoHabilidades necessárias

Obtenha o ARN da política de firewall.

No AWS CLI, insira o seguinte comando. Isto retorna o nome do recurso da Amazon (ARN) da política de firewall. Registre o ARN para uso mais tarde nesse padrão.

❯ aws network-firewall describe-firewall \ --firewall-name aws-network-firewall-anfw \ --query 'Firewall.FirewallPolicyArn'

Veja o seguinte exemplo de ARN retornado por esse comando.

"arn:aws:network-firewall:us-east-2:1234567890:firewall-policy/firewall-policy-anfw"
Administrador de sistemas AWS

Atualizar a política de firewall.

No editor de texto, copie e cole o código a seguir. Substitua <RuleGroupArn> pelo valor que você registrou no épico anterior. Salve o arquivo como firewall-policy-anfw.json.

{ "StatelessDefaultActions": [ "aws:forward_to_sfe" ], "StatelessFragmentDefaultActions": [ "aws:forward_to_sfe" ], "StatefulRuleGroupReferences": [ { "ResourceArn": "<RuleGroupArn>" } ] }

Digite o seguinte comando no AWS CLI. Esse comando requer um token de atualização para adicionar as novas regras. O token é usado para confirmar que a política não foi alterada desde a última vez que você a recuperou.

UPDATETOKEN=(`aws network-firewall describe-firewall-policy \ --firewall-policy-name firewall-policy-anfw \ --output text --query UpdateToken`) aws network-firewall update-firewall-policy \ --update-token $UPDATETOKEN \ --firewall-policy-name firewall-policy-anfw \ --firewall-policy file://firewall-policy-anfw.json
Administrador de sistemas AWS

Confirme as atualizações da política.

(Opcional) Se você quiser confirmar que as regras foram adicionadas e visualizar o formato da política, digite o seguinte comando no AWS CLI.

❯ aws network-firewall describe-firewall-policy \ --firewall-policy-name firewall-policy-anfw \ --query FirewallPolicy

Veja a seguir um exemplo de saída.

{ "StatelessDefaultActions": [ "aws:forward_to_sfe" ], "StatelessFragmentDefaultActions": [ "aws:forward_to_sfe" ], "StatefulRuleGroupReferences": [ { "ResourceArn": "arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom" } ] }
Administrador de sistemas AWS
TarefaDescriçãoHabilidades necessárias

Gere alertas para testes.

  1. Faça login em uma estação de trabalho de teste na sub-rede do firewall.

  2. Insira os comandos que devem gerar alertas. Por exemplo, você poderá usar o wget ou o curl.

    wget -U "badstuff" http://www.amazon.com -o /dev/null
    curl -A "morebadstuff" http://www.amazon.com -o /dev/null
Administrador de sistemas AWS

Valide se os alertas estão registrados.

  1. Abra o console de CloudWatch .

  2. Navegue até o grupo de logs e o stream corretos. Para obter mais informações, consulte Exibir dados de registro enviados para o CloudWatch Logs (documentação de CloudWatch registros).

  3. Confirme se os eventos de logs são semelhantes aos exemplos a seguir. Os exemplos mostram somente a parte relevante do alerta.

    Exemplo 1

            "alert": {             "action": "allowed",             "signature_id": 3,             "rev": 1,             "signature": "",             "category": "Misc activity",             "severity": 3         }

    Exemplo 2

            "alert": {             "action": "allowed",             "signature_id": 4,             "rev": 1,             "signature": "",             "category": "Potentially Bad Traffic",             "severity": 2         }
Administrador de sistemas AWS
TarefaDescriçãoHabilidades necessárias

Atualize as regras do firewall.

  1. Em um editor de texto, abra o arquivo custom.rules.

  2. Altere a primeira regra para ser semelhante à regra a seguir. Essa regra deverá ser inserida em uma única linha no arquivo.

    alert http any any -> any any (msg:"Watch out - Bad Stuff!!"; content:"badstuff"; classtype:misc-activity; priority:2; sid:3; rev:2; metadata:custom-field-2 Danger!, custom-field More Info;)

    Isso realiza as seguintes alterações na regra:

    • Adiciona uma string msg (site da Suricata) que fornece informações de texto sobre a assinatura ou o alerta. No alerta gerado, isso é mapeado para a assinatura. 

    • Ajusta a prioridade padrão (site da Suricata) de misc-activity, de 3 para 2. Para obter os valores padrão dos vários classtypes, consulte a seção Informações adicionais.

    • Adiciona metadados personalizados (site da Suricata) ao alerta. Essas são informações adicionais que são adicionadas à assinatura. É recomendável usar pares de chave-valor.

    • Altera o rev (site da Suricata) de 1 para 2. Isso representa a versão da assinatura.

Administrador de sistemas AWS

Atualizar o grupo de regras.

No AWS CLI, execute os seguintes comandos. Use o ARN da sua política de firewall. Esses comandos obtêm um token de atualização e atualizam o grupo de regras com as alterações da regra.

❯ UPDATETOKEN=(`aws network-firewall \ describe-rule-group \ --rule-group-arn arn:aws:network-firewall:us-east-2:123457890:stateful-rulegroup/custom \ --output text --query UpdateToken`)
❯ aws network-firewall update-rule-group \ --rule-group-arn arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom \ --rules file://custom.rules \ --update-token $UPDATETOKEN

Veja a seguir um exemplo de saída.

{ "UpdateToken": "7536939f-6a1d-414c-96d1-bb28110996ed", "RuleGroupResponse": { "RuleGroupArn": "arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom", "RuleGroupName": "custom", "RuleGroupId": "238a8259-9eaf-48bb-90af-5e690cf8c48b", "Type": "STATEFUL", "Capacity": 10, "RuleGroupStatus": "ACTIVE", "Tags": [ { "Key": "environment", "Value": "development" } ] } }
Administrador de sistemas AWS
TarefaDescriçãoHabilidades necessárias

Gere um alerta para testes.

  1. Faça login em uma estação de trabalho de teste na sub-rede do firewall.

  2. Insira um comando que deveria gerar um alerta. Por exemplo, você poderá usar o curl.

    curl -A "badstuff" http://www.amazon.com -o /dev/null
Administrador de sistemas AWS

Valide o alerta alterado.

  1. Abra o console de CloudWatch .

  2. Navegue até o grupo de logs e o stream corretos.

  3. Confirme se o evento de logs é semelhante ao exemplo a seguir. O exemplo mostra somente a parte relevante do alerta.

    "alert": {     "action": "allowed",     "signature_id": 3,     "rev": 2,     "signature": "Watch out - Bad Stuff!!",     "category": "Misc activity",     "severity": 2,     "metadata": {         "custom-field": [             "More Info"         ],         "custom-field-2": [             "Danger!"         ]     } }
Administrador de sistemas AWS

Recursos relacionados

Referências

Tutoriais e vídeos

Mais informações

Veja a seguir o arquivo de configuração de classificação do Suricata 5.0.2. Essas classificações são usadas ao criar as regras de firewall.

# config classification:shortname,short description,priority config classification: not-suspicious,Not Suspicious Traffic,3 config classification: unknown,Unknown Traffic,3 config classification: bad-unknown,Potentially Bad Traffic, 2 config classification: attempted-recon,Attempted Information Leak,2 config classification: successful-recon-limited,Information Leak,2 config classification: successful-recon-largescale,Large Scale Information Leak,2 config classification: attempted-dos,Attempted Denial of Service,2 config classification: successful-dos,Denial of Service,2 config classification: attempted-user,Attempted User Privilege Gain,1 config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1 config classification: successful-user,Successful User Privilege Gain,1 config classification: attempted-admin,Attempted Administrator Privilege Gain,1 config classification: successful-admin,Successful Administrator Privilege Gain,1 # NEW CLASSIFICATIONS config classification: rpc-portmap-decode,Decode of an RPC Query,2 config classification: shellcode-detect,Executable code was detected,1 config classification: string-detect,A suspicious string was detected,3 config classification: suspicious-filename-detect,A suspicious filename was detected,2 config classification: suspicious-login,An attempted login using a suspicious username was detected,2 config classification: system-call-detect,A system call was detected,2 config classification: tcp-connection,A TCP connection was detected,4 config classification: trojan-activity,A Network Trojan was detected, 1 config classification: unusual-client-port-connection,A client was using an unusual port,2 config classification: network-scan,Detection of a Network Scan,3 config classification: denial-of-service,Detection of a Denial of Service Attack,2 config classification: non-standard-protocol,Detection of a non-standard protocol or event,2 config classification: protocol-command-decode,Generic Protocol Command Decode,3 config classification: web-application-activity,access to a potentially vulnerable web application,2 config classification: web-application-attack,Web Application Attack,1 config classification: misc-activity,Misc activity,3 config classification: misc-attack,Misc Attack,2 config classification: icmp-event,Generic ICMP event,3 config classification: inappropriate-content,Inappropriate Content was Detected,1 config classification: policy-violation,Potential Corporate Privacy Violation,1 config classification: default-login-attempt,Attempt to login by a default username and password,2 # Update config classification: targeted-activity,Targeted Malicious Activity was Detected,1 config classification: exploit-kit,Exploit Kit Activity Detected,1 config classification: external-ip-check,Device Retrieving External IP Address Detected,2 config classification: domain-c2,Domain Observed Used for C2 Detected,1 config classification: pup-activity,Possibly Unwanted Program Detected,2 config classification: credential-theft,Successful Credential Theft Detected,1 config classification: social-engineering,Possible Social Engineering Attempted,2 config classification: coin-mining,Crypto Currency Mining Activity Detected,2 config classification: command-and-control,Malware Command and Control Activity Detected,1