BLOG | NGINX

Ankündigung von NGINX Plus R22

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Liam Crilly Miniaturbild
Liam Crilly
Veröffentlicht am 09. Juni 2020

Wir freuen uns, Ihnen mitteilen zu können, dass NGINX Plus Release 22 (R22) jetzt verfügbar ist. NGINX Plus basiert auf NGINX Open Source und ist der einzige All-in-One-Software-Load Balancer, Inhaltscache, Webserver und API-Gateway. Der Hauptschwerpunkt der Version liegt auf der Überwachung und Authentifizierung, um die Granularität und Belastbarkeit Ihrer Anwendungen im großen Maßstab zu verbessern.

Zu den neuen Funktionen in NGINX Plus R22 gehören:

Wichtige Verhaltensänderungen

  • Ältere Betriebssysteme werden nicht mehr unterstützt

    • Alpine Linux 3.8 wird nicht mehr unterstützt
    • Wie für NGINX Plus R21<.htmla> angekündigt, ist NGINX Plus nicht mehr auf 32‑Bit‑Plattformen (i386‑Architektur) verfügbar.

Neue Features im Detail

OCSP-Validierung von Client-Zertifikaten

NGINX Plus unterstützt gegenseitiges TLS, das Client-Zertifikate sowohl zur Überprüfung der Identität des Verbindungsclients als auch zum Herstellen einer verschlüsselten Verbindung verwendet. Gegenseitiges TLS bietet ein hohes Maß an Sicherheit hinsichtlich der Identität des Clients, die Verwaltung widerrufener Zertifikate kann jedoch einen Verwaltungsaufwand darstellen. Das Online Certificate Status Protocol (OCSP) löst dieses Problem, indem es den Status von Client-Zertifikaten bei ihrer Vorlage überprüft.

Sie können NGINX Plus so konfigurieren, dass es OCSP verwendet, um die Gültigkeit von X.509-Client-Zertifikaten gemäß RFC 6960 zu überprüfen.

Um die OCSP-Validierung von SSL-Client-Zertifikaten zu aktivieren, schließen Sie die neue Direktive ssl_ocsp zusammen mit der Direktive ssl_verify_client ein, die die Zertifikatsüberprüfung aktiviert.

NGINX Plus sendet die OCSP-Anfrage an die im Client-Zertifikat eingebettete OCSP-URI, sofern Sie mit der Direktive „ssl_ocsp_responder“ keine andere URI definieren.

Um OCSP-Antworten in einer einzigen Speicherzone zwischenzuspeichern, die von allen Arbeitsprozessen gemeinsam genutzt wird, schließen Sie die Direktive ssl_ocsp_cache ein, um den Namen und die Größe der Zone zu definieren. Antworten werden 1 Stunde lang zwischengespeichert, sofern der nextUpdate -Wert in der OCSP-Antwort keinen anderen Wert angibt.

Das Ergebnis der Client-Zertifikatsvalidierung ist in der Variable $ssl_client_verify verfügbar, einschließlich des Grundes für den OCSP-Fehler.

Der TLS-Handshake schlägt fehl, wenn das Client-Zertifikat nicht vertrauenswürdig ist oder die OCSP-Antwort ungültig ist. Statuscode495 (SSL -Zertifikatfehler ) wird zurückgegeben und im Fehlerprotokoll wird ein Eintrag mit dem Schweregrad des Fehlers erstellt:

JJJJ / MM / TT hh : mm : ss [Fehler] 31222#0: *5 Zertifikatsstatus „widerrufen“ in der OCSP-Antwort bei der Anforderung des Zertifikatsstatus, Antwortender: 127.0.0.1

OpenID Connect-Erweiterungen

Unsere OpenID Connect-Referenzimplementierung für NGINX Plus erweitert SSO auf neue und bestehende Anwendungen, um Komplexität und Kosten zu minimieren. Die Referenzimplementierung verwendet eine Kombination aus NGINX Plus-Funktionen und dem NGINX JavaScript-Modul (njs), um einen Codeaustausch mit dem Autorisierungsendpunkt durchzuführen und ein ID-Token vom IdP zu erhalten. Die ID-Token selbst werden im Schlüssel-Wert-Speicher von NGINX Plus zwischengespeichert und ein undurchsichtiges Sitzungstoken wird an den Client gesendet. Clients authentifizieren sich dann, indem sie ein gültiges Sitzungstoken vorlegen, das NGINX Plus zur Überprüfung des ID-Tokens verwendet, bevor auf Backend-Anwendungen zugegriffen wird.

