0


OpenResty WAF配置指南:增强Web应用安全

引言

在当今的网络安全环境中,Web应用面临着各种威胁。WAF(Web 应用防火墙)作为一个关键的防御组件,可以有效地保护您的Web应用免受SQL注入、XSS、CSRF等攻击。OpenResty WAF模块以其高效和灵活性,成为许多企业和开发者的首选。

WAF 模块获取

您可以通过以下两种方式之一获取 Nginx Lua WAF:

Git 克隆

[root@master ~]# git clone https://github.com/loveshell/ngx_lua_waf.git 

Wget 下载

[root@master ~]# wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip 

安装步骤

  1. 下载并解压:将下载的 ngx_lua_waf 文件夹解压到您的 Nginx 配置目录中。
  2. 重命名:将解压后的文件夹重命名为 waf
  3. 验证:检查 waf 文件夹是否已正确放置。
[root@master nginx]# mv ngx_lua_waf/ waf[root@master conf]# ll

配置详解

/usr/local/openresty/nginx/conf

作为 Nginx 安装路径的示例:

Nginx 配置

在 Nginx 的

http

块中添加以下配置:

http {
    lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";# 设置 Lua 脚本搜索路径
    lua_shared_dict limit 10m;# 定义一个共享字典用于限制检查
    init_by_lua_file /usr/local/openresty/nginx/conf/waf/init.lua;# 初始化 WAF
    access_by_lua_file /usr/local/openresty/nginx/conf/waf/waf.lua;# 访问控制

    include       mime.types;
    default_type  application/octet-stream;
    server {
        listen       80;
        server_name  www.test.com;...
        }}

config.lua

文件配置

以下是

config.lua

文件的配置项及其描述:

RulePath ="/usr/local/openresty/nginx/conf/waf/wafconf/" 
attacklog ="on"
logdir ="/usr/local/openresty/nginx/logs/hack/"
UrlDeny="on"
Redirect="on"
CookieMatch="on"
postMatch="on"
whiteModule="on"
black_fileExt={"php","jsp"}
ipWhitelist={"127.0.0.1"}
ipBlocklist={"1.0.0.1"}
CCDeny="on"     
CCrate="50/1"  
html =[[{"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}]]

参数类型描述

RulePath

stringWAF 规则文件的目录路径

attacklog

string是否开启攻击日志记录,默认为 “on”

logdir

string攻击日志存放的目录

UrlDeny

string是否开启 URL 访问拦截,默认为 “on”

Redirect

string拦截后是否重定向,默认为 “on”

CookieMatch

string是否开启 Cookie 攻击拦截,默认为 “on”

postMatch

string是否开启 POST 攻击拦截,默认为 “on”

whiteModule

string是否开启 URL 白名单,默认为 “on”

black_fileExt

table不允许上传的文件后缀类型列表

ipWhitelist

tableIP 白名单的 IP 地址列表

ipBlocklist

tableIP 黑名单的 IP 地址列表

CCDeny

string是否开启 CC 攻击防护,默认为 “off”

CCrate

stringCC 攻击频率限制,格式为请求数/时间(秒)

html

string自定义失败提示信息,JSON 格式

WAF规则文件

在 OpenResty WAF中,

wafconf/

目录下的各个子目录通常用于存放不同类型的检测规则。以下是每个子目录的含义及其作用:

  • args:这个目录可能包含与 URL 参数或查询字符串参数相关的规则。例如,检测 SQL 注入攻击中常见的参数名或值,或者识别其他可疑的参数。
  • cookie:包含用于检测 HTTP 请求中 Cookie 头中潜在恶意内容的规则。这可以包括检测跨站脚本(XSS)攻击、会话劫持等。
  • post:用于存放与 HTTP POST 请求相关的规则,这些规则可能用于检测 POST 请求体中的恶意内容,如 XSS 攻击载荷、SQL 注入攻击尝试等。
  • url:包含用于检测 URL 本身(不包括参数)的规则。这可能包括识别和阻止钓鱼链接、URL 重定向攻击或其它可疑的 URL 模式。
  • user-agent:这个目录可能包含用于检查 HTTP 请求中的 User-Agent 头的规则。一些自动化的扫描工具或恶意用户可能会在 User-Agent 中使用特定的字符串,这些规则可以帮助识别这些行为。
  • whiteurl:通常用于定义 URL 白名单规则。如果请求的 URL 与这个目录下的规则匹配,那么即使其他条件满足,请求也不会被 WAF 拦截。

每个目录下的规则文件都可能包含一系列的检测条件,用于识别和响应特定的威胁。这些规则可以是正则表达式、字符串匹配或其他类型的模式匹配,具体取决于规则的编写和WAF的实现。

激活 WAF 模块

完成配置后,重启 Nginx 以应用更改:

/usr/local/nginx/sbin/nginx -s reload

测试 WAF 配置

通过发送恶意请求来测试 WAF 是否正确配置和生效:

# 典型的文件路径遍历攻击,也称为本地文件包含(LFI)攻击[root@master ~]# curl http://www.test.com/?id=../etc/passwd{"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}# 路径遍历,类似于LFI,攻击者尝试访问受限资源或目录之外的文件[root@master ~]# curl http://www.test.com/?file=../../../../etc/shadow{"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}# 跨站脚本 (XSS)[root@master ~]# curl http://www.test.com/?search=%22%3E%3Cscript%3Ealert%28123%29%3C%2Fscript%3E{"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}

尝试了几种攻击,都返回

{"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}

,说明 WAF 已成功拦截了该请求。

安全性最佳实践

  • 定期更新WAF规则以应对新出现的威胁。
  • 使用复杂的规则集以提高安全性。
  • 启用日志记录以便于事后分析。

性能优化

  • 监控WAF对性能的影响,并根据需要调整配置。
  • 考虑使用CDN服务来减轻WAF的压力。

故障排查

  • 检查日志文件以识别和解决攻击或误报问题。
  • 使用调试模式来逐步检查WAF的行为。

社区和资源链接

  • OpenResty 官方文档
  • Nginx Lua WAF GitHub 仓库

总结

通过本指南,您应该能够成功地在您的OpenResty环境中配置和优化WAF,以提高Web应用的安全性。记得定期审查和更新您的WAF规则,以保持最佳的安全姿态。

标签: openresty 前端 安全

本文转载自: https://blog.csdn.net/dhf880913/article/details/138163715
版权归原作者 我是峰迹 所有, 如有侵权,请联系我们删除。

“OpenResty WAF配置指南:增强Web应用安全”的评论:

还没有评论