ngx_lua_waf
ngx_lua_waf é um firewall de aplicações web baseado em ngx_lua desenvolvido quando entrei na Fun Travel.
O código é simples, e a intenção original do desenvolvimento é usar simplicidade, alto desempenho e leveza.
Agora é de código aberto e está em conformidade com a licença do MIT. Ele contém nossas regras de filtragem. Se você tiver alguma sugestão ou quiser fazer fa, fique à vontade para melhorar comigo.
Utilizações:
Prevenir ataques web como injeção SQL, inclusão local, transbordamento parcial, testes de fuzzing, xss, SSRF, etc Prevenir vazamento de arquivos, como SVN/backup Prevenir ataques de ferramentas de testes de estresse como o ApacheBench Bloqueie ferramentas comuns de varredura e scanners Bloquear solicitações de rede incomuns Bloqueie a permissão de execução PHP do diretório anexo de imagens Prevenir uploads de webshell
Instalação Recomendada:
Recomenda-se usar o lujit2.1 para suporte a lua
ngx_lua se for uma versão 0.9.2 ou posterior, recomenda-se mudar a função de filtro regular para ngx.re.find, e a eficiência de correspondência será aumentada cerca de três vezes.
Instruções de uso:
O caminho de instalação nginx é assumido como: /usr/local/nginx/conf/
Baixe o ngx_lua_waf no diretório de conf, descompacte e dê o nome WAF
Adicione na seção http do nginx.conf
Configure o diretório de regras WAF no config.lua (geralmente no diretório waf/conf/)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Se o caminho absoluto mudar, ele precisa ser modificado de acordo
Depois reinicie o nginx
Detalhes do Perfil:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --diretório de armazenamento de regras Registro de ataques = "desligado" --Para ativar o registro de informações de ataque, você precisa configurar o logdir logdir = "/usr/local/nginx/logs/hack/" --diretório de armazenamento de logs, que precisa ser criado pelo próprio usuário, e requer a permissão de gravação do usuário nginx UrlDeny="on" --se deve bloquear o acesso à URL Redireciona="on" --se redirecionar após a interceptação CookieMatch = "ligado" --Se bloquear ataques de cookies pósPartida = "on" --se deve bloquear um ataque pós-ataque whiteModule = "ligado" --ativar ou não a lista de URL black_fileExt={"php","jsp"} --Preencha o tipo de sufixo do arquivo que não pode ser enviado ipWhitelist={"127.0.0.1"} --lista branca de IP, múltiplos IPs são separados por vírgulas ipBlocklist={"1.0.0.1"} --lista negra de IP, múltiplos IPs são separados por vírgulas CCDeny="on" --Se deve permitir a interceptação de ataques cc (requer que o segmento HTTP do nginx.conf seja aumentado lua_shared_dict limite de 10m; ) CCrate = "100/60" --Ajuste a frequência de ataque do CC em segundos. --Por padrão, o mesmo endereço IP só pode solicitar o mesmo endereço 100 vezes por minuto html=[[Por favor, vá embora~~]] --Conteúdo de aviso, personalizável entre parênteses Nota: Não use aspas duplas para ser sensível a maiúsculas minúsculas
Verifique se as regras estão em vigor
Após a implantação, você pode tentar o seguinte comando:
Nota: Por padrão, a máquina não filtra na lista branca, e você pode ajustar a configuração do config.lua sozinho
As renderizações são as seguintes:
Atualizações das Regras:
Considerando o problema de cache dos regulares, regras dinâmicas afetam o desempenho, então não uso coisas como dicionários de memória compartilhada e redis para gerenciamento dinâmico.
Atualizações de regras podem ser colocadas em outros servidores, e as regras podem ser atualizadas baixando-as regularmente pela tarefa crontab, e o recarregamento nginx entrará em vigor. Para garantir o alto desempenho do NGX LUA WAF.
Grave apenas o registro do filtro, não ative o filtro, apenas adicione um comentário antes de check no código, se precisar filtrar, vice-versa
Algumas observações:
As regras de filtragem podem ser ajustadas de acordo com suas necessidades no wafconf, e cada regra precisa ser encapsulada ou dividida com |
Regras ARG Get Parameter to Filter URLs são regras que solicitam apenas URLs filtradas no GET Post é uma regra de filtragem apenas em solicitações de Post A whitelist é uma whitelist, e as URLs nela coincidem para que não seja filtrada user-agent é uma regra de filtragem para user-agent
O filtro de Get e de posts está ativado por padrão, se precisar ativar o filtro de cookies, edite a parte waf.lua cancelar - comentário
O formato do nome do arquivo de log é o seguinte: Nome do Host Web _sec.log
|