Diese Version enthält zahlreiche Verbesserungen für die OIDC-Referenzimplementierung sowie zwei wesentliche Änderungen:

  1. Die Konfiguration unterstützt jetzt mehrere IdPs, indem entsprechende Eingabevariablen aus eingehenden Anfragen an mehrere Map- Blöcke übergeben werden. Diese zusätzliche Flexibilität verringert die Notwendigkeit, den OIDC-Referenzimplementierungscode zu ändern.
  2. Der JavaScript-Code ist jetzt als Modul implementiert, sodass er mit anderen NJS-Lösungen auf demselben Host koexistieren kann, ohne dass der gesamte NJS-Code in einer einzigen Datei verwaltet werden muss.

Hier ist eine Beispielkonfiguration:

Jeder Map- Block erlaubt mehrere Werte, sodass mehrere IdPs und Authentifizierungsparameter (Client-Geheimnis, JWK-Schlüsseldatei, Autorisierungsendpunkte) unterstützt werden können. Hier verwenden wir die Variable $host als Eingabeparameter, Sie können jedoch jede beliebige Variable angeben, die aus dem Anforderungsheader abgeleitet ist.

Die NGINX Plus-API verfolgt jetzt Aktivitäten im Zusammenhang mit OpenID Connect-Anmeldungen, um bei der Überwachung und Fehlerbehebung zu helfen. Weitere Informationen zur OpenID Connect-Referenzimplementierung finden Sie im GitHub-Repository .

Echtzeit-Dashboarddiagramme zur Raten- und Verbindungsbegrenzung

DDoS- und Brute-Force-Angriffe zum Erraten von Passwörtern sind zwei kritische Bedrohungen für Ihre Anwendungen. Sie können ihre Auswirkungen durch eine Ratenbegrenzung abmildern – indem Sie NGINX Plus die Anzahl der Anfragen begrenzen, die jeder Client in einem bestimmten Zeitraum stellen kann.

NGINX Plus R20 hat der NGINX Plus-API (an den Endpunkten /api/ -Version /http/limit_reqs und /api/ -Version /http/limit_conns ) eine Echtzeitüberwachung der Anforderungsrate und der Verbindungsbegrenzung hinzugefügt. Die Informationen werden jetzt auf dem Dashboard zur Live-Aktivitätsüberwachung von NGINX Plus angezeigt, mit kumulierten Zählungen in Tabellenform und mit Zeitstempeln versehenen Zählungen in Diagrammform:

  • Die Metriken zur Begrenzung der Anforderungsrate werden in der Tabelle „Limit Req“ auf der Registerkarte „HTTP-Zonen“ angezeigt.
  • Verbindungslimitmetriken werden in der Tabelle „Limit Conn“ auf der Registerkarte „TCP/UDP-Zonen“ angezeigt.

Die Tabelle enthält eine Zeile für jede Zone, die durch eine limit_req_zone- und limit_conn_zone -Direktive definiert ist. Um das Diagramm anzuzeigen, klicken Sie auf das Diagrammsymbol am linken Ende der Zeile.

Das erweiterte Diagramm wird kontinuierlich aktualisiert und zeigt Werte für jedes Zeitintervall als gestapeltes Flächendiagramm an. Sie können die angezeigten Informationen auf folgende Weise anpassen:

  • Wählen Sie den anzuzeigenden Zeitraum aus: 1 Minute, 5 Minuten oder 15 Minuten
  • Bewegen Sie den Mauszeiger über das Diagramm, um die genauen Zahlen für einen Zeitpunkt anzuzeigen.
  • Bewegen Sie den Mauszeiger über einen Statistiktyp im Legendenbereich, um diese Statistik im Diagramm hervorzuheben
  • Klicken Sie im Legendenbereich auf einen Statistiktyp, um zwischen der Anzeige und Nichtanzeige umzuschalten.
  • Ziehen Sie das Diagramm nach links und rechts, um historische Daten anzuzeigen

