Direkt zum Inhalt

Wie konfiguriere ich meine Network Firewall-Regeln, um bestimmte Domains zu blockieren oder zuzulassen?

Lesedauer: 9 Minute
0

Ich möchte die AWS Network Firewall verwenden, um ausgehenden Webverkehr von Ressourcen in meiner Amazon Virtual Private Cloud (Amazon VPC) zu filtern.

Kurzbeschreibung

Die AWS Network Firewall verwendet entweder die Aktionsreihenfolge oder die strikte Bewertungsreihenfolge, um die domainbasierte Filterung für ausgehenden Webverkehr zu unterstützen. Verwende zum Konfigurieren von Regeln eine zustandsbehaftete Domainlisten-Regelgruppe oder Suricata-kompatible Zeichenfolgen. Die Domaininspektion funktioniert für HTTP- und HTTPS-Protokolle.

Bei HTTP überprüft die Firewall den Host-Header. Für HTTPS verwendet die Firewall die Server Name Indication (SNI) im TLS-Handshake. Wenn du eine Zulassungsliste für Domains verwendest, sendet die Network Firewall den Datenverkehr nur an bestimmte Domains und verwirft alle anderen Anfragen.

Die Aktionen von Domainlisten-Regelgruppen verstehen

Vermeide es, Ablehnen- oder Warnung-Domainlisten-Regelgruppen mit Zulassen-Domainlisten-Regelgruppen in einer Firewall-Richtlinie zu kombinieren, die die Standard-Aktionsreihenfolge verwendet. Die Standard-Drop-Regel, die von der Regelgruppe Zulassen hinzugefügt wird, tritt vor den Regeln Ablehnen und Warnung in Kraft.

Weitere Informationen findest du unter Suricata compatible rule strings in AWS Network Firewall (Suricata-kompatible Regelzeichenfolgen in der AWS Network Firewall) und unter Stateful domain list rule groups in AWS Network Firewall (Zustandsbehaftete Domainlisten-Regelgruppen in der AWS Network Firewall).

Lösung

Eine Domainlistengruppe für eine Richtlinie mit der Standardaktionsreihenfolge konfigurieren

Führe die folgenden Schritte aus:

  1. Erstelle eine Firewall.
  2. Öffne die Amazon VPC-Konsole.
  3. Wähle im Navigationsbereich unter Network Firewall die Option Network Firewall-Regelgruppen.
  4. Wähle Regelgruppe erstellen und dann Zustandsbehaftete Regelgruppe als Regelgruppentyp aus.
  5. Wähle für Stateful rule group format (Format der zustandsbehafteten Regelgruppe) die Option Domain-Liste aus.
    Hinweis: Du kannst die zustandsbehaftete Regelreihenfolge nicht ändern, da sie von der Richtlinie übernommen wurde. Die Regelreihenfolge wird als Aktionsreihenfolge angezeigt.
  6. Gib einen eindeutigen Regelgruppennamen ein.
  7. Gib für Kapazitätsreservierung eine geschätzte Anzahl von Domains ein, um sie in der Liste aufzunehmen.
    Hinweis: Nachdem du die Regelgruppe erstellt hast, kannst du den Wert nicht mehr ändern.
  8. Gib unter Domain-Liste für Domain-Namen-Quelle die Domain-Namen ein, die du abgleichen möchtest. Du kannst Domains als exakte Übereinstimmung definieren, z. B. abc.example.com. Du kannst sie auch als Platzhalter definieren, z. B. .example.com.
  9. Wähle für CIDR-Bereiche eine der folgenden Optionen:
    Wähle für Default (Standard) diese Option aus, wenn die Quell-IP-Adresse im selben VPC wie die Firewall vorhanden ist.
    Wähle für Custom (Benutzerdefiniert) diese Option aus, wenn die Quell-IP-Adresse in einem Remote-VPC vorhanden ist. Gib unter Quell-IP-CIDR-Bereiche die Quellsubnetze ein, die die Firewall überprüfen soll.
  10. Wähle für Protokolle HTTP und HTTPS.
  11. Wähle unter Aktion die Option Zulassen aus.
  12. (Optional) Konfiguriere Erweiterte Einstellungen und Tags.
  13. Wähle Regelgruppe erstellen.
  14. Wähle im Navigationsbereich unter Network Firewall die Option Firewall-Richtlinien.
  15. Wähle die bestehende Richtlinie für die Aktionsreihenfolge aus.
  16. Bestätige, dass die Standardaktion auf Zulassen gesetzt ist.
  17. Wähle unter Zustandsbehaftete Regelgruppen die Option Aktionen und dann Nicht verwaltete zustandsbehaftete Regelgruppen hinzufügen.
  18. Wähle die Regelgruppe aus, die du in Schritt 13 erstellt hast.

