Passen Sie CloudWatch Amazon-Benachrichtigungen für die AWS Network Firewall an - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Passen Sie CloudWatch Amazon-Benachrichtigungen für die AWS Network Firewall an

Erstellt von Jason Owens () AWS

Übersicht

Das Muster hilft Ihnen bei der Anpassung der CloudWatch Amazon-Warnmeldungen, die von der Amazon Web Services (AWS) Network Firewall generiert werden. Sie können vordefinierte Regeln verwenden oder benutzerdefinierte Regeln erstellen, die die Nachricht, die Metadaten und den Schweregrad der Warnungen bestimmen. Sie können dann auf diese Benachrichtigungen reagieren oder die Antworten anderer Amazon-Dienste wie Amazon automatisieren EventBridge.

In diesem Muster generieren Sie Suricata-kompatible Firewall-Regeln. Suricata ist eine Open-Source-Engine zur Erkennung von Bedrohungen. Sie erstellen zunächst einfache Regeln und testen sie dann, um sicherzustellen, dass die CloudWatch Warnungen generiert und protokolliert wurden. Nachdem Sie die Regeln erfolgreich getestet haben, ändern Sie sie, um benutzerdefinierte Meldungen, Metadaten und Schweregrade zu definieren. Anschließend testen Sie erneut, um die Aktualisierungen zu bestätigen.

Voraussetzungen und Einschränkungen

Voraussetzungen

Produktversionen

Architektur

Zieltechnologie-Stack

  • Network Firewall

  • CloudWatch Amazon-Protokolle

Zielarchitektur

Eine EC2 Instanzanforderung generiert eine Warnung in der Network Firewall, die die Warnung weiterleitet an CloudWatch

Das Architekturdiagramm zeigt den folgenden Arbeitsablauf:

  1. Eine EC2 Instanz in einem privaten Subnetz stellt eine Anfrage, indem sie entweder curl oder Wget verwendet.

  2. Die Network Firewall verarbeitet den Datenverkehr und generiert eine Warnung.

  3. Die Network Firewall sendet die protokollierten Warnungen an CloudWatch Logs.

Tools

AWS-Services

  • Amazon CloudWatch hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.

  • Amazon CloudWatch Logs hilft Ihnen dabei, die Protokolle all Ihrer Systeme, Anwendungen und AWS Dienste zu zentralisieren, sodass Sie sie überwachen und sicher archivieren können.

  • AWSCommand Line Interface (AWSCLI) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können.

  • AWSNetwork Firewall ist ein zustandsorientierter, verwalteter Dienst zur Netzwerk-Firewall sowie zur Erkennung und Verhinderung von Eindringlingen für virtuelle private Clouds (VPCs) in der AWS Cloud. 

Andere Tools und Dienste

  • curl — curl ist ein Open-Source-Befehlszeilentool und eine Bibliothek.

  • Wget — GNU Wget ist ein kostenloses Befehlszeilentool.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen von Regeln.
  1. Erstellen Sie in einem Texteditor eine Liste von Regeln, die Sie der Firewall hinzufügen möchten. Jede Regel muss sich in einer separaten Zeile befinden. Der Wert im classtype Parameter stammt aus der standardmäßigen Konfigurationsdatei für die Suricata-Klassifikation. Den vollständigen Inhalt der Konfigurationsdatei finden Sie im Abschnitt Zusätzliche Informationen. Im Folgenden finden Sie zwei Beispiele für Regeln.

    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. Speichern Sie die Regeln in einer Datei mit dem Namencustom.rules.

AWSSystemadministrator, Netzwerkadministrator
Erstellen Sie die Regelgruppe.

Geben Sie im AWS CLI den folgenden Befehl ein. Dadurch wird die Regelgruppe erstellt.

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

Im Folgenden finden Sie eine Beispielausgabe. Notieren Sie sich dieRuleGroupArn, die Sie in einem späteren Schritt benötigen.

{     "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"             }         ]     }
AWSSystemadministrator
AufgabeBeschreibungErforderliche Fähigkeiten
Informieren Sie sich ARN über die Firewall-Richtlinie.

Geben Sie im AWS CLI den folgenden Befehl ein. Dadurch wird der Amazon-Ressourcenname (ARN) der Firewall-Richtlinie zurückgegeben. Notieren Sie das, ARN damit es später in diesem Muster verwendet werden kann.

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

Das Folgende ist ein BeispielARN, das von diesem Befehl zurückgegeben wird.

"arn:aws:network-firewall:us-east-2:1234567890:firewall-policy/firewall-policy-anfw"
AWSSystemadministrator
Aktualisieren Sie die Firewall-Richtlinie.

Kopieren Sie in einem Texteditor den folgenden Code und fügen Sie ihn ein. Ersetze ihn <RuleGroupArn> durch den Wert, den du im vorherigen Epos aufgezeichnet hast. Speichern Sie die Datei als firewall-policy-anfw.json.

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

