Zum Inhalt

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.


LuaRocks Releases License

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.