photo_2020-09-28_00-03-27.jpg

via 春潮频道

I. 主理人序

毒奶博客的防御体系现已完备(很早很早以前就已完备),包括但不限于 Cloudflare API 的完美应用(拉黑、适时禁用除 get 外的一切 http 请求方法),以及 WAF 的应用,不信,你现在疯狂刷新下页面FFFFFFFFF5 试试;

在此非常感谢 Cloudflare、OpenResty、agentzh、Nginx;

II. OpenResty

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

via https://openresty.org/cn/

BTW,一些新闻:OpenResty 1.19.3.1 正式版正在筹备发布中,本次先发布 RC0 预览版,供社区测试,不推荐生产使用。

本次更新包含了不少重要的新 feature 和 重要的性能优化。 我们在 i9-9900K 测试环境上,用简单的 Lua Hello world 接口,单 worker 的 QPS 可以从 221939 rps 提升到 269423 rps,有 20%+ 的提升。

III. WAF 是什么

waf.jpg

WAF 或 Web Application Firewall 通过过滤和监控 Web 应用程序与 Internet 之间的 HTTP 流量来帮助保护 Web 应用程序。它通常可以保护 Web 应用程序,使其免受跨站点伪造、跨站点脚本 (XSS)、文件包含、SQL 注入及其他一些攻击的影响。WAF 属于协议第 7 层防御策略(OSI 模型),并不能抵御所有类型的攻击。此攻击缓解方法通常隶属于一套工具,整套工具共同针对一系列攻击手段建立整体防御措施。

通过在 Web 应用程序前端部署 WAF,可在 Web 应用程序与 Internet 之间形成一道屏障。虽然代理服务器通过中介保护客户机的身份,但 WAF 是一种反向代理,引导客户端通过 WAF 到达服务器,从而防止暴露服务器。

WAF 通过一组规则(通常称为策略)运行。这些策略旨在过滤恶意流量,防止受到应用程序漏洞的侵害。WAF 的部分价值在于政策修改实施过程快速简便,因而可以更迅速地响应不同的攻击手段;DDoS 攻击期间,可通过修改 WAF 策略快速实施 Rate Limiting。

via 什么是 Web Application Firewall (WAF)?

IV. 开源 WAF 推荐

基于 OpenResty/Nginx+lua 的前提下,有以下几款开源 WAF(Web Application Firewall)推荐给大家;

开源Waf项目名称 项目地址 项目特性
ModSecurity https://github.com/SpiderLabs/ModSecurity
ngx_lua_waf https://github.com/loveshell/ngx_lua_waf 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击 防止svn/备份之类文件泄漏 防止ApacheBench之类压力测试工具的攻击 屏蔽常见的扫描黑客工具,扫描器 屏蔽异常的网络请求 屏蔽图片附件类目录php执行权限 防止webshell上传
waf https://github.com/unixhot/waf
nginx_waf https://github.com/ADD-SP/ngx_waf 更简洁/持续更新

loveshell 的 ngx_lua_waf 是博主较为推荐的一个,在安装好 Openresty 后仅需简单的配置好 conf 即可投入生产使用;nginx_waf 需要进行第三方模块编译;其他两个博主暂未接触无法做太多说明;

以上开源 WAF 项目均提供较为易懂的 Readme 文件,请大家自行查看;

V. 效果

ngx_lua_waf-loveshell.png

Cloudflare-waf.png

抵住了1k多代理刷新页面,并返回HTTP状态503;配合 Cloudflare waf 食用更佳!

VI. FAQ 你可能会遇到的麻烦

大家在安装及配置 WAF 过程中大概会遇到如下以下几点小困难:

1.OpenResty的安装及替换现有 nginx 版本(原汁原味版本);
2.现有 Nginx 动态加载新模块,如 lua-nginx-module
3.手动编译 Nginx,打包模块(module);
4.一些赋权操作,如 chmod 命令在文件目录的赋权应用(读、写、执行);
5.对了,安装 OpenResty 安装前可能需要解决一些 依赖问题
5.博主也尝试过 tengine,最后还是选择了 OpenResty
6.最后,博主建议大家,从安装 OpenResty 开始吧;

VII. 附注

https://openresty.org/cn/ (官网)
https://openresty.org/cn/installation.html (安装教程)
http://tengine.taobao.org/ (Tengine 官网)
https://blog.cloudflare.com/keeping-our-open-source-promise/

最后修改:2023 年 03 月 23 日 05 : 03 PM