Umgebung zur Verwendung der Web Application Firewall vorbereiten

Bereiten Sie Ihre Umgebung vor, damit Sie Ihre Anwendung mit dem Web Application Firewall-(WAF-) Service von Oracle Cloud Infrastructure sichern können.

Bevor Sie beginnen

Bevor Sie die WAF Policy erstellen, müssen Sie die öffentliche IP-Adresse des employee-helidon-lb Load Balancers kennen, der bereits bereitgestellt wurde. Siehe Microservices-basierte RESTful Java-Anwendung in Oracle Cloud bereitstellen.

Ermitteln und notieren Sie die EXTERNAL-IP-Adresse des Load Balancers der Beispielanwendung "Mitarbeiter". Dies ist erforderlich, um die WAF Policy später zu erstellen.

kubectl get service employee-helidon-lb

Der vorhergehende Befehl muss eine Ausgabe wie die folgende zurückgeben:

NAME                  TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
employee-helidon-lb   LoadBalancer   10.X.X.X       132.X.X.X        80:31437/TCP   5m

EXTERNAL-IP, das von Kubernetes angezeigt wird, ist identisch mit der öffentlichen IP-Adresse, die angezeigt wird, wenn Sie zu Core > Networking > Load Balancers in der Oracle Cloud Infrastructure-Konsole navigieren.

WAF Policy erstellen

Um die Anwendung zuerst mit WAF zu sichern, müssen Sie eine WAF Policy erstellen.

  1. Melden Sie sich bei der Oracle Cloud Infrastructure-Konsole an.
  2. Öffnen Sie das Navigationsmenü. Gehen Sie unter Governance und Administration zu "Sicherheit", und klicken Sie auf WAF-Policys.
    Wenn Sie dazu aufgefordert werden, wählen Sie ein Compartment, in dem die WAF Policy erstellt werden soll.
  3. Klicken Sie auf WAF Policy erstellen.
  4. Geben Sie im Dialogfeld "WAF-Policy erstellen " die Felder wie folgt ein:
    Feld Wert
    Policy-Name Mitarbeiterdemo-Policy
    Primäre Domain employee. example.com
    Zusätzliche Domains Leer lassen
    Ursprungsname Employee OKE Load Balancer
    URI Load Balancer EXTERNAL-IP
  5. Klicken Sie auf WAF Policy erstellen, um das Dialogfeld zu schließen.
  6. Laden Sie nach der Erstellung die Details für die Mitarbeiterdemo-Policy aus der Liste der Policys.

Anwendungsdatenverkehr mit WAF weiterleiten

Um den Datenverkehr über WAF weiterzuleiten, müssen die angegebene primäre Domain und alle zusätzlichen Domains in der CNAME Target-Datei aufgelöst werden, die in den WAF-Policy-Informationen aufgeführt wird. Dies wird als Hinweis angezeigt, wenn die Policy das erste Mal erstellt wird.

Wenn die Anwendung in einer DNS-Zone konfiguriert ist, erstellen Sie normalerweise einen CNAME - oder ALIAS-Datensatz für employee.example.com mit WAF_Target als Wert.

Da diese Lösung jedoch einen example.com-Hostnamen für die Beispielanwendung "Employee" verwendet, müssen Sie Ihren Rechner (von dem aus Sie auf die Anwendung zugreifen) konfigurieren, um den Host aufzulösen.
  1. Legen Sie eine WAF_TARGET-Umgebungsvariable zur Verwendung in anderen Befehlen fest, und stellen Sie sicher, dass Sie den CNAME Target, der in den WAF-Policy-Details aufgeführt wird, als Wert der Variablen angeben.
    # Mac or Linux
    export WAF_TARGET=employee-example-com.b.waas.oci.oraclecloud.net
    # Windows
    set WAF_TARGET=employee-example-com.b.waas.oci.oraclecloud.net
  2. Prüfen Sie, ob der Datenverkehr durch WAF geleitet wird. Prüfen Sie die HTTP-Antwortheader, und erwarten Sie, dass Folgendes angezeigt wird:
    • Server: ZENEDGE
    • X-Cdn: Served-By-Zenedge
    curl -I-X GET http://${WAF_TARGET}/public/ -H'host: employee.example.com'
    Der vorhergehende Code muss eine Ausgabe wie die Folgenden zurückgeben:
    HTTP/1.1 200 OK
    Content-Type: text/html
    Connection: keep-alive
    Server: ZENEDGE
    ETag: "1565120174000"
    X-Cache-Status: NOTCACHED
    Content-Length: 14258
    Date: Wed, 07 Aug 2019 20:22:35 GMT
    Last-Modified: Tue, 07 Aug 2019 19:36:14 GMT
    X-Zen-Fury: 1053bc526e3d722eadb457f2
  3. Konfigurieren Sie Ihren Rechner so, dass die Beispiel-URL der Mitarbeiteranwendung beim Laden in einen Browser aufgelöst wird. Dazu wird ein Eintrag in der Datei hosts erstellt, der DNS umgangen und Anforderungen von Ihrem Rechner an die WAF-IP-Adresse für employee.example.com weiterleitet.
    1. Identifizieren Sie eine Netzwerk-IP-Adresse (möglicherweise mehrere) für $WAF_TARGET.
      nslookup $WAF_TARGET
      Der vorhergehende Code muss eine Ausgabe wie die Folgenden zurückgeben:
      Server:         192.168.X.X
      Address:        192.168.X.X#YY
      Non-authoritative answer:
      employee-example-com.b.waas.oci.oraclecloud.net canonical name = oci.tm.u.waas.oci.oraclecloud.net.
      oci.tm.u.waas.oci.oraclecloud.net  canonical name = us-seattle.u.waas.oci.oraclecloud.net.
      Name:   us-seattle.u.waas.oci.oraclecloud.net
      Address: 152.X.X.X
      Name:   us-seattle.u.waas.oci.oraclecloud.net
      Address: 152.X.X.Y
      Name:   us-seattle.u.waas.oci.oraclecloud.net
      Address: 152.X.X.Z
    2. Wählen Sie eine einzelne Adresse aus dem Abschnitt "Nicht autorisierende Antwort ", und erstellen Sie einen hosts-Eintrag für die primäre example-Domain in der Datei /etc/hosts wie folgt:
      # hosts file entry
      # <WAF IP Address>    <domain>  
         152.X.X.Z          employee.example.com

      Es sind bereits mehrere Einträge vorhanden. Stellen Sie sicher, dass diese unverändert bleiben, um unerwartete Verhaltensweisen zu vermeiden.

  4. Öffnen Sie http://<employee.example.com>/public/ in einem Browser.

Die Anwendung wird nun über WAF ausgeführt.