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.
Abfragezeichenfolge und Cookie
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.