Personalizza CloudWatch gli avvisi Amazon per AWS Network Firewall - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Personalizza CloudWatch gli avvisi Amazon per AWS Network Firewall

Creato da Jason Owens () AWS

Ambiente: PoC o pilota

Tecnologie: rete; sicurezza, identità, conformità

Carico di lavoro: open source

AWSservizi: Amazon CloudWatch Logs; AWS Network Firewall; AWS CLI

Riepilogo

Il modello ti aiuta a personalizzare gli CloudWatch avvisi Amazon generati da Amazon Web Services (AWS) Network Firewall. Puoi utilizzare regole predefinite o creare regole personalizzate che determinano il messaggio, i metadati e la gravità degli avvisi. Puoi quindi agire in base a questi avvisi o automatizzare le risposte di altri servizi Amazon, come Amazon. EventBridge

In questo modello, si generano regole firewall compatibili con Suricata. Suricata è un motore di rilevamento delle minacce open source. Per prima cosa devi creare regole semplici e poi testarle per confermare che CloudWatch gli avvisi vengano generati e registrati. Dopo aver testato con successo le regole, le modifichi per definire messaggi, metadati e livelli di severità personalizzati, quindi esegui nuovamente il test per confermare gli aggiornamenti.

Prerequisiti e limitazioni

Prerequisiti

Versioni del prodotto

Architettura

Stack tecnologico Target

  • Network Firewall

  • CloudWatch Registri Amazon

Architettura Target

Una richiesta di EC2 istanza genera un avviso in Network Firewall, che inoltra l'avviso a CloudWatch

Il diagramma dell'architettura mostra il seguente flusso di lavoro:

  1. Un'EC2istanza in una sottorete privata effettua una richiesta utilizzando curl o Wget.

  2. Network Firewall elabora il traffico e genera un avviso.

  3. Network Firewall invia gli avvisi registrati ai CloudWatch registri.

Strumenti

AWSservizi

  • Amazon ti CloudWatch aiuta a monitorare i parametri delle tue AWS risorse e delle applicazioni su cui esegui AWS in tempo reale.

  • Amazon CloudWatch Logs ti aiuta a centralizzare i log di tutti i tuoi sistemi, applicazioni e AWS servizi in modo da poterli monitorare e archiviare in modo sicuro.

  • AWSCommand Line Interface (AWSCLI) è uno strumento open source che ti aiuta a interagire con i AWS servizi tramite comandi nella shell della riga di comando.

  • AWSNetwork Firewall è un firewall di rete a stato gestito e un servizio di rilevamento e prevenzione delle intrusioni per cloud privati virtuali (VPCs) nel Cloud. AWS 

Altri strumenti e servizi

  • curl — curl è uno strumento e una libreria a riga di comando open source.

  • Wget — GNU Wget è uno strumento da riga di comando gratuito.

Epiche

AttivitàDescrizioneCompetenze richieste
Creare regole.
  1. In un editor di testo, create un elenco di regole da aggiungere al firewall. Ogni regola deve trovarsi su una riga distinta. Il valore del classtype parametro proviene dal file di configurazione di classificazione Suricata predefinito. Per il contenuto completo del file di configurazione, vedere la sezione Informazioni aggiuntive. Di seguito sono riportati due esempi di regole.

    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. Salva le regole in un file denominatocustom.rules.

AWSamministratore di sistema, amministratore di rete
Crea il gruppo di regole.

Nel AWSCLI, immettere il seguente comando. Questo crea il gruppo di regole.

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

Di seguito è riportato un esempio di output. Prendi nota diRuleGroupArn, che ti servirà in un passaggio successivo.

{     "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"             }         ]     }
AWSamministratore di sistema
AttivitàDescrizioneCompetenze richieste
Ottieni la politica ARN del firewall.

Nel AWSCLI, immettere il seguente comando. Ciò restituisce l'Amazon Resource Name (ARN) della policy del firewall. Registra il ARN codice per utilizzarlo più avanti in questo schema.

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

Di seguito è riportato un esempio ARN restituito da questo comando.

"arn:aws:network-firewall:us-east-2:1234567890:firewall-policy/firewall-policy-anfw"
AWSamministratore di sistema
Aggiorna la politica del firewall.

In un editor di testo, copia o incolla il seguente codice. Sostituiscilo <RuleGroupArn> con il valore che hai registrato nell'epopea precedente. Salva il file con nome firewall-policy-anfw.json.

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

