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

打印 上一主题 下一主题

主题 1008|帖子 1008|积分 3024

弁言

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

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

  1. [root@master ~]# git clone https://github.com/loveshell/ngx_lua_waf.git
复制代码
Wget 下载

  1. [root@master ~]# wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip
复制代码
安装步调


  • 下载并解压 :将下载的 ngx_lua_waf 文件夹解压到您的 Nginx 设置目次中。
  • 重命名 :将解压后的文件夹重命名为 waf。
  • 验证 :检查 waf 文件夹是否已准确放置。
  1. [root@master nginx]# mv ngx_lua_waf/ waf
  2. [root@master conf]# ll
复制代码
设置详解

以 /usr/local/openresty/nginx/conf 作为 Nginx 安装路径的示例:
Nginx 设置

在 Nginx 的 http 块中添加以下设置:
  1. http {
  2.     lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua"; # 设置 Lua 脚本搜索路径
  3.     lua_shared_dict limit 10m;  # 定义一个共享字典用于限制检查
  4.     init_by_lua_file /usr/local/openresty/nginx/conf/waf/init.lua;  # 初始化 WAF
  5.     access_by_lua_file /usr/local/openresty/nginx/conf/waf/waf.lua;  # 访问控制
  6.     include       mime.types;
  7.     default_type  application/octet-stream;
  8.     server {
  9.         listen       80;
  10.         server_name  www.test.com;
  11.         ...
  12.         }
  13. }
复制代码
config.lua 文件设置

以下是 config.lua 文件的设置项及其描述:
  1. RulePath = "/usr/local/openresty/nginx/conf/waf/wafconf/"
  2. attacklog = "on"
  3. logdir = "/usr/local/openresty/nginx/logs/hack/"
  4. UrlDeny="on"
  5. Redirect="on"
  6. CookieMatch="on"
  7. postMatch="on"
  8. whiteModule="on"
  9. black_fileExt={"php","jsp"}
  10. ipWhitelist={"127.0.0.1"}
  11. ipBlocklist={"1.0.0.1"}
  12. CCDeny="on"     
  13. CCrate="50/1"  
  14. html = [[{"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}]]
复制代码
参数范例描述RulePathstringWAF 规则文件的目次路径attacklogstring是否开启攻击日志记录,默以为 “on”logdirstring攻击日志存放的目次UrlDenystring是否开启 URL 访问拦截,默以为 “on”Redirectstring拦截后是否重定向,默以为 “on”CookieMatchstring是否开启 Cookie 攻击拦截,默以为 “on”postMatchstring是否开启 POST 攻击拦截,默以为 “on”whiteModulestring是否开启 URL 白名单,默以为 “on”black_fileExttable不答应上传的文件后缀范例列表ipWhitelisttableIP 白名单的 IP 地址列表ipBlocklisttableIP 黑名单的 IP 地址列表CCDenystring是否开启 CC 攻击防护,默以为 “off”CCratestringCC 攻击频率限制,格式为请求数/时间(秒)htmlstring自定义失败提示信息,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 以应用更改:
  1. /usr/local/nginx/sbin/nginx -s reload
复制代码
测试 WAF 设置

通过发送恶意请求来测试 WAF 是否准确设置和生效:
  1. # 典型的文件路径遍历攻击,也称为本地文件包含(LFI)攻击
  2. [root@master ~]# curl http://www.test.com/?id=../etc/passwd
  3. {"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}
  4. # 路径遍历,类似于LFI,攻击者尝试访问受限资源或目录之外的文件
  5. [root@master ~]# curl http://www.test.com/?file=../../../../etc/shadow
  6. {"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}
  7. # 跨站脚本 (XSS)
  8. [root@master ~]# curl http://www.test.com/?search=%22%3E%3Cscript%3Ealert%28123%29%3C%2Fscript%3E
  9. {"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}}
复制代码
尝试了几种攻击,都返回{"retcode":"20001","messages":"请求失败,请稍后再试!","body":{}},阐明 WAF
已成功拦截了该请求。
安全性最佳实践



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



  • 监控WAF对性能的影响,并根据需要调整设置。
  • 思量利用CDN服务来减轻WAF的压力。
故障排查



  • 检查日志文件以辨认息争决攻击或误报问题。
  • 利用调试模式来渐渐检查WAF的行为。
社区和资源链接



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

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

从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同砚们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,本领越强机会才越多。
因为入门学习阶段知识点比较杂,以是我讲得比较笼统,各人如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相干资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。
干货主要有:
①1000+CTF历届题库(主流和经典的应该都有了)
②CTF技术文档(最全中文版)
③项目源码(四五十个有趣且经典的练手项目及源码)
④ CTF大赛、web安全、分泌测试方面的视频(得当小白学习)
⑤ 网络安全学习路线图(告别不入流的学习)
⑥ CTF/分泌测试工具镜像文件大全
⑦ 2023暗码学/隐身术/PWN技术手册大全
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表