Mit der Bewertung der Aktionsreihenfolge eine Suricata-kompatible IPS-Regel für eine Richtlinie definieren

Führe die folgenden Schritte aus:

  1. Erstelle eine Firewall.
  2. Öffne die Amazon VPC-Konsole.
  3. Wähle im Navigationsbereich unter Network Firewall die Option Network Firewall-Regelgruppen.
  4. Wähle Regelgruppe erstellen und dann Zustandsbehaftete Regelgruppe als Regelgruppentyp aus.
  5. Wähle für Stateful rule group format (Format der zustandsbehafteten Regelgruppe) die Option Suricata-kompatible Regelzeichenfolge aus.
    Hinweis: Du kannst die zustandsbehaftete Regelreihenfolge nicht ändern, da sie von der Richtlinie übernommen wurde. Die Regelreihenfolge wird als Aktionsreihenfolge angezeigt.
  6. Gib einen eindeutigen Regelgruppennamen ein.
  7. Gib für Kapazitätsreservierung eine geschätzte Anzahl von Domains ein, um sie in der Liste aufzunehmen.
    Hinweis: Nachdem du die Regelgruppe erstellt hast, kannst du den Wert nicht mehr ändern.
  8. (Optional) Definiere benutzerdefinierte Regelvariablen für die Verwendung in den Suricata-Signaturen.
  9. (Optional) Definiere IP-Set-Referenzen, um sie in den Suricata-Signaturen zu verwenden.
  10. Gib unter Suricata-kompatible Regelzeichenfolge die folgenden Regeln ein:
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".amazonaws.com"; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:1; rev:1;)
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; content:"example.com"; startswith; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:2; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".amazonaws.com"; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:3; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"example.com"; startswith; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:4; rev:1;)
drop http $HOME_NET any -> $EXTERNAL_NET any (http.header_names; content:"|0d 0a|"; startswith; msg:"not matching any HTTP allowlisted FQDNs"; flow:to_server, established; sid:5; rev:1;)
drop tls $HOME_NET any -> $EXTERNAL_NET any (msg:"not matching any TLS allowlisted FQDNs"; flow:to_server, established; sid:6; rev:1;)

Hinweis: Ersetze in den vorherigen Regeln die Domains durch die Domains, die du einbeziehen möchtest. 11. (Optional) Konfiguriere Erweiterte Einstellungen und Tags. 12. Wähle Regelgruppe erstellen. 13. Wähle im Navigationsbereich unter Network Firewall die Option Firewall-Richtlinien. 14. Wähle die bestehende Richtlinie für die Aktionsreihenfolge aus. 15. Bestätige, dass die Standardaktion auf Zulassen gesetzt ist. 16. Wähle unter Zustandsbehaftete Regelgruppen die Option Aktionen und dann Nicht verwaltete zustandsbehaftete Regelgruppen hinzufügen. 17. Wähle die Regelgruppe aus, die du in Schritt 12 erstellt hast.

Hinweis: Domain-Regeln enthalten das Schlüsselwort established flow, aber es berücksichtigt möglicherweise nicht alle Randfälle, in denen der Paketaustausch außerhalb des Flusses stattfindet. Bevor du ein Beispiel für eine Regelliste verwendest, teste die Regel, um sicherzustellen, dass sie wie erwartet funktioniert.

Eine Domainlisten-Regelgruppe für eine Richtlinie mit der strengen Bewertungsreihenfolge konfigurieren

Führe die folgenden Schritte aus:

  1. Erstelle eine Firewall.
  2. Öffne die Amazon VPC-Konsole.
  3. Wähle im Navigationsbereich unter Network Firewall die Option Network Firewall-Regelgruppen.
  4. Wähle Regelgruppe erstellen und dann Zustandsbehaftete Regelgruppe als Regelgruppentyp aus.
  5. Wähle für Stateful rule group format (Format der zustandsbehafteten Regelgruppe) die Option Domain-Liste aus.
    Hinweis: Du kannst die zustandsbehaftete Regelreihenfolge nicht ändern, da sie von der Richtlinie übernommen wurde. Die Regelreihenfolge wird als Streng angezeigt.
  6. Gib einen eindeutigen Regelgruppennamen ein.
  7. Gib für Kapazitätsreservierung eine geschätzte Anzahl von Domains ein, um sie in der Liste aufzunehmen.
    Hinweis: Nachdem du die Regelgruppe erstellt hast, kannst du den Wert nicht mehr ändern.
  8. Gib unter Domain-Liste für Domain-Namen-Quelle die Domain-Namen ein, die du abgleichen möchtest. Du kannst Domains als exakte Übereinstimmung definieren, z. B. abc.example.com. Du kannst sie auch als Platzhalter definieren, z. B. .example.com.
  9. Wähle für CIDR-Bereiche eine der folgenden Optionen:
    Wähle für Default (Standard) diese Option aus, wenn die Quell-IP-Adresse im selben VPC wie die Firewall vorhanden ist.
    Wähle für Custom (Benutzerdefiniert) diese Option aus, wenn die Quell-IP-Adresse in einem Remote-VPC vorhanden ist. Gib unter Quell-IP-CIDR-Bereiche die Quellsubnetze ein, die die Firewall überprüfen soll.
  10. Wähle für Protokolle HTTP und HTTPS.
  11. Wähle unter Aktion die Option Zulassen.
  12. Wähle Regelgruppe erstellen.
  13. Wähle im Navigationsbereich unter Network Firewall die Option Firewall-Richtlinien.
  14. Wähle die bestehende Richtlinie mit strenger Reihenfolge aus.
  15. Wähle für Stateful rule evaluation order and default actions (Reihenfolge der zustandsbehafteten Regelbewertung und Standardaktionen) die Option Edit (Bearbeiten).
  16. Wähle unter Standardaktionen die Option Verwerfen etabliert aus.
  17. Wähle Speichern aus.

Eine Suricata-kompatible IPS-Regel für eine Richtlinie mit einer strengen Bewertungsreihenfolge definieren

Führe die folgenden Schritte aus:

  1. Erstelle eine Firewall.
  2. Öffne die Amazon VPC-Konsole.
  3. Wähle im Navigationsbereich unter Network Firewall die Option Network Firewall-Regelgruppen.
  4. Wähle Regelgruppe erstellen und dann Zustandsbehaftete Regelgruppe als Regelgruppentyp aus.
  5. Wähle für Stateful rule group format (Format der zustandsbehafteten Regelgruppe) die Option Suricata-kompatible Regelzeichenfolge aus.
    Hinweis: Du kannst die zustandsbehaftete Regelreihenfolge nicht ändern, da sie von der Richtlinie übernommen wurde. Die Regelreihenfolge wird als Streng angezeigt.
  6. Gib einen eindeutigen Regelgruppennamen ein.
  7. Gib für Kapazitätsreservierung eine geschätzte Anzahl von Domains ein, um sie in der Liste aufzunehmen.
    Hinweis: Nachdem du die Regelgruppe erstellt hast, kannst du den Wert nicht mehr ändern.
  8. (Optional) Definiere benutzerdefinierte Regelvariablen, um sie in den von dir definierten Suricata-Signaturen zu verwenden.
  9. (Optional) Definiere IP-Set-Referenzen, um sie in den von dir definierten Suricata-Signaturen zu verwenden.
  10. Gib unter Suricata-kompatible Regelzeichenfolge die folgenden Regeln ein:
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".amazonaws.com"; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:1; rev:1;)
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; content:"example.com"; startswith; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:2; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".amazonaws.com"; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:3; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"example.com"; startswith; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:4; rev:1;)

Hinweis: Ersetze in den vorherigen Regeln die Domains durch die Domains, die du einbeziehen möchtest. 11. (Optional) Konfiguriere Erweiterte Einstellungen und Tags. 12. Wähle Regelgruppe erstellen. 13. Wähle im Navigationsbereich unter Network Firewall die Option Firewall-Richtlinien. 14. Wähle deine Richtlinie mit strenger Reihenfolge aus. 15. Wähle für Stateful rule evaluation order and default actions (Reihenfolge der zustandsbehafteten Regelbewertung und Standardaktionen) die Option Edit (Bearbeiten). 16. Wähle unter Standardaktionen die Option Verwerfen etabliert aus. 17. Wähle Speichern aus.

Hinweis: Domain-Regeln enthalten das Schlüsselwort established flow. Dieses Schlüsselwort erfasst möglicherweise nicht alle Randfälle, in denen Pakete außerhalb normaler Verbindungsflüsse ausgetauscht werden. Bevor du ein Beispiel für eine Regelliste verwendest, teste die Regel, um sicherzustellen, dass sie wie erwartet funktioniert.

Konfigurationen testen

Um zu testen, ob deine Konfigurationen funktionieren, führe curl-Befehle für die angegebenen Domains aus.

Der folgende Beispielbefehl testet den HTTPS-Zugriff auf die Domain https://example.com:

curl -v --silent https://example.com --stderr - | grep 200

Wenn der Zugriff erlaubt ist, erhältst du die folgende Ausgabe:

< HTTP/2 200

Der folgende Beispielbefehl testet den HTTP-Zugriff auf https://www.google.com:

curl -v http://www.google.com

Die folgende Beispielausgabe zeigt, dass Firewallregeln den HTTP-Datenverkehr blockieren, weil die Verbindung bei der GET-Anfrage beendet wird:

* Trying [IP_ADDRESS]...
* Connected to www.google.com ([IP_ADDRESS]) port 80 (#0)
> GET / HTTP/1.1
> Host: www.google.com
> User-Agent: curl/7.79.1
> Accept: */*

Der folgende Beispielbefehl testet den HTTPS-Zugriff auf https://www.google.com:

curl -v https://www.google.com

Die folgende Beispielausgabe zeigt, dass der HTTPS-Datenverkehr blockiert ist, weil die Verbindung während des TLS-Handshakes unterbrochen wird:

* Trying [IP_ADDRESS]...
* Connected to www.google.com ([IP_ADDRESS]) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):

Weitere Informationen

Firewall policies in AWS Network Firewall (Firewall-Richtlinien in AWS Network Firewall)

Creating a stateful rule group (Erstellen einer statusbehafteten Regelgruppe)

Examples of stateful rules for AWS Network Firewall (Beispiele für zustandsbehaftete Regeln für AWS Network Firewall)

Stateful domain list rule groups in AWS Network Firewall (Statusbehaftete Domainlisten-Regelgruppen in AWS Network Firewall)

Suricata compatible rule strings in AWS Network Firewall (Suricata-kompatible Regelzeichenfolgen in AWS Network Firewall)

AWS OFFICIALAktualisiert vor 6 Monaten