Zum Inhalt springen Weiter zur Suche
Testversion
Blog

aFleX Beispiele

Aktualisiert: Nov 9, 2020

aFleX kann eine große Anzahl von Bedürfnissen erfüllen. Hier sind einige Beispiele:

  • Verfügbarkeit
  • Sicherheit
  • Flexibilität
  • Protokollierung

Aber vergessen Sie nicht, dass aFleX auch für viele andere Bedürfnisse eingesetzt werden kann.

Verfügbarkeit

Bereitstellen einer Entschuldigungsseite, wenn alle Server oder die Anwendung ausgefallen sind

Das folgende aFleX-Skript antwortet mit einer Entschuldigungsseite, wenn alle Server der Dienstgruppe "Server_HTTP" ausgefallen sind.

when HTTP_REQUEST {
  if {[LB::status pool Server_HTTP] equals "down" } {
    HTTP::respond 200 content "<html><head><title>Apology
    Page</title></head><body>We are sorry for the inconvenience, but
    the site is temporarily out of service<br>If you feel you have
    reached this page in error, please try again.<p></body></html>"
  }
}

Umleitung von Endbenutzern auf das Backup-Rechenzentrum, wenn alle Server ausgefallen sind oder die Anwendung nicht mehr funktioniert

Das folgende aFleX-Skript leitet Endbenutzer auf das Backup-Rechenzentrum (backup.example.com) um, wenn alle Server in der Dienstgruppe "Server_HTTP" ausgefallen sind.

when HTTP_REQUEST {
  if {[LB::status pool Server_HTTP] == "down" } {
    HTTP::redirect "https://backup.example.com"
  }
}

Sicherheit

Nur internen Benutzern den Zugriff auf das Webverzeichnis "/private" gestatten

Drei verschiedene aFleX-Skripte werden als Beispiele zur Verfügung gestellt, um diesen Bedarf zu decken.

Hinweis: In diesem Beispiel gehen wir davon aus, dass sich die internen Benutzer im Subnetz 192.168.18.0/24 befinden.

Das erste aFleX-Beispielskript verwirft alle Anfragen von externen Benutzern, die auf den "privaten" Bereich der Website zugreifen.

when HTTP_REQUEST {
  if {not [IP::addr [IP::client_addr] equals 192.168.18.0/24] and ([HTTP::uri] starts_with "/private")} {
    drop
  }
}

Anstatt alle Anfragen von externen Benutzern, die auf den "privaten" Bereich der Website zugreifen, abzulehnen, leitet das folgende aFleX-Skriptbeispiel sie auf eine Seite um, die erklärt, warum sie nicht auf diesen Bereich der Website zugreifen können.

when HTTP_REQUEST {
  if {not [IP::addr [IP::client_addr] equals 192.168.18.0/24] and ([HTTP::uri] starts_with "/private")} {
    HTTP::redirect "https://www.example.com/not_authorized.html"
  }
}

Hinweis: Die Seite not_authorized.html wird auf dem Webserver www.example.com gehostet.

Das folgende aFleX-Skript-Beispiel antwortet direkt mit einer Seite, die erklärt, dass externe Benutzer nicht auf diesen Bereich der Website zugreifen können.

Hinweis: Bei dieser Lösung muss keine Seite auf dem Webserver gehostet werden.

when HTTP_REQUEST {
  if {not [IP::addr [IP::client_addr] equals 192.168.18.0/24] and ([HTTP::uri] starts_with "/private")} {
    HTTP::respond 200 content "This web section is accessible only from our corporate offices."
  }
}

Flexibilität

Transparente Umwandlung einer HTTP-Webanwendung in HTTPS

Dies kann einfach mit einem VIP, der HTTPS abhört, und Servern, die HTTP verwenden, geschehen, aber es gibt zwei Punkte, die Sie beachten sollten:

  • Zusätzlich zum VIP für HTTPS können Sie das VIP auch für HTTP konfigurieren. Dieses HTTP-VIP leitet Benutzer über HTTPS immer auf die gleiche Seite um, die sie über HTTP aufrufen. Dies kann z. B. für Endbenutzer mit alten Browser-Lesezeichen, die auf HTTP verweisen, nützlich sein.
  • Wenn Webserver Weiterleitungen zu anderen HTTP-Seiten senden, müssen diese mit HTTPS umgeschrieben werden.

Das folgende aFleX-Skript leitet die Endbenutzer von HTTP auf HTTPS um.

Hinweis: Die HTTP-zu-HTTPS-Umleitung kann auch über den CLI-Befehl "redirect-to-https" erfolgen (über GUI: ADC > SLB > Virtuelle Server > "VIP" > Virtueller Port > Erweiterte Felder > Auf HTTPS umleiten).

# redirect HTTP request to https URL
when HTTP_REQUEST {
  HTTP::redirect https://[HTTP::host][HTTP::uri]
}

Das folgende aFleX-Skript schreibt die Umleitungen des Webservers um.

Hinweis: Die Webserver-Umleitungen können mit der Option "Redirect Rewrite" in einem HTTP-Template umgeschrieben werden (über GUI: ADC > Templates > Layer 7 Protocols > HTTP > Redirect Rewrite), anstatt ein aFleX-Skript zu verwenden.

# rewrites relative and absolute redirects to absolute HTTPS redirects
when HTTP_REQUEST {
  set host [HTTP::host]
}

when HTTP_RESPONSE {
  if { [HTTP::is_redirect] } {
    if { [HTTP::header Location] starts_with "/" } {
      HTTP::header replace Location "https://$host[HTTP::header Location]"
    } else {
      HTTP::header replace Location "[string map {"http://" "https://"} [HTTP::header Location]]"
    }
  }
}

Protokollierung

Protokollieren Sie den Namen der Verschlüsselung, die Bits, die Version und das SNI-Feld, die beim SSL (Secure Sockets Layer)/TLS(Transport Layer Security) Handshake verwendet werden.

Das folgende aFleX-Skript protokolliert SSL/TLS-Verschlüsselungsinformationen und das SNI-Feld beim SSL/TLS-Handshake:

when CLIENTSSL_HANDSHAKE {
  log "SSL cipher_name is [SSL::cipher name]"
  log "SSL cipher_bit is [SSL::cipher bits]"
  log "SSL cipher_version is [SSL::cipher version]"
  log "SSL SNI is [SSL::hostname]"
}

Hinweis: Syntax und Befehle spiegeln die Version zum Zeitpunkt der Erstellung dieses Blogs wider; für zukünftige Versionen müssen möglicherweise Anpassungen vorgenommen werden.

Verwandte Beiträge

aFleX-Skriptsprache und Layer 7 Deep-Packet-Inspection

aFleX ist eine leistungsstarke und flexible Skriptsprache, mit der Sie Ihren Datenverkehr verwalten und erweiterte Vorteile und Dienste anbieten können. Sie ist in den Thunder® Application Delivery Controller (ADC) integriert, eine hochleistungsfähige Load-Balancing-Lösung, mit der Ihre Anwendungen hochsicher, verfügbar und beschleunigt sind.



Siddhartha Aggarwal
|
November 9, 2020

Siddhartha Aggarwal ist derzeit leitender Produktmarketing-Ingenieur bei A10 Networks. Er verfügt über mehr als 15 Jahre Erfahrung auf dem Gebiet der Datennetzwerke (Routing/Switching),... Lesen Sie mehr