Zum Inhalt

t1k: Lua-Implementierung des T1K-Protokolls für Chaitin/SafeLine WAF

Installation

Wenn Sie noch kein RPM-Repository-Abonnement eingerichtet haben, melden Sie sich an. 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.0, veröffentlicht am 30. Juli 2026.


LuaRocks Releases License

Synopsis

location / {
    access_by_lua_block {
        local t1k = require "resty.t1k"

        local t = {
            mode = "block",                            -- block oder monitor oder off, standardmäßig off
            host = "unix:/workdir/snserver.sock",      -- erforderlich, Host des SafeLine WAF-Erkennungsdienstes, unix-Domain-Socket, IP oder Domain wird unterstützt, string
            port = 8000,                               -- erforderlich, wenn der Host eine IP oder Domain ist, Port des SafeLine WAF-Erkennungsdienstes, integer
            connect_timeout = 1000,                    -- Verbindungszeitüberschreitung, in Millisekunden, integer, standardmäßig 1s (1000ms)
            send_timeout = 1000,                       -- Sendezeitüberschreitung, in Millisekunden, integer, standardmäßig 1s (1000ms)
            read_timeout = 1000,                       -- Lesezeitüberschreitung, in Millisekunden, integer, standardmäßig 1s (1000ms)
            req_body_size = 1024,                      -- Größe des Anfragekörpers, in KB, integer, standardmäßig 1MB (1024KB)
            keepalive_size = 256,                      -- maximale gleichzeitige Leerlaufverbindungen zum SafeLine WAF-Erkennungsdienst, integer, standardmäßig 256
            keepalive_timeout = 60000,                 -- Zeitüberschreitung für Leerlaufverbindungen, in Millisekunden, integer, standardmäßig 60s (60000ms)
            remote_addr = "http_x_forwarded_for: 1",   -- Remote-Adresse aus ngx.var.VARIABLE, string, standardmäßig von ngx.var.remote_addr
            log_resp = false,                          -- Antwort an den SafeLine WAF-Erkennungsdienst melden, boolean, standardmäßig false
            resp_body_size = 4,                        -- Größe des zu meldenden Antwortkörpers, in KB, integer, standardmäßig 4KB, wird nur verwendet, wenn log_resp true ist
            extra_ignored_content_types = "text/csv",  -- zusätzliche Antwortinhaltsarten, die übersprungen werden sollen, durch Kommas getrennt, string, wird 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 Antwortstatuszeile, die Header und bis zu resp_body_size KB des Antwortkörpers nach Abschluss der Anfrage an den SafeLine WAF-Erkennungsdienst gemeldet. Der Bericht wird von einem 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 integrierten ignorierten Typ (Audio, Video, Schriftart, Bild und andere binäre Medientypen) entspricht. Verwenden Sie extra_ignored_content_types, um zusätzliche Inhaltsarten zu überspringen.

Lua Resty T1K vs. C T1K

C T1K, als Teil der Unternehmensausgabe von SafeLine, ist ein Bereitstellungsmodus, der in C-Sprache für verbesserte Leistung entwickelt wurde. Es ist mit allen Versionen von Nginx kompatibel und erfordert keine Bereitstellung über OpenResty (lua_nginx_module).

Lua Resty T1K C T1K
Anfrageerkennung
Antworterkennung
Gesundheitsprüfungen*
Cookie-Schutz
Bot-Schutz
Proxy-seitige Statistiken

* APISIX implementiert die Funktionalität zur Gesundheitsprüfung für das chaitin-waf Plugin. Weitere Informationen finden Sie in der chaitin-waf-Dokumentation.

GitHub

Zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul finden Sie im GitHub-Repository für nginx-module-t1k.