Skip to main content
Skip table of contents

nginx: Web Application Firewall

Diese Seite ist nur für fortgeschrittene Benutzer. Eine Fehlkonfiguration hier kann Anfragen an Ihre API-Endpunkte oder Website blockieren.

Eine Web Application Firewall ist kein Ersatz für richtig implementierte Sicherheit im Front- und Backend.

Hintergrundinformationen

Die Schulrouter Plus WAF verwendet NAXSI, ein ladbares Modul für den Webserver nginx. NAXSI hat zwei Regeltypen:

  • Hauptregeln: Diese Regeln sind global gültig. Üblicher Anwendungsfall: Blockieren von Codefragmenten, die dazu verwendet werden können, sich unerlaubt Zugriff auf den Server zu verschaffen (z. B. SQL-/XPATH-Injektion für Datenzugriff) oder die Kontrolle über einen fremden Client zu erlangen (z. B. XSS).

  • Grundregeln: Diese Regeln werden normalerweise in den Standorten verwendet, um Hauptregeln nach ID innerhalb eines Standorts oder für zusätzliche Regeln zu whitelisten.

Ein guter Startpunkt sind die OWASP Cheat Sheets.

Zusätzlich zu den selbst definierten Regeln enthält NAXSI libinjection, die direkt in der Standortkonfiguration verfügbar ist. Das NAXSI-Projekt selbst hat eine hochwertige Dokumentation für das Modul online. Ein guter Regelsatz für den Anfang findet sich bei GitHub auf der Projektseite. Es kann aus lizenzrechtlichen Gründen (GPL kann nicht in BSD 2 Clause Code verwendet werden) nicht vom Plugin bereitgestellt werden, aber Sie können es selbst manuell eingeben.

Schulrouter Plus spezifische Informationen

  • Schulrouter Plus blockiert von Bots verwendete User-Agents automatisch - dies kann nicht konfiguriert werden

  • Die Fehlerseiten werden unter /usr/local/etc/nginx/views gespeichert

Konfiguration

WAF-Regeln

WAF-Regeln werden verwendet, um eine Aktion auszulösen, wenn eine Bedingung zu wahr oder falsch (negiert) ausgewertet wird. Der übliche Anwendungsfall ist das Erhöhen eines Scores, der anschließend überprüft werden kann, aber eine Regel kann zum Beispiel auch sofort blockieren (das Plugin unterstützt nur einen Score). WAF-Regeln werden zu einer WAF-Richtlinie gruppiert, die dann den aggregierten Score auswerten kann.

Die Beschreibung wird in der GUI angezeigt und die Meldung erscheint im Protokoll. Negate schaltet die Bedingung von „if“ auf „unless“ um. Die ID muss eindeutig sein. Sie sollten ein Schema wie 1000 bis 2000 sind SQL-Injection oder ähnliches verwenden, weil das die Log-Auswertung bei Bedarf verbessert (Sie könnten z. B. Tortendiagramme erstellen, weil Sie nach dem ID-Bereich gruppieren können).

Der nächste Abschnitt beschreibt den Regeltyp und die Übereinstimmung. Sie können den Übereinstimmungswert wie truncate (ein SQL-Schlüsselwort, um den Inhalt der Tabelle zu löschen) an verschiedenen Stellen in der HTTP-Anfrage überprüfen. Meistens können alle geprüft werden, oder als Alternative können Sie einen Namen verwenden, so dass er z. B. nur auf einen bestimmten Header passt. Bitte beachten Sie, dass nicht alle von ihnen miteinander kompatibel sind, also konsultieren Sie bitte die NAXSI-Dokumente.

WAF-Richtlinie

Der Name wird im Ortsauswahlfeld verwendet, die Regeln sind eine Sammlung der zuvor erstellten Regeln.

Die Wiederverwendung von Hauptregeln wird nicht funktionieren, klonen Sie sie bei Bedarf. Der Grund ist, dass sie in der id + score-Variable in Konflikt geraten würden

Name

ein guter Name wie „block sql injection“

Regeln

die zu gruppierenden Regeln auswählen

Wert

einen Vergleichswert

Bediener

Wählen Sie einen Vergleichsoperator, um den Wert des Score-Operators zu vergleichen

Aktion

normalerweise blockieren

Als (unvollständiges) Beispiel:

Name

Block SQLi

Regeln

enthält select, enthält from, enthält union, enthält delete

Wert

16

Bediener

größer oder gleich

Aktion

blockieren

Position

Im letzten Schritt müssen die Regeln auf den Standort angewendet werden.

Um die WAF an einem Standort zu aktivieren, müssen Sie das Kontrollkästchen „Enable Security Rules“ aktivieren. Am Anfang wäre es sinnvoll, wenn der „Lernmodus“ aktiviert ist (es wird nichts geblockt, aber protokolliert, so dass Sie Whitelists hinzufügen können, bis Sie keine False Positives mehr erhalten).

Die nächsten beiden Felder sind die Punkte für die Libinjektion. Beide addieren eine Punktzahl von 8, wenn sie auslösen. Werte bis zu 8 werden also blockiert.

In der nächsten Auswahlliste können Sie Ihre benutzerdefinierten Richtlinien auswählen, die nun angewendet werden.

Testen

Wenn Sie die WAF auslösen, indem Sie eine böse aussehende Anfrage an die WAF stellen, sollten Sie eine Meldung im Server-Fehlerprotokoll sowie eine mit Schulrouter Plus gebrandete Fehlerseite (Request Denied For Security Reasons) erhalten.

Sie können curl verwenden, um es auszulösen (wenn Sie die folgenden SQL-Schlüsselwörter blockieren):

BASH
curl "http://example.com/index.php?a=select&b=union&c=from"

Sie können „NAXSI“ als Filter im Filterfeld der Protokollanzeige verwenden, wenn Sie das Fehlerprotokoll betrachten.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.