Geben Sie den folgenden Befehl in die ein AWSCLI. Für diesen Befehl ist ein Aktualisierungstoken erforderlich, um die neuen Regeln hinzuzufügen. Das Token wird verwendet, um zu bestätigen, dass sich die Richtlinie seit dem letzten Abruf nicht geändert hat.

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
AWSSystemadministrator
Bestätigen Sie die Richtlinienaktualisierungen.

(Optional) Wenn Sie überprüfen möchten, ob die Regeln hinzugefügt wurden, und das Richtlinienformat anzeigen möchten, geben Sie den folgenden Befehl in die Datei ein AWSCLI.

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

Im Folgenden finden Sie eine Beispielausgabe.

{     "StatelessDefaultActions": [         "aws:forward_to_sfe"     ],     "StatelessFragmentDefaultActions": [         "aws:forward_to_sfe"     ],     "StatefulRuleGroupReferences": [         {             "ResourceArn": "arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom"         }     ] }
AWSSystemadministrator
AufgabeBeschreibungErforderliche Fähigkeiten
Generieren Sie Benachrichtigungen zum Testen.
  1. Melden Sie sich bei einer Test-Workstation im Firewall-Subnetz an.

  2. Geben Sie Befehle ein, die Warnmeldungen generieren sollen. Sie können beispielsweise wget oder verwendencurl.

    wget -U "badstuff" http://www.amazon.com -o /dev/null
    curl -A "morebadstuff" http://www.amazon.com -o /dev/null
AWSSystemadministrator
Stellen Sie sicher, dass die Warnungen protokolliert wurden.
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/

  2. Navigieren Sie zur richtigen Protokollgruppe und zum Stream. Weitere Informationen finden Sie unter An Logs gesendete Protokolldaten anzeigen ( CloudWatch CloudWatch Logs-Dokumentation).

  3. Vergewissern Sie sich, dass die protokollierten Ereignisse den folgenden Beispielen ähneln. Die Beispiele zeigen nur den relevanten Teil der Warnung.

    Beispiel 1

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

    Beispiel 2

            "alert": {             "action": "allowed",             "signature_id": 4,             "rev": 1,             "signature": "",             "category": "Potentially Bad Traffic",             "severity": 2         }
AWSSystemadministrator
AufgabeBeschreibungErforderliche Fähigkeiten
Aktualisieren Sie die Firewall-Regeln.
  1. Öffnen Sie die Datei custom.rules in einem Texteditor.

  2. Ändern Sie die erste Regel so, dass sie der folgenden ähnelt. Diese Regel muss in einer einzigen Zeile in der Datei eingegeben werden.

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

    Dadurch werden die folgenden Änderungen an der Regel vorgenommen:

    • Fügt eine Zeichenfolge vom Typ msg (Suricata-Website) hinzu, die Textinformationen zur Signatur oder Warnung enthält. In der generierten Warnung wird dies der Signatur zugeordnet. 

    • Passt die Standardpriorität (Suricata-Website) misc-activity von 3 auf 2 an. Die Standardwerte der verschiedenen Optionen finden Sie im classtypes Abschnitt Zusätzliche Informationen.

    • Fügt der Warnung benutzerdefinierte Metadaten (Suricata-Website) hinzu. Dies sind zusätzliche Informationen, die der Signatur hinzugefügt werden. Es wird empfohlen, Schlüssel-Wert-Paare zu verwenden.

    • Ändert die Version (Suricata-Website) von 1 auf 2. Dies stellt die Version der Signatur dar.

AWSSystemadministrator
Aktualisieren Sie die Regelgruppe.

Führen Sie in der AWS CLI die folgenden Befehle aus. Verwenden Sie die ARN Ihrer Firewall-Richtlinie. Diese Befehle rufen ein Aktualisierungstoken ab und aktualisieren die Regelgruppe mit den Regeländerungen.

❯ 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

Im Folgenden finden Sie eine Beispielausgabe.

{     "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"             }         ]     } }
AWSSystemadministrator
AufgabeBeschreibungErforderliche Fähigkeiten
Generieren Sie eine Warnung zum Testen.
  1. Melden Sie sich bei einer Test-Workstation im Firewall-Subnetz an.

  2. Geben Sie einen Befehl ein, der eine Warnung auslösen soll. Sie können beispielsweise die Datei curl verwenden.

    curl -A "badstuff" http://www.amazon.com -o /dev/null
AWSSystemadministrator
Bestätigen Sie, dass die Warnung geändert wurde.
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/

  2. Navigieren Sie zur richtigen Protokollgruppe und zum Stream.

  3. Vergewissern Sie sich, dass das protokollierte Ereignis dem folgenden Beispiel ähnelt. Das Beispiel zeigt nur den relevanten Teil der Warnung.

    "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!"         ]     } }
AWSSystemadministrator

Zugehörige Ressourcen

Referenzen

Tutorials und Videos

Zusätzliche Informationen

Im Folgenden finden Sie die Konfigurationsdatei für die Klassifizierung von Suricata 5.0.2. Diese Klassifizierungen werden bei der Erstellung der Firewallregeln verwendet.

# 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