Preparare l'ambiente per l'uso di Web Application Firewall

Preparare l'ambiente per l'utilizzo del servizio WAF (Web Application Firewall) di Oracle Cloud Infrastructure per proteggere l'applicazione.

Operazioni preliminari

Prima di creare il criterio WAF, è necessario conoscere l'indirizzo IP pubblico del load balancer employee-helidon-lb già distribuito. Vedere Distribuisci un'applicazione RESTful Java basata su microservizi a Oracle Cloud.

Ottenere e annotare l'indirizzo EXTERNAL-IP del load balancer dell'applicazione dipendente campione. Sarà necessario per creare il criterio WAF in un secondo momento.

kubectl get service employee-helidon-lb

Il comando precedente deve restituire un output simile al seguente:

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 visualizzato da Kubernetes è uguale all'indirizzo IP pubblico, visualizzato quando si accede a Core > Networking > Load balancer nella console di Oracle Cloud Infrastructure.

Creare un criterio WAF

Per proteggere l'applicazione utilizzando WAF, è innanzitutto necessario creare un criterio WAF.

  1. Collegarsi alla console di Oracle Cloud Infrastructure.
  2. Aprire il menu di navigazione. In Governance and Administration andare a Security e fare clic su WAF Policies.
    Se richiesto, selezionare un compartimento in cui creare il criterio WAF.
  3. Fare clic su Crea criterio WAF.
  4. Nella finestra di dialogo Crea criterio WAF immettere i campi come riportato di seguito.
    Campo Valore
    Nome criterio Criteri demo dipendente
    Dominio primario employee. example.com
    Domini aggiuntivi Lascia vuoto
    Nome origine Load balancer OKE dipendenti
    URI Load balancer EXTERNAL-IP
  5. Fare clic su Crea criterio WAF per chiudere la finestra di dialogo.
  6. Una volta creati, caricare i dettagli per il criterio demo dei dipendenti dalla lista di criteri.

Instrada traffico applicazioni tramite WAF

Per instradare il traffico tramite WAF, è necessario risolvere il dominio primario specificato ed eventuali domini aggiuntivi nella cartella CNAME Target riportata nelle informazioni sui criteri WAF. L'avviso viene presentato quando il criterio viene creato per la prima volta.

Se l'applicazione è effettivamente configurata in una zona DNS, in genere si crea un record CNAME o ALIAS per employee.example.com utilizzando WAF_Target come valore.

Tuttavia, poiché questa soluzione utilizza un nome host example.com per l'applicazione dipendente di esempio, è necessario configurare il computer (da cui si accederà all'applicazione) per risolvere l'host.
  1. Impostare una variabile di ambiente WAF_TARGET da utilizzare in altri comandi, in modo da specificare CNAME Target elencato nei dettagli del criterio WAF come valore della variabile.
    # 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. Verificare che il traffico venga trasferito attraverso WAF. Esaminare le intestazioni della risposta HTTP e prevedere quanto riportato di seguito.
    • Server: ZENEDGE
    • X-Cdn: Served-By-Zenedge
    curl -I-X GET http://${WAF_TARGET}/public/ -H'host: employee.example.com'
    Il codice precedente deve restituire un output simile al seguente:
    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. Configurare il computer per risolvere l'URL dell'applicazione dipendente di esempio quando viene caricato in un browser. A tale scopo, creare una voce nel file hosts, che ignora il DNS e instrada le richieste dal computer all'indirizzo IP WAF per employee.example.com.
    1. Identificare un indirizzo IP di rete (potrebbe esserne vari) per $WAF_TARGET.
      nslookup $WAF_TARGET
      Il codice precedente deve restituire un output simile al seguente:
      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. Selezionare un singolo indirizzo dalla sezione della risposta non affidabile e creare una voce hosts per il dominio primario example nel file /etc/hosts come riportato di seguito.
      # hosts file entry
      # <WAF IP Address>    <domain>  
         152.X.X.Z          employee.example.com

      Esistono già numerose voci. Assicurarsi di lasciarli invariati per evitare funzionamenti imprevisti.

  4. Aprire http://<employee.example.com>/public/ in un browser.

L'applicazione viene ora eseguita su WAF.