引言
有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)"
大家注意这一步⬆️
使用群晖的千万别使用官方提供的一键脚本,bug很多,我在这里修复了一下。
打开雷池面板
地址栏输入群晖 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也完全够用。
额外的功能
防止高频访问,人机验证,也就是防爬虫用的,有一些照片的服务或者自建图床不想被第三方调用的就可以通过这个进行限制了~
参考资料: