Zum Inhalt

pta: Period of Time Authentication Modul für NGINX

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-pta
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-pta

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

load_module modules/ngx_http_pta_module.so;

Dieses Dokument beschreibt nginx-module-pta v1.0.2, veröffentlicht am 07. Januar 2025.


Übersicht

Das PTA (Period of Time Authentication) Modul ist ein Modul für NGINX. Mit PTA können Sie den Zugriff auf Ihre Inhalte steuern. PTA berechnet eine verschlüsselte Abfragezeichenfolge oder einen Cookie-Parameter, der eine Ablaufzeit und einen Pfad des Inhalts enthält.

Verwendung

Hier ist ein Beispiel für nginx.conf:

  worker_processes  1;

  events {
      worker_connections  1024;
  }


  http {
      include       mime.types;
      default_type  application/octet-stream;

      sendfile        on;

      keepalive_timeout  65;

      server {
          listen       80;
          server_name  localhost;

          pta_1st_key 0102030405060708090a0b0c0d0e0f00;
          pta_1st_iv  00000000000000000000000000000000;
          pta_2nd_key 11111111111111111111111111111111;
          pta_2nd_iv  22222222222222222222222222222222;

          location / {
              root   html;
              index  index.html index.htm;
          }

          location /foo/ {
              pta_enable on;
          }

          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   html;
          }
      }
  }

pta_1st_key

  • Syntax : pta_1st_key keystring
  • Standard : -
  • Kontext : server

pta_1st_iv

  • Syntax : pta_1st_iv ivstring;
  • Standard : -
  • Kontext : server

pta_2nd_key

  • Syntax : pta_2nd_key keystring;
  • Standard : -
  • Kontext : server

pta_2nd_iv

  • Syntax : pta_2nd_iv ivstring;
  • Standard : -
  • Kontext : server

pta_enable

  • Syntax : pta_enable on | off;
  • Standard : pta_enable off;
  • Kontext : location

pta_auth_method

  • Syntax : pta_auth_method qs | cookie | qs cookie;
  • Standard : pta_auth_method qs;
  • Kontext : location

Funktionsweise

Das PTA-Modul entschlüsselt eine Abfragezeichenfolge oder einen Cookie-Parameter, der mit `pta=...' beginnt, und überprüft CRC32, Ablaufzeit und angeforderten URI-Pfad, die darin eingebettet sind. Daher müssen Sie ein PTA-Token generieren und es als Abfragezeichenfolge oder Cookie-Parameter zu einem Link hinzufügen. Es gibt einige Codes im Verzeichnis samples, um PTA zu generieren.

Format

Dieser Byte-Stream wird mit AES im AES 128 Bit CBC-Modus verschlüsselt.

  +---------------+-------------------------+----------+-----------------+
  | CRC32 (4byte) | Ablaufzeit (8byte)      | URI-Pfad | Padding         |
  |               | Unix-Zeitformat         |          | pkcs #7 format  |
  +---------------+-------------------------+----------+-----------------+

CRC32

Es ist big endian. Es wird aus der Ablaufzeit und dem URI-Pfad berechnet. Dieser Teil wird verwendet, um zu überprüfen, ob die AES-Entschlüsselung gültig ist.

Ablaufzeit

Es ist big endian. Es wird mit der Zeit verglichen, zu der die Anfrage eingegangen ist, und wenn die Zeit kleiner oder gleich der Ablaufzeit ist, die im PTA-Token enthalten ist, wird die Anfrage genehmigt.

URI-Pfad

Im Grunde muss er identisch mit dem Pfad des angeforderten Inhalts sein.

z.B. http://example.com/index.html -> /index.html

Er muss mit dem Schrägstrich `/' beginnen.

Das Sternchenzeichen `*' bedeutet Platzhalter.

  • Das `*' Zeichen darf nur einmal vorkommen. z.B. /foo/*/bar/*.jpg ist nicht erlaubt.

  • Sie können das `*' Zeichen in jedem Teil verwenden, z.B. als Teil des Verzeichnisnamens, des Dateinamens oder der Dateinamensendung.

  • Wenn Sie das `*' Zeichen wörtlich verwenden, müssen Sie es mit einem Backslash escapen.

Die Direktive pta_auth_method kann die Methode zur Authentifizierung angeben. Sie können den Typ der Abfragezeichenfolge, des Cookies oder beides als Methode wählen.

Im Falle von beidem wird die Abfragezeichenfolge zuerst ausgewertet, und dann wird das Cookie ausgewertet, wenn der pta-Parameter nicht in der Abfragezeichenfolge enthalten ist. Wenn der pta-Parameter in der Abfragezeichenfolge ungültig ist, schlägt die Authentifizierung fehl, ohne auf die Auswertung des Cookies zurückzugreifen. Nur wenn der pta-Parameter in der Abfragezeichenfolge fehlt, wird das Cookie ausgewertet.

GitHub

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