Wie konfiguriere ich AWS WAF, um meine Ressourcen vor häufigen Angriffen zu schützen?

Lesedauer: 6 Minute
0

Wie konfiguriere ich AWS WAF, um meine Ressourcen vor häufigen Angriffen zu schützen?

Behebung

Migrieren von AWS WAF Classic zu AWS WAF (falls zutreffend)

Wenn Sie AWS WAF Classic verwenden, wird empfohlen, zu AWS WAF zu migrieren. Um diese Migration durchzuführen, können Sie das automatisierte Migrationstool nutzen.Weitere Informationen finden Sie unter Warum zu AWS WAF migrieren?

Durchführen von Penetrationstests an Ihrer Anwendung, um Sicherheitslücken zu identifizieren

Jede Anwendung erhält ihre eigene Art von Anfragen. Daher müssen die Firewallregeln, die Ihre Anwendung schützen, individuell angepasst werden.

Führen Sie Penetrationstests für Ihre Anwendung durch, um deren spezifische Schwachstellen zu ermitteln. Weitere Informationen finden Sie unter:

Prüfen eingehender Anfragen, um benutzerdefinierte Regeln zu optimieren

Bevor Sie benutzerdefinierte Regeln zum Schutz Ihrer Anwendung erstellen, überprüfen Sie die eingehenden Anfragen in Ihrer Umgebung.

Generieren Sie zunächst Protokolle mit:

  • AWS WAF
  • Amazon CloudFront
  • Application Load Balancer
  • Amazon API Gateway

Speichern Sie diese Protokolle auf Amazon Simple Storage Service (Amazon S3). Verwenden Sie abschließend Amazon Athena, um die Protokolle abzufragen und Muster zu identifizieren. Beispielsweise könnten Sie Muster wie die folgenden sehen:

  • Anfragen an Ihre Umgebung für URIs, die nicht existieren

  • Um dieses Muster zu erkennen, müssen Sie jeden unterstützten URI kennen

  • Beispiel einer Athena-Abfrage von AWS-WAF-Protokollen, um Anfragen für jeden URI zu zählen:

SELECT count("httprequest"."uri") as URIcount, "httprequest"."uri"
FROM waf_logs
GROUP BY "httprequest"."uri"
ORDER BY URIcount DESC
  • Anfragen, die einen HTTP-Host-Header enthalten, der von Ihrem Webserver nicht unterstützt wird – ODER – Anfragen, die eine IP-Adresse anstelle des Domain-Namens Ihrer Website enthalten

  • Beispiel einer Athena-Abfrage von AWS-WAF-Protokollen, um Anfragen mit unterschiedlichen Host-Header-Werten zu zählen:

SELECT header.value as HostHeader, count(header) as count
FROM waf_logs, UNNEST(httprequest.headers) AS x(header)
WHERE "header"."name" = 'Host'
GROUP BY  header
ORDER BY count DESC

Nachdem Sie ein Muster identifiziert haben, können Sie AWS-WAF-Regeln im COUNT-Modus erstellen, um zu überprüfen, ob die Regel so konfiguriert ist, dass sie diesen Anfragen entspricht. Verschieben Sie dann die Regel in den BLOCK-Modus.

Wenn Ihre Anwendung beispielsweise nur den Host-Header „www.example.com“ unterstützt:

  • Erstellen Sie eine NOT-Übereinstimmung im HOST-Header mit dem Wert „www.example.com“
  • Setzen Sie die Aktion auf BLOCK

Nun werden alle Anfragen an Ihre Umgebung blockiert, die keinen Host-Header von „www.example.com“ haben.
Hinweis: Diese Regel blockiert auch Anfragen an den von AWS bereitgestellten vollständig qualifizierten Domänen-Namen (FQDN).

Verwenden von AWS Managed Rules zum Schutz vor häufigen Angriffen

Verwenden Sie zur Verhinderung häufiger Angriffe AWS Managed Rules, die auf die meisten Anwendungen zutreffen, einschließlich Anfragen, die

  • keinen User-Agent enthalten;
  • Bot-Anfragen darstellen;
  • „localhost“ als HTTP-Host-Header verwenden;
  • die HTTP-Methode PROPFIND verwenden.

Nehmen Sie diese Basisregelgruppen im COUNT-Modus in Ihre Web-Zugriffssteuerungsliste (Web ACL) auf. Wählen Sie in der Regelgruppe in jedem Fall die Option „Zählmodus aktivieren“. Überprüfen Sie anschließend die AWS-WAF-Protokolle und CloudWatch-Metriken, um festzustellen, ob die verwaltete Regel mit legitimem Datenverkehr übereinstimmt. Ist dies nicht der Fall, verschieben Sie die Regelgruppe in BLOCK, indem Sie „Zählmodus aktivieren“ deaktivieren. Um eine bestimmte Regel in der von AWS verwalteten Regelgruppe zu deaktivieren, wählen Sie für diese Regel die Aktion „Regeln überschreiben“ aus.

