Zum Inhalt

length-hiding: NGINX Length Hiding Filter Modul

Installation

Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:

  • RedHat Enterprise Linux 7, 8, 9 und 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-length-hiding
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-length-hiding

Aktivieren Sie das Modul, indem Sie Folgendes am Anfang von /etc/nginx/nginx.conf hinzufügen:

load_module modules/ngx_http_length_hiding_filter_module.so;

Dieses Dokument beschreibt nginx-module-length-hiding v1.1.1, veröffentlicht am 19. Juli 2017.


Nginx Length Hiding Filter Modul

Einführung

Auf der BREACH-Website werden die Maßnahmen gegen den BREACH-Angriff wie folgt angegeben:

  1. Deaktivierung der HTTP-Kompression
  2. Trennung von Geheimnissen und Benutzereingaben
  3. Zufällige Geheimnisse pro Anfrage
  4. Maskierung von Geheimnissen (effektives Randomisieren durch XOR mit einem zufälligen Geheimnis pro Anfrage)
  5. Schutz anfälliger Seiten mit CSRF
  6. Length Hiding (durch Hinzufügen einer zufälligen Anzahl von Bytes zu den Antworten)
  7. Ratenbegrenzung der Anfragen

BREACH basiert auf HTTP-Kompression, und es ist sinnvoll, diese zu deaktivieren, um Ihre Website zu sichern. Ohne Kompression können jedoch einige Websites unter erheblichen Leistungseinbußen leiden oder die Kosten können steigen, wenn Sie basierend auf dem Verkehrsvolumen, wie bei AWS, abgerechnet werden. In einem solchen Fall kann es schwierig sein, die HTML-Kompression für die gesamten Antworten Ihrer Website abzuschalten, und es müssen andere geeignete Methoden angewendet werden.

Die anderen Maßnahmen, die von der 2. bis zur 5. oben aufgeführt sind, sind grundsätzlich auf Ihre Anwendung anwendbar, aber die 6. Maßnahme, Length Hiding, kann in nginx durchgeführt werden. Dieses Filtermodul bietet die Funktionalität, einen zufällig generierten HTML-Kommentar an das Ende des Antwortkörpers anzuhängen, um die korrekte Antwortlänge zu verbergen und es Angreifern zu erschweren, das sichere Token zu erraten.

Das Beispiel eines zufällig angehängten HTML-Kommentars ist hier.

<!-- random-length HTML comment: JnSLGWeWYWsoJ4dXS3ubLw3YOu3zfGTotlzx7UJUo26xuXICQ2cbpVy1Dprgv8Icj6QfOZx2Ptp9HxCVoevTxhKzMzV6xeYXao0oCngRWJRb4Tvive1iBAXLzrHlLg6jKwNKXrct0tJuA2TvWIRVIng6UoffIbCQLPbi63PwmWemOxVi6m3CPa6hCbAK2CaBR1jLux7UJa4WNN4H0yIDMElMglWWouY5m5FUqAn0afMmtErj0zkA2LMWxisZRES38XLoYycySmaBrIih5IixUsJFR0ei4uZ0IifgV5SnitoNzMusSQem9npObHuU2HKApneAjwnFdPSQZA9sRdSOE8agDI05P832mV1JIcOjsg0FgzxvSG7UEX0HdqBqp2jPOYYW0k5gGtmkiXWydRJfn9lGomxReUeqq2Aec69gplEM6a8aqH5TFgXrGK8jcaPISQlsKkMxJQ7Fp6fVDbmI59xCIvlk -->
Für jede Antwort variiert die Länge der zufälligen Zeichenfolgen innerhalb eines bestimmten Bereichs.

Diese Idee stammt ursprünglich von breach-mitigation-rails. Vielen Dank an das Team!

Warnung

Wie in breach-migration-rails gesagt, ist BREACH ein komplizierter und weitreichender Angriff, und dieses Modul bietet nur PARTIELLEN Schutz. Um Ihre Website oder Ihren Dienst vollständig zu sichern, müssen Sie das BREACH-Papier überprüfen und einen geeigneten Weg gemäß Ihrer eigenen Website oder Dienst finden.

Konfigurationsdirektiven

length_hiding

  • syntax: length_hiding on | off
  • default: off
  • context: http, server, location, if in location

Aktiviert oder deaktiviert das Hinzufügen eines zufällig generierten HTML-Kommentars.

length_hiding_max

  • syntax: length_hiding_max size
  • default: 2048
  • context: http, server, location

Legt die maximale Länge der zufällig generierten Zeichenfolge fest, die im HTML-Kommentar verwendet wird. Die Größe sollte im Bereich von 256 bis 2048 liegen.

Beispielkonfiguration

Aktivieren Sie dieses Modul für einen bestimmten Standort ('/hiding'). In diesem Beispiel wird die Länge der zufälligen Zeichenfolgen weniger als 1024 betragen.

server {
    listen       443 default_server deferred ssl spdy;
    server_name  example.com;
    length_hiding_max 1024;

    location /hiding {
        length_hiding on;
    }
}

Wenn dieses Modul als dynamisches Modul erstellt wird, vergessen Sie nicht, die load_module-Zeile in der nginx-Konfiguration einzuschließen.

load_module modules/ngx_http_length_hiding_filter_module.so;

Dienste, die dieses Modul verwenden

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-length-hiding.