Inserisci il seguente comando in. AWS CLI Questo comando richiede un token di aggiornamento per aggiungere le nuove regole. Il token viene utilizzato per confermare che la politica non è cambiata dall'ultima volta che l'hai recuperata.

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
AWSamministratore di sistema
Conferma gli aggiornamenti delle politiche.

(Facoltativo) Se desideri confermare che le regole sono state aggiunte e visualizzare il formato della politica, inserisci il seguente comando in AWSCLI.

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

Di seguito è riportato un esempio di output.

{     "StatelessDefaultActions": [         "aws:forward_to_sfe"     ],     "StatelessFragmentDefaultActions": [         "aws:forward_to_sfe"     ],     "StatefulRuleGroupReferences": [         {             "ResourceArn": "arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom"         }     ] }
AWSamministratore di sistema
AttivitàDescrizioneCompetenze richieste
Genera avvisi per i test.
  1. Accedi a una workstation di prova all'interno della sottorete del firewall.

  2. Immettete i comandi che dovrebbero generare avvisi. Ad esempio, puoi usare wget ocurl.

    wget -U "badstuff" http://www.amazon.com -o /dev/null
    curl -A "morebadstuff" http://www.amazon.com -o /dev/null
AWSamministratore di sistema
Verifica che gli avvisi siano registrati.
  1. Apri la console all'indirizzo CloudWatch https://console.aws.amazon.com/cloudwatch/

  2. Passa al gruppo di log e allo stream corretti. Per ulteriori informazioni, consulta Visualizzare i dati di registro inviati ai CloudWatch registri (documentazione CloudWatch sui registri).

  3. Verifica che gli eventi registrati siano simili agli esempi seguenti. Gli esempi mostrano solo la parte rilevante dell'avviso.

    Esempio 1

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

    Esempio 2

            "alert": {             "action": "allowed",             "signature_id": 4,             "rev": 1,             "signature": "",             "category": "Potentially Bad Traffic",             "severity": 2         }
AWSamministratore di sistema
AttivitàDescrizioneCompetenze richieste
Aggiorna le regole del firewall.
  1. In un editor di testo, aprire il file custom.rules.

  2. Modificate la prima regola in modo che sia simile alla seguente. Questa regola deve essere inserita su una sola riga del file.

    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;)

    Ciò apporta le seguenti modifiche alla regola:

    • Aggiunge una stringa msg (sito Web Suricata) che fornisce informazioni testuali sulla firma o sull'avviso. Nell'avviso generato, questo corrisponde alla firma. 

    • Regola la priorità predefinita (sito Web Suricata) misc-activity da 3 a 2. Per i valori predefiniti dei variclasstypes, vedere la sezione Informazioni aggiuntive.

    • Aggiunge metadati personalizzati (sito Web Suricata) all'avviso. Si tratta di informazioni aggiuntive che vengono aggiunte alla firma. Si consiglia di utilizzare coppie chiave-valore.

    • Cambia la versione di versione (sito web di Suricata) da 1 a 2. Rappresenta la versione della firma.

AWSamministratore di sistema
Aggiorna il gruppo di regole.

In AWSCLI, esegui i seguenti comandi. Utilizza la politica ARN del tuo firewall. Questi comandi ottengono un token di aggiornamento e aggiornano il gruppo di regole con le modifiche alle regole.

❯ 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

Di seguito è riportato un esempio di output.

{     "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"             }         ]     } }
AWSamministratore di sistema
AttivitàDescrizioneCompetenze richieste
Genera un avviso per il test.
  1. Accedere a una workstation di prova all'interno della sottorete del firewall.

  2. Immettete un comando che dovrebbe generare un avviso. Per esempio, è possibile utilizzare curl.

    curl -A "badstuff" http://www.amazon.com -o /dev/null
AWSamministratore di sistema
Convalida l'avviso modificato.
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/

  2. Passa al gruppo di log e allo stream corretti.

  3. Conferma che l'evento registrato è simile all'esempio seguente. L'esempio mostra solo la parte rilevante dell'avviso.

    "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!"         ]     } }
AWSamministratore di sistema

Risorse correlate

Riferimenti

Tutorial e video

Informazioni aggiuntive

Di seguito è riportato il file di configurazione della classificazione di Suricata 5.0.2. Queste classificazioni vengono utilizzate durante la creazione delle regole del 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