Hinweis: Einzelne Regeln in AWS Managed Rules können durch legitime Anfragen an Ihre Umgebung ausgelöst werden. Weitere Informationen finden Sie unter Wie kann ich falsch-positive Ergebnisse erkennen, die durch AWS Managed Rules verursacht werden, und sie einer Sicherheitsliste hinzufügen?

Wichtig: AWS Managed Rules dienen dem Zweck, Sie vor gängigen Internet-Bedrohungen zu schützen. Wenn die Regelgruppen von AWS Managed Rules gemäß der Dokumentation verwendet werden, bieten sie eine weitere Sicherheitsebene für Ihre Anwendungen. Die Regelgruppen von AWS Managed Rules sind jedoch nicht dazu gedacht, Ihre Verantwortlichkeiten bei der Sicherheit zu ersetzen. Diese sind von den AWS-Ressourcen bestimmt, die Sie auswählen. Sehen Sie sich das Modell der gemeinsamen Verantwortung an, um sich zu vergewissern, dass Ihre Ressourcen in AWS ordnungsgemäß geschützt sind.

Einrichten einer Baseline für Ihr AWS WAF anhand der Rate legitimer Anfragen

Verwenden Sie Amazon Athena oder Amazon Quicksight, um anhand Ihrer AWS-WAF-Protokolle Ihren Datenverkehr zu analysieren und die Anzahl der Anfragen von legitimen Client-IP-Adressen zu ermitteln. Verwenden Sie die Ergebnisse dieser Analyse, um die Rate der Anfragen eines legitimen Clients als Baseline für Ihr AWS WAF einzurichten. Richten Sie dann einen Schwellenwert ein, wenn Sie die ratenbasierte Regel für AWS WAF konfigurieren.

Beispiel einer Athena-Abfrage, die an AWS-WAF-Protokollen durchgeführt wird, um die Anzahl der Anfragen von einer einzelnen IP-Adresse (x.x.x.x) in einem bestimmten Zeitraum (16. November 2020, 9.00 bis 10.00 Uhr) zu zählen:

SELECT  "httprequest"."clientip", "count"(*) "count", "httprequest"."country"
FROM waf_logs
WHERE httprequest.clientip LIKE 'x.x.x.x' and date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') between '2020-11-16 09:00:00' and '2020-11-16 10:00:00'
GROUP BY "httprequest"."clientip", "httprequest"."country"

Beispiel einer Athena-Abfrage, die an AWS-WAF-Protokollen durchgeführt wird, um die Anzahl der Anfragen von allen IP-Adressen innerhalb desselben Zeitrahmens zu zählen:

SELECT "httprequest"."clientip", "count"(*) "count", "httprequest"."country"
FROM waf_logs
WHERE date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') between '2020-11-16 09:00:00' and '2020-11-16 10:00:00'
GROUP BY "httprequest"."clientip", "httprequest"."country"
ORDER BY "count" DESC

Verwenden der Vorlage „AWS WAF Security Automations“, um häufige Angriffe zu verhindern

Verwenden Sie die Vorlage AWS WAF Security Automations, um zusätzlichen Schutz vor häufigen Angriffen zu erhalten. Sie können beispielsweise den Schutz vor folgenden Bedrohungen aktivieren:

  • Scanner und Sonden;
  • bösartige Bots;
  • bösartige IP-Adressen.

Hinweis: Diese Lösung greift auf andere AWS-Services zurück, für deren Nutzung Kosten anfallen.

Einrichten eines Schutzes vor SQL-Injection und Cross-Site-Scripting

Verwenden Sie die integrierten Engines für SQL-Injection und Cross-Site-Scripting, um Ihre Anwendungen vor SQL-Injection- und Cross-Site-Scripting (XSS)-Angriffen zu schützen. Denken Sie daran, dass Angriffe auf verschiedene Teile der HTTP-Anfrage ausgeführt werden können, z. B. auf den HTTP-Header, die Abfragezeichenfolge oder den URI. Konfigurieren Sie die AWS-WAF-Regeln so, dass verschiedene Teile der HTTP-Anfrage anhand der integrierten Mitigation-Engines überprüft werden.

Hinweis: Regeln in den Mitigation-Engines können durch legitime Anfragen an Ihre Umgebung ausgelöst werden. Weitere Informationen finden Sie unter Wie kann ich falsch-positive Ergebnisse erkennen, die durch AWS Managed Rules verursacht werden, und sie einer Sicherheitsliste hinzufügen?

Beschränken des Zugriffs von CloudFront aus (wenn Sie AWS WAF auf CloudFront verwenden)

Einrichten eines Schutzes vor DDoS-Angriffen

Informationen zum Schutz vor DDoS-Angriffen (Distributed Denial-of-Service) finden Sie unter AWS best practices for DDoS resiliency und AWS Shield-Funktionen.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren