群晖一键部署雷池WAF防火墙,打造企业级网络安全防线!
引言
有nas的相信对公网都不模式,在现在基础上传带宽能有100兆的时代,有公网代表着家里有一个小服务器,像百度网盘,优酷这种在线服务都能部署为私有化服务。但现在运营商几乎不可能提供公网ip,要么自己买个云服务器做内网穿透或者找免费的内网穿透,或者就是使用ddns把每次更改的ip解析到域名。但把服务放在公网上,最大的缺点就是不够安全,谁也不知道自己部署的服务安全性怎么样,会不会随便一个sql注入,一个java注入就给黑客入侵了。因此在这里教大家部署一个性能强占用资源小的WAF——雷池WAF。
据官方文档介绍最小配置1c1g就足够了,实测下来占用确实不多!
部署过程
我以群晖举例
1.先创建文件夹
创建文件夹右键属性后复制位置的地址,一会有用!!!
查看目录地址2.大家注意这一步!!!使用群晖的千万别使用官方提供的一键脚本,bug很多,我在这里修复了一下。
用finalshell或者别的ssh工具进入群晖系统,输入sudo -i 进入root权限后输入
bash -c "$(curl -fsSLk https://cdn.jsdelivr.net/gh/wintsa123/SafeLine/setup.sh)"
在这里填入文件夹属性里面的链接后回车即可,然后就是等候就好了,默认使用的是华为云的docker镜像,所有很快就好了。
3.打开雷池面板
地址栏输入群晖ip+9443端口进行访问,账号密码在脚本结束的时候是有提供的,没有也不要急,输入忘记密码提示的这个命令可以重置admin用户。
登录4.登记站点
到了最后一步了,大家先把用群晖或者群晖的上流的软路由之类的把端口全关闭,或者用群晖的防火墙关闭端口,只留一个端口,外网通过访问这个端口进入再通过雷池WAF监听这个端口,根据域名判断进行反向代理即可。另外说一句,对于家庭网络一般都是没有开放80端口的,所以这里设置监听设置80以外的端口不要重复的即可(如果重复他会自动提示的,不需要自己慢慢查)。
如果是公司这种有公网ip的群晖,是需要先进入root权限修改系统原生的nginx监听端口。
设置反代设置完后尝试多访问几次网站,网站访问成功后,查看雷池WAF的请求次数有没有增长,如果有变化就是部署成功了。
再来科普一下雷池WAF的原理,雷池WAF就是基于nginx开发的,有这nginx一样的功能, 在客户端访问网页的时候,作为一个中转反代的时候进行了语义化的判断,自动检测类似SQL注入等等的请求。
原理这里测试一下简单的sql注入会发生什么,可以看到直接被ban了

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

以上便是本期的全部内容了,如果你觉得还算有趣或者对你有所帮助,不妨点赞收藏,最后也希望能得到你的关注,哥们下期见!
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

校验提示文案
校验提示文案
手动新建文件夹,
cat >> .env 里面的内容一项修改:
SUBNET_PREFIX= 169.254.222
因为这个 ip 的原因,我弄了很久才弄明白,
这几天弄雷池waf,折腾了debian,光出错。又弄ubuntu server,这个也容易出错:paython 3,重装ubuntu server 。
最后还是回到只弄群晖,多个系统多个负担,CPU遭不住啊。
校验提示文案
校验提示文案
校验提示文案
Waiting for safeline-pg to be healthy
Container safeline-pg is healthy
Waiting for safeline-mgt to be healthy
Container safeline-mgt is healthy
panic: failed to connect to `host=safeline-pg user=safeline-ce database=safeline-ce`: dial error (dial tcp 172.22.222.2:5432: connect: connection refused)
goroutine 1 [running]:
main.main()
/work/cmd/cli/main.go:43 +0xf93
校验提示文案
postgres: could not access the server configuration file "/var/lib/postgresql/data/postgresql.conf": No such file or directory
校验提示文案
请老大指教,谢谢
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
请老大指教,谢谢
校验提示文案
校验提示文案
校验提示文案
curl: (28) Failed to connect to cdn.jsdelivr.net port 443 after 127328 ms: Error
校验提示文案
校验提示文案
校验提示文案
postgres: could not access the server configuration file "/var/lib/postgresql/data/postgresql.conf": No such file or directory
校验提示文案
Waiting for safeline-pg to be healthy
Container safeline-pg is healthy
Waiting for safeline-mgt to be healthy
Container safeline-mgt is healthy
panic: failed to connect to `host=safeline-pg user=safeline-ce database=safeline-ce`: dial error (dial tcp 172.22.222.2:5432: connect: connection refused)
goroutine 1 [running]:
main.main()
/work/cmd/cli/main.go:43 +0xf93
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
unknown shorthand flag: 'd' in -d
See 'docker --help'.
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
请问到下载这里就出问题,这要怎么处理呢?
校验提示文案
校验提示文案
手动新建文件夹,手累死了。
校验提示文案