t1k: Implementação Lua do protocolo T1K para Chaitin/SafeLine WAF
Instalação
Se você ainda não configurou a assinatura do repositório RPM, inscreva-se. Depois, você pode prosseguir com os seguintes passos.
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 lua-resty-t1k v1.1.6 lançado em 04 de novembro de 2024.
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 SafeLine WAF, socket de domínio unix, IP ou domínio são suportados, string
port = 8000, -- obrigatório quando o host é um IP ou domínio, porta do serviço de detecção SafeLine WAF, 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 ao serviço de detecção SafeLine WAF, 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 de ngx.var.VARIABLE, string, padrão 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 da edição empresarial da 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ção | ✅ | ✅ |
| Detecção de Resposta | ❌ | ✅ |
| Verificações de Saúde* | ❌ | ✅ |
| Proteção de Cookies | ❌ | ✅ |
| Proteção contra Bots | ❌ | ✅ |
| Estatísticas do Lado 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 adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-t1k.