Zum Inhalt

js-challenge: NGINX Javascript Challenge-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-js-challenge
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-js-challenge

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

load_module modules/ngx_http_js_challenge_module.so;

Dieses Dokument beschreibt nginx-module-js-challenge v0.0.2 veröffentlicht am 21. August 2024.

Eine Anfrage für eine stabile Version existiert. Stimmen Sie hier ab.


ngx_http_js_challenge_module

GitHub CodeFactor

Demo-Website

Ein einfacher Javascript Proof-of-Work basierter Zugang für NGINX mit praktisch keinem Overhead.

Einfache Installation: Fügen Sie einfach load_module /path/to/ngx_http_js_challenge_module.so; zu Ihrer nginx.conf-Datei hinzu und folgen Sie den Konfigurationsanweisungen.

Konfiguration

Einfache Konfiguration

server {
    js_challenge on;
    js_challenge_secret "ändere mich!";

    # ...
}

Erweiterte Konfiguration

server {
    js_challenge on;
    js_challenge_secret "ändere mich!";
    js_challenge_html /path/to/body.html;
    js_challenge_bucket_duration 3600;
    js_challenge_title "Überprüfung Ihres Browsers...";

    location /static {
        js_challenge off;
        alias /static_files/;
    }

    location /sensitive {
        js_challenge_bucket_duration 600;
        #...
    }

    #...
}

  • js_challenge on|off Aktiviert oder deaktiviert Javascript-Herausforderungen für diesen Konfigurationsblock
  • js_challenge_secret "secret" Geheimnis zur Generierung der Herausforderungen. STANDARD: "changeme"
  • js_challenge_html "/path/to/file.html" Pfad zur HTML-Datei, die im <body>-Tag der interstitiellen Seite eingefügt werden soll
  • js_challenge_title "title" Wird im <title>-Tag der interstitiellen Seite eingefügt. STANDARD: "Überprüfung Ihres Browsers..."
  • js_challenge_bucket_duration time Intervall zur Aufforderung zur Javascript-Herausforderung, in Sekunden. STANDARD: 3600

Bekannte Einschränkungen / TODO

  • Benutzer mit deaktivierten Cookies werden in einer endlosen Aktualisierungsschleife feststecken (TODO: Umleitung mit einem bekannten Abfrageparameter, wenn kein Cookie angegeben ist, aber das Abfrageargument gesetzt ist, eine Fehlerseite anzeigen)
  • Wenn NGINX hinter einem Reverse-Proxy/Lastenausgleich steht, wird dieselbe Herausforderung an verschiedene Benutzer gesendet und/oder das Antwort-Cookie wird ungültig, wenn der Benutzer zu einem anderen Server umgeleitet wird. (TODO: Verwenden Sie den x-real-ip-Header, wenn verfügbar)

GitHub

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