Saltar a contenido

t1k: Implementación en Lua del protocolo T1K para Chaitin/SafeLine WAF

Instalación

Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.

CentOS/RHEL 7 o 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

Para usar esta biblioteca Lua con NGINX, asegúrate de que nginx-module-lua esté instalado.

Este documento describe lua-resty-t1k v1.1.6 lanzado el 04 de noviembre de 2024.


LuaRocks Releases License

Sinopsis

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

        local t = {
            mode = "block",                            -- bloquear o monitorear o desactivado, por defecto desactivado
            host = "unix:/workdir/snserver.sock",      -- requerido, host del servicio de detección SafeLine WAF, se admite socket de dominio unix, IP o dominio, cadena
            port = 8000,                               -- requerido cuando el host es una IP o dominio, puerto del servicio de detección SafeLine WAF, entero
            connect_timeout = 1000,                    -- tiempo de espera de conexión, en milisegundos, entero, por defecto 1s (1000ms)
            send_timeout = 1000,                       -- tiempo de espera de envío, en milisegundos, entero, por defecto 1s (1000ms)
            read_timeout = 1000,                       -- tiempo de espera de lectura, en milisegundos, entero, por defecto 1s (1000ms)
            req_body_size = 1024,                      -- tamaño del cuerpo de la solicitud, en KB, entero, por defecto 1MB (1024KB)
            keepalive_size = 256,                      -- máximo de conexiones inactivas concurrentes al servicio de detección SafeLine WAF, entero, por defecto 256
            keepalive_timeout = 60000,                 -- tiempo de espera de conexión inactiva, en milisegundos, entero, por defecto 60s (60000ms)
            remote_addr = "http_x_forwarded_for: 1",   -- dirección remota de ngx.var.VARIABLE, cadena, por defecto de ngx.var.remote_addr
        }

        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()
    }
}

Lua Resty T1K vs. C T1K

C T1K, como parte de la edición empresarial de SafeLine, es un modo de implementación diseñado en lenguaje C para un rendimiento mejorado. Es compatible con todas las versiones de Nginx y no requiere implementación a través de OpenResty (lua_nginx_module).

Lua Resty T1K C T1K
Detección de Solicitudes
Detección de Respuestas
Comprobaciones de Salud*
Protección de Cookies
Protección contra Bots
Estadísticas del lado del Proxy

* APISIX implementa la funcionalidad de comprobación de salud para el plugin chaitin-waf. Para más información, consulta la documentación de chaitin-waf.

GitHub

Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-t1k.