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.
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.