t1k: Lua-Implementierung des T1K-Protokolls für Chaitin/SafeLine WAF
Installation
Falls Sie noch kein RPM-Repository-Abonnement eingerichtet haben, registrieren Sie sich. Danach können Sie mit den folgenden Schritten fortfahren.
CentOS/RHEL 7 oder Amazon Linux 2
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 lua-resty-t1k
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-t1k
Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.
Dieses Dokument beschreibt lua-resty-t1k v1.2.1, veröffentlicht am 05. August 2026.
Synopsis
location / {
access_by_lua_block {
local t1k = require "resty.t1k"
local t = {
mode = "block", -- block oder monitor oder off, Standard: off
host = "unix:/workdir/snserver.sock", -- erforderlich, SafeLine WAF-Erkennungsdienst-Host, Unix-Domain-Socket, IP oder Domain wird unterstützt, Zeichenkette
port = 8000, -- erforderlich, wenn der Host eine IP oder Domain ist, SafeLine WAF-Erkennungsdienst-Port, Ganzzahl
connect_timeout = 1000, -- Verbindungs-Timeout, in Millisekunden, Ganzzahl, Standard: 1s (1000ms)
send_timeout = 1000, -- Sende-Timeout, in Millisekunden, Ganzzahl, Standard: 1s (1000ms)
read_timeout = 1000, -- Lese-Timeout, in Millisekunden, Ganzzahl, Standard: 1s (1000ms)
req_body_size = 1024, -- Größe des Anforderungstexts, in KB, Ganzzahl, Standard: 1MB (1024KB)
keepalive_size = 256, -- maximale gleichzeitige Leerlaufverbindungen zum SafeLine WAF-Erkennungsdienst, Ganzzahl, Standard: 256
keepalive_timeout = 60000, -- Leerlaufverbindungs-Timeout, in Millisekunden, Ganzzahl, Standard: 60s (60000ms)
remote_addr = "http_x_forwarded_for: 1", -- Remote-Adresse von ngx.var.VARIABLE, Zeichenkette, Standard: von ngx.var.remote_addr
log_resp = false, -- Antwort an den SafeLine WAF-Erkennungsdienst melden, boolesch, Standard: false
resp_body_size = 4, -- Größe des zu meldenden Antworttexts, in KB, Ganzzahl, Standard: 4KB, nur verwendet wenn log_resp true ist
extra_ignored_content_types = "text/csv", -- zusätzliche Antwort-Content-Types, die übersprungen werden sollen, kommagetrennt, Zeichenkette, nur verwendet wenn log_resp true ist
}
local ok, err, _ = t1k.do_access(t, true)
if not ok then
ngx.log(ngx.ERR, err)
end
}
header_filter_by_lua_block {
local t1k = require "resty.t1k"
t1k.do_header_filter()
}
-- die folgenden beiden Blöcke sind nur erforderlich, wenn log_resp true ist
body_filter_by_lua_block {
local t1k = require "resty.t1k"
t1k.do_body_filter()
}
log_by_lua_block {
local t1k = require "resty.t1k"
t1k.do_log()
}
}
Antwortprotokollierung
Wenn log_resp aktiviert ist, werden die Statuszeile der Antwort, die Header und bis zu resp_body_size KB des Antworttexts
nach Abschluss der Anfrage an den SafeLine WAF-Erkennungsdienst gemeldet. Der Bericht wird über einen ngx.timer gesendet,
sodass er keine Latenz zur Antwort selbst hinzufügt.
Antworten werden übersprungen, wenn die Anfrage bereits blockiert wurde oder wenn der Content-Type der Antwort einem
eingebauten ignorierten Typ entspricht (Audio, Video, Schriftarten, Bilder und andere binäre Medientypen). Verwenden Sie
extra_ignored_content_types, um zusätzliche Content-Types zu überspringen.
Lua Resty T1K vs. C T1K
C T1K ist als Teil der Enterprise-Edition von SafeLine ein in C entwickelter Bereitstellungsmodus für verbesserte Leistung. Er ist mit allen Versionen von Nginx kompatibel und erfordert keine Bereitstellung über OpenResty (lua_nginx_module).
| Lua Resty T1K | C T1K | |
|---|---|---|
| Anforderungserkennung | ✅ | ✅ |
| Antworterkennung | ❌ | ✅ |
| Health Checks* | ❌ | ✅ |
| Cookie-Schutz | ❌ | ✅ |
| Bot-Schutz | ❌ | ✅ |
| Proxy-seitige Statistiken | ❌ | ✅ |
* APISIX implementiert Health-Check-Funktionalität für das chaitin-waf-Plugin. Weitere Informationen finden Sie in der chaitin-waf-Dokumentation.
GitHub
Weitere Konfigurationstipps und Dokumentationen für dieses Modul finden Sie im GitHub-Repository für nginx-module-t1k.