引言
有 nas 的相信对公网都不陌生,在现在基础上传带宽能有 100 兆的时代,有公网代表着家里有一个小 服务器 ,像 百度 网盘,优酷这种在线服务都能部署为私有化服务。但现在 运营商 几乎不可能提供公网 ip,要么自己买个云服务器做内网穿透或者找免费的内网穿透,或者就是使用 ddns 把每次更改的 ip 解析到域名。但把服务放在公网上,最大的缺点就是不够安全,谁也不知道自己部署的服务安全性怎么样,会不会随便一个 sql 注入,一个 Java 注入就给黑客入侵了。因此在这里教大家部署一个性能强占用资源小的 WAF——雷池 WAF。
据官方文档介绍最小配置 1c1g 就足够了,实测下来占用确实不多!
部署过程
我以 群晖 举例
先创建文件夹 创建文件夹

右键属性后复制位置的地址,一会有用,查看目录地址。

一键脚本安装
用 finalshell 或者别的 ssh 工具进入群晖系统,输入 sudo -i 进入 root 权限后输入:
bash -c "$(curl -fsSLk https://cdn.jsdelivr.net/gh/wintsa123/SafeLine/setup.sh)"

在这里填入文件夹属性里面的链接后回车即可,然后就是等候就好了,默认使用的是华为云的 docker 镜像,所有很快就好了。
大家注意这一步⬆️
打开雷池面板
地址栏输入群晖 ip+9443 端口进行访问,账号密码在脚本结束的时候是有提供的,没有也不要急,输入忘记密码提示的这个命令可以重置 admin 用户登录。

登记站点
到了最后一步了,大家先把用群晖或者群晖的上流的软路由之类的把端口全关闭,或者用群晖的防火墙关闭端口,只留一个端口,外网通过访问这个端口进入再通过雷池 WAF 监听这个端口,根据域名判断进行反向代理即可。另外说一句,对于家庭网络一般都是没有开放 80 端口的,所以这里设置监听设置 80 以外的端口不要重复的即可(如果重复他会自动提示的,不需要自己慢慢查)。
如果是公司这种有公网 ip 的群晖,是需要先进入 root 权限修改系统原生的 nginx 监听端口。

设置反向代理
设置完后尝试多访问几次网站,网站访问成功后,查看雷池 WAF 的请求次数有没有增长,如果有变化就是部署成功了。
再来科普一下雷池 WAF 的原理,雷池 WAF 就是基于 nginx 开发的,有这 nginx 一样的功能,在客户端访问网页的时候,作为一个中转反代的时候进行了语义化的判断,自动检测类似 SQL 注入等等的请求。

原理
这里测试一下简单的 sql 注入会发生什么,可以看到直接被 ban 了
关于资源占用
雷池 WAF 一共部署了 8 个 docker,有数据库,后端服务,前端服务,nginx 服务,网桥服务 … 我是直接部署在公司电脑,目前日访问是 4w 请求,cpu 占用平时不超过 5%,内存 一共占用 1.4g。
我个人觉得这个占用是可以接受的,毕竟我的群晖是自组的,内存我只分配了 9g 也完全够用。
额外的功能
防止高频访问,人机验证,也就是防爬虫用的,有一些照片的服务或者自建图床不想被第三方调用的就可以通过这个进行限制了~
参考资料: