Inhalte
Übersicht
Der folgende Artikel beschreibt einen realen Anwendungsfall für einen ISP oder Hosting-Anbieter, bei dem der HTTP / S Load Balancer-Reverseproxy der Hauptzugriffspunkt für alle öffentlichen Webdienste ist. Diese Konfiguration zeigt, wie einfach die Konfiguration einer erweiterten und leistungsstarken WAF ist Regelsatz zum Sichern von Webanwendungen auf der Basis von Quell-IP-Adressen, sofern vorhanden VirtualHost verwaltet seine eigene Blacklist so, dass einer öffentlichen IP-Adresse die Verbindung zu einer Webdomain wie verboten werden kann www.company1.com aber erlaubt zu verbinden www.company2.com.
Wir konzentrieren uns auf den Artikel in zwei Abschnitten. Im Hauptabschnitt fungiert die HTTPS-Profilkonfiguration als Reverse-Proxy mit einer Liste verschiedener Dienste, und im zweiten Abschnitt wird die Konfiguration von a erläutert Firewall für Webanwendungen Regelsatz, der eine andere Blacklist pro HTTP / S-Dienst verwaltet.
Umgebung
Das folgende Diagramm beschreibt die Zevenet WAF-Interna. Wie gezeigt, ist die erste Schicht das WAF-Modul, dessen Ziel es ist, in einem frühen Stadium sicherzustellen, dass nur sichere Anforderungen an das Lastausgleichsmodul weitergeleitet werden und die Anforderung dann an die Backends weiterzuleiten.
Erstens das HTTP Gastgeber Der Header wird ausgewertet und die Client-IP in der bereits konfigurierten Blacklist überprüft. Wenn das Gastgeber Header und die Client-IP-Adresse stimmen überein, dann wird die Verbindung getrennt und a 403 Verboten HTTP-Antwort wird an den Client gesendet, aber in dem Fall, dass der Client IP und angefordert Gastgeber Der Header stimmt nicht überein, dann wird der Datenverkehr als nicht böswillig identifiziert und an das Load Balancer-Modul übergeben, wo das Ziel basierend auf der HTTP-Anforderung ausgewählt wird Gastgeber Header und schließlich an den verfügbaren Backend-Server weitergeleitet.
Hier finden Sie ein Schema der Interna der Web Application Firewall für das angegebene Beispiel.
Konfiguration des virtuellen HTTP-Dienstes
Konfigurieren Sie eine dedizierte Virtuelle IP-AdresseIn unserem Beispiel 192.168.100.58durch Surfen zu Netzwerk> Virtuelle Schnittstellen> Virtuelle Schnittstelle erstellen wie unten dargestellt:
Gehen wir nun zum Konfigurieren des HTTP-Lastausgleichsdienstes zu LSLB> Bauernhöfe und dann auf die Schaltfläche klicken Farm erstellen und geben Sie die Details des virtuellen Dienstes wie folgt ein:
Dann drücken Erstellen.
Klicken Sie nun auf die obere Registerkarte Dienstleistungen und erstellen Sie so viele Dienste wie verschiedene Websites, die Sie verwalten. Klicken Sie auf die Schaltfläche Neuer ServiceIn unserem Fall erstellen wir zwei verschiedene Services, einen, für den der Service verwaltet werden soll www.mycompany1.com und noch eine für www.mycompany2.com.
Sobald der Dienst erstellt wurde, fügen Sie den hinzu Virtueller Host Filter und die Backends wie im Bild unten gezeigt.
Wenn Sie mehrere Websites haben, müssen Sie nur weitere Dienste hinzufügen, um einen dedizierten Dienst zu definieren, mit dem jedes Web von derselben IP-Adresse aus verwaltet werden kann.
Nachdem die Konfiguration des Lastenausgleichs abgeschlossen ist, können Sie das IPDS-Webanwendungs-Firewall-Modul konfigurieren.
Konfiguration der Blacklists
Wir erstellen eine Blacklist pro Webservice, um in jede Blacklist die gewünschten IP-Adressen einzutragen, um den Zugang zu sperren. In unserem Beispiel erstellen wir zwei verschiedene Blacklists mit dem Namen blacklistmycompany1 und blacklistmycompany2jeweils eine pro Dienstleistung.
Diese Blacklist wird im Pfad gespeichert /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany1.txt.
Wir haben 2-IP-Adressen zu Testzwecken angegeben. Bitte berücksichtigen Sie, dass Sie so viele IP-Adressen wie nötig hinzufügen. Auch das schon vorhandene Blacklists der IPDS Modul kann verwendet werden.
Diese zweite schwarze Liste wird im Pfad gespeichert /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany2.txt.
Beachten Sie, dass wir in dieser Blacklist die IP-Adresse angegeben haben 192.168.1.191Diese IP wird nur zu Testzwecken verwendet, von wo aus wir HTTP-Anfragen ausführen.
Regelsatzkonfiguration für die Webanwendungs-Firewall
Der Zweck dieser Konfiguration besteht darin, unterschiedliche IP-Sperrlisten pro Website zu verwalten, um zu vermeiden, dass für den gesamten Farmzugriffspunkt dieselbe Sperrliste geführt wird.
Wir werden a konfigurieren RegelsatzDies ist eine Gruppe von Regeln mit Namen HostingBlacklisting. Dieser Regelsatz besteht aus zwei einfachen Regeln (Regel-ID 1000 und Regel-ID 1001 in unserem Beispiel). Jede Regel ist als Übereinstimmung und Aktion definiert. Wenn die Bedingung übereinstimmt, wird die Aktion ausgeführt. In unserem Beispiel verwenden wir in beiden Regeln dieselbe Aktion, wenn die Bedingung mit a übereinstimmt Aktion ablehnen wird mit a ausgeführt 403-Zugriff verweigert Antwort.
Gehen Sie zu IPDS> WAF, dann klicken Sie auf Erstellen Sie einen WAF-Regelsatz und legen Sie in unserem Beispiel einen beschreibenden Namen für den Regelsatz fest HostingBlacklisting.
Konfigurieren Sie das Feld Standardphase zu Anforderungsheader werden empfangen. Dieses Feld bedeutet, dass das WAF-Modul die vom Client eingehenden Anforderungsheader analysiert.
Gehen Sie dann zur Registerkarte Regeln und erstelle das erste Regel oder Typ Aktion wie es unten gezeigt wird.
Nun wird die erste Regel des Regelsatzes erstellt. Hier können Sie die Bedingungen erstellen, um die Client-IP in der Blacklist für jede Regel abzugleichen Gastgeber Header. Gehe zu AGB und schaffen Sie eine Bedingung nach dem REMOTE_ADDR variabel, wie es unten gezeigt wird.
Dann legen Sie eine weitere Bedingung für das an Virtueller Host Spiel nach dem SERVER_NAME variabel wie folgt:
Zu diesem Zeitpunkt die erste gehostete Website www.mycompany1.com verwaltet eine Webanwendungs-Blacklist-IP-Adresse aus der bereits konfigurierten Blacklist, auf die verwiesen wird Blacklistmycompany1.txt.
Erstellen wir eine weitere Regel für die zweite Website www.mycompany2.com und wiederholen Sie die gleiche Konfiguration wie bei der vorherigen Regelkonfiguration, aber in diesem Fall müssen Sie die ändern SERVER_NAME zu mycompany2.com und beziehen Sie sich auf Folgendes blacklist2.txt.
Sehen Sie sich die gesamte Konfiguration des zusammengesetzten WAF-Regelsatzes an:
Fügen Sie diesen Regelsatz schließlich der bereits erstellten Farm hinzu, und wechseln Sie zur Registerkarte Farms und bewege die Farm HostingIn unserem Beispiel zum Aktivierte Farmen Abschnitt, wie es unten gezeigt wird.
Starten Sie nun den WAF-Regelsatz für die Farm und klicken Sie auf die Aktion Play Im oberen linken Bereich dieses Fensters beginnt das System, den HTTP-Verkehr für die Farm zu filtern Hosting.
Testen des Regelsatzes für die Webanwendungs-Firewall
Die Client-IP 192.168.1.191 wird die Website anfordern http://www.mycompany1.com und http://www.mycompany2.com Gemäß unserer Konfiguration ermöglicht das WAF-System die Verbindung zum ersten Dienst mit demselben Namen, die Verbindung wird jedoch verweigert mycompany2.com weil diese IP mit Namen in die Blacklist aufgenommen wurde Blacklistmycompany2.
Von der IP-Adresse 192.168.1.191 an VIP, die die Website www.mycompany1.com über den Load Balancer anfordert:
root@192.168.1.191:# curl -H "Host: www.mycompany1.com" http://192.168.100.58 -v * Rebuilt URL to: http://192.168.100.58/ * Trying 192.168.100.58... * TCP_NODELAY set * Connected to 192.168.100.58 (192.168.100.58) port 80 (#0) > GET / HTTP/1.1 > Host: www.mycompany1.com > User-Agent: curl/7.52.1 > Accept: */* > < HTTP/1.1 200 OK < Server: nginx/1.10.3 < Date: Tue, 10 Sep 2019 15:36:22 GMT < Content-Type: text/html < Content-Length: 11383 < Last-Modified: Thu, 13 Dec 2018 11:01:49 GMT < Connection: keep-alive < ETag: "5c123c1d-2c77" < Accept-Ranges: bytes <
Von der IP-Adresse 192.168.1.191 an VIP, die die Website www.mycompany2.com über den Load Balancer anfordert:
root@192.168.1.191:# curl -H "Host: www.mycompany2.com" http://192.168.100.58 -v * Rebuilt URL to: http://192.168.100.58/ * Trying 192.168.100.58... * TCP_NODELAY set * Connected to 192.168.100.58 (192.168.100.58) port 80 (#0) > GET / HTTP/1.1 > Host: www.mycompany2.com > User-Agent: curl/7.52.1 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 403 Request forbidden < Content-Type: text/html < Content-Length: 17 < Expires: now < Pragma: no-cache < Cache-control: no-cache,no-store < * Curl_http_done: called premature == 0 * Closing connection 0 replied forbiddenp
Sobald die verboten Wenn eine Antwort generiert wird, benachrichtigt das WAF-Modul die Zurückweisung in der Syslog-Datei des Lastenausgleichs.
root@zva6000:# tail -f /var/log/syslog Sep 10 15:38:44 zva6000 pound: Hosting, ModSecurity: Warning. Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"] Sep 10 15:38:44 zva6000 pound: Hosting, [WAF,service mycompany2, backend 192.168.100.22:80,] (7f6cfac3c700) [client 192.168.1.191] ModSecurity: Access denied with code 403 (phase 1). Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"] Sep 10 15:38:44 zva6ktpl1 pound: Hosting, service mycompany2, backend 192.168.100.25:80, (7f6cfac3c700) WAF denied a request from 192.168.1.191
Jetzt können Sie Ihre benutzerdefinierten Firewall-Regelsätze erstellen, um Ihre Webanwendungen mit HTTP / S Deep Packet Inspection-Techniken zu schützen.