t1k: Implementação em Lua do protocolo T1K para o WAF Chaitin/SafeLine
Instalação
Se você ainda não configurou a assinatura do repositório RPM, cadastre-se. Em seguida, você pode prosseguir com as etapas a seguir.
CentOS/RHEL 7 ou 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 com NGINX, certifique-se de que o nginx-module-lua esteja instalado.
Este documento descreve o lua-resty-t1k v1.2.1 lançado em 05 de agosto de 2026.
Sinopse
location / {
access_by_lua_block {
local t1k = require "resty.t1k"
local t = {
mode = "block", -- block ou monitor ou off, padrão off
host = "unix:/workdir/snserver.sock", -- obrigatório, host do serviço de detecção do WAF SafeLine, suporta socket de domínio Unix, IP ou domínio, string
port = 8000, -- obrigatório quando o host é um IP ou domínio, porta do serviço de detecção do WAF SafeLine, inteiro
connect_timeout = 1000, -- tempo limite de conexão, em milissegundos, inteiro, padrão 1s (1000ms)
send_timeout = 1000, -- tempo limite de envio, em milissegundos, inteiro, padrão 1s (1000ms)
read_timeout = 1000, -- tempo limite de leitura, em milissegundos, inteiro, padrão 1s (1000ms)
req_body_size = 1024, -- tamanho do corpo da requisição, em KB, inteiro, padrão 1MB (1024KB)
keepalive_size = 256, -- número máximo de conexões ociosas simultâneas com o serviço de detecção do WAF SafeLine, inteiro, padrão 256
keepalive_timeout = 60000, -- tempo limite de conexão ociosa, em milissegundos, inteiro, padrão 60s (60000ms)
remote_addr = "http_x_forwarded_for: 1", -- endereço remoto a partir de ngx.var.VARIABLE, string, padrão a partir de ngx.var.remote_addr
log_resp = false, -- reportar a resposta ao serviço de detecção do WAF SafeLine, booleano, padrão false
resp_body_size = 4, -- tamanho do corpo da resposta a ser reportado, em KB, inteiro, padrão 4KB, usado apenas quando log_resp é true
extra_ignored_content_types = "text/csv", -- tipos de conteúdo de resposta adicionais a ignorar, separados por vírgula, string, usado apenas quando log_resp é true
}
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()
}
-- os dois blocos a seguir são necessários apenas quando log_resp é true
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()
}
}
Registro de Respostas
Quando log_resp está habilitado, a linha de status da resposta, os cabeçalhos e até resp_body_size KB do corpo da resposta são
reportados ao serviço de detecção do WAF SafeLine após a conclusão da requisição. O relatório é enviado a partir de um ngx.timer, portanto
não adiciona latência à própria resposta.
As respostas são ignoradas quando a requisição já foi bloqueada, ou quando o Content-Type da resposta corresponde a um tipo
ignorado integrado (áudio, vídeo, fonte, imagem e outros tipos de mídia binária). Use extra_ignored_content_types para ignorar
tipos de conteúdo adicionais.
Lua Resty T1K vs. C T1K
C T1K, como parte da edição empresarial do SafeLine, é um modo de implantação desenvolvido em linguagem C para desempenho aprimorado. É compatível com todas as versões do Nginx e não requer implantação via OpenResty (lua_nginx_module).
| Lua Resty T1K | C T1K | |
|---|---|---|
| Detecção de Requisições | ✅ | ✅ |
| Detecção de Respostas | ❌ | ✅ |
| Verificações de Saúde* | ❌ | ✅ |
| Proteção de Cookies | ❌ | ✅ |
| Proteção contra Bots | ❌ | ✅ |
| Estatísticas do Proxy | ❌ | ✅ |
* O APISIX implementa a funcionalidade de verificação de saúde para o plugin chaitin-waf. Para mais informações, consulte a documentação do chaitin-waf.
GitHub
Você pode encontrar dicas de configuração adicionais e documentação para este módulo no repositório GitHub do nginx-module-t1k.