DDoS-Erkennung, Mitigation, Management und Bedrohungsanalyse
Umfassende Sicherheit & CGNAT
TLS/SSL Inspection
Web-Application-Firewall
Anwendungssicherheit und Load Balancing
Analytik und Management
CGNAT und IPv6-Migration
Aktualisiert: Nov 9, 2020
aFleX kann eine große Anzahl von Bedürfnissen erfüllen. Hier sind einige Beispiele:
Aber vergessen Sie nicht, dass aFleX auch für viele andere Bedürfnisse eingesetzt werden kann.
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" } }
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." } }
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:
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]]" } } }
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.
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.