Beim standardmäßigen Dashboard-Aktualisierungsintervall von 1 Sekunde speichert jedes Diagramm etwa 30 Minuten historische Daten. Durch Erhöhen des Aktualisierungsintervalls des Dashboards (seltenere Aktualisierungen) wird die Menge der verfügbaren historischen Daten erhöht. Beachten Sie, dass die Dashboard-Diagramme nicht dauerhaft gespeichert werden und historische Daten verloren gehen, wenn Sie die Registerkarte verlassen oder sie neu laden.

Verbesserungen am NGINX JavaScript-Modul

Das NGINX JavaScript-Modul erweitert die Funktionalität von NGINX Plus, um eine breite Palette von Anwendungsfällen zu ermöglichen, darunter eine feinere Kontrolle des Datenverkehrs, die Konsolidierung von JavaScript-Funktionen über Anwendungen hinweg und die Abwehr von Sicherheitsbedrohungen. Das NGINX JavaScript-Modul wurde aktualisiert auf0.4.1 und umfasst diese Funktionen:

  • Die neue js_import- Direktive zum Importieren mehrerer Moduldateien, die Standort- und Variablenhandler implementieren
  • Verbesserte Header-Unterstützung, einschließlich neuer Raw-Header-Objekte
  • Sie können TypeScript- Definitionsdateien in Ihrem NJS-Code verwenden
  • Unterstützung für die Konvertierung externer Werte in native JavaScript-Objekte

Der folgende Code und die Konfiguration veranschaulichen, wie das neue Objekt r.rawHeadersIn verwendet werden kann, um den genauen Satz von Headern zu protokollieren, die vom Client gesendet werden, wenn ein Fehler auftritt. [ Editor – Dies ist nur einer von vielen Anwendungsfällen für das NGINX-JavaScript-Modul. Eine vollständige Liste finden Sie unter Anwendungsfälle für das NGINX-JavaScript-Modul . ]

Hier ist ein Beispiel für einen Protokolleintrag für eine404 Antwort:

$ curl http://localhost/bogus $ tail --lines=1 /var/log/nginx/access_json.log {"Antwort":{"Zeitstempel":" JJJJ - MM - TT T hh : mm : ss + TZ_offset ","status":404},"Anfrage":{"Client":"127.0.0.1","uri":"/bogus","headers":[["Host","localhost:80"],["User-Agent","curl/7.64.1"],["Akzeptieren","*/*"]]}}

Verzögerung bei Authentifizierungsfehler

Um Timing-Angriffe wie Brute-Force-Angriffe auf Passwörter und Credential Stuffing abzuwehren, können Sie NGINX Plus so einstellen, dass seine Antwort verzögert wird, wenn die Authentifizierung fehlschlägt. Die neue Direktive „auth_delay“ gibt die Verzögerung an, die auf Authentifizierungsanforderungen angewendet werden kann, die von den Modulen „Auth Basic“ , „Auth JWT“ und „Auth Request“ verarbeitet werden.

Upgrade oder Testen von NGINX Plus

Wenn Sie NGINX Plus verwenden, empfehlen wir Ihnen dringend, so bald wie möglich auf NGINX Plus R22 zu aktualisieren. Sie erhalten außerdem mehrere zusätzliche Fehlerbehebungen und Verbesserungen und NGINX kann Ihnen helfen, wenn Sie ein Support-Ticket erstellen müssen.

Wenn Sie NGINX Plus noch nicht ausprobiert haben, empfehlen wir Ihnen, es auszuprobieren – für Sicherheit, Lastausgleich und API-Gateway oder als vollständig unterstützten Webserver mit erweiterten Überwachungs- und Verwaltungs-APIs. Sie können noch heute mit einer kostenlosen 30-Tage-Testversion beginnen. Überzeugen Sie sich selbst, wie NGINX Plus Ihnen bei der Bereitstellung und Skalierung Ihrer Anwendungen helfen kann.


„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."