担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

2025-12-30 10:05:30 5点赞 23收藏 0评论

SafeLine:

一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命令注入、CRLF 注入、ldap 注入、xpath 注入、RCE、XXE、SSRF、路径遍历、后门、暴力破解、CC、爬虫 等攻击。

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

雷池通过阻断流向 Web 服务的恶意 HTTP 流量来保护 Web 服务。雷池作为反向代理接入网络,通过在 Web 服务前部署雷池,可在 Web 服务和互联网之间设置一道屏障。

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

安装

雷池和 Web 业务服务不建议部署到同一台机器中,安装雷池需要已经有 Docker 运行环境,这里我就直接演示简单演示两种安装方式。个人推荐一键部署方式,安装路径可以自行设置的。对于不想打开 SSH 连接的用户,也可以直接使用 Compose 方式手动部署。

一键部署

使用 SSH 工具连接,切换为 root 用户权限

sudo -i

输入一键安装命令

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

选择安装,输入 1

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

输入安装目录(放到 docker 路径方便管理),接下来等待安装就行

/vol1/1000/docker/safeline(按实际情况修改)担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

安装启动成功,会出现初始化的用户名和密码

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

下面就可以访问管理面板了

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

手动部署

复制下面内容,创建 docker-compose.yaml 和 .env 两个文件

docker-compose.yaml 文件

networks: safeline-ce: name: safeline-ce driver: bridge ipam: driver: default config: - gateway: ${SUBNET_PREFIX:?SUBNET_PREFIX required}.1 subnet: ${SUBNET_PREFIX}.0/24 driver_opts: com.docker.network.bridge.name: safeline-ce services: postgres: container_name: safeline-pg restart: always image: ${IMAGE_PREFIX}/safeline-postgres${ARCH_SUFFIX}:15.2 volumes: - ${SAFELINE_DIR}/resources/postgres/data:/var/lib/postgresql/data - /etc/localtime:/etc/localtime:ro environment: - POSTGRES_USER=safeline-ce - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?postgres password required} networks: safeline-ce: ipv4_address: ${SUBNET_PREFIX}.2 command: [postgres, -c, max_connections=600] healthcheck: test: pg_isready -U safeline-ce -d safeline-ce mgt: container_name: safeline-mgt restart: always image: ${IMAGE_PREFIX}/safeline-mgt${REGION}${ARCH_SUFFIX}:${IMAGE_TAG:?image tag required} volumes: - /etc/localtime:/etc/localtime:ro - ${SAFELINE_DIR}/resources/mgt:/app/data - ${SAFELINE_DIR}/logs/nginx:/app/log/nginx:z - ${SAFELINE_DIR}/resources/sock:/app/sock - /var/run:/app/run ports: - ${MGT_PORT:-9443}:1443 healthcheck: test: curl -k -f https://localhost:1443/api/open/health environment: - MGT_PG=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable - MGT_PROXY=${MGT_PROXY} depends_on: - postgres - fvm logging: driver: "json-file" options: max-size: "100m" max-file: "5" networks: safeline-ce: ipv4_address: ${SUBNET_PREFIX}.4 detect: container_name: safeline-detector restart: always image: ${IMAGE_PREFIX}/safeline-detector${REGION}${ARCH_SUFFIX}:${IMAGE_TAG} volumes: - ${SAFELINE_DIR}/resources/detector:/resources/detector - ${SAFELINE_DIR}/logs/detector:/logs/detector - /etc/localtime:/etc/localtime:ro environment: - LOG_DIR=/logs/detector networks: safeline-ce: ipv4_address: ${SUBNET_PREFIX}.5 tengine: container_name: safeline-tengine restart: always image: ${IMAGE_PREFIX}/safeline-tengine${REGION}${ARCH_SUFFIX}:${IMAGE_TAG} volumes: - /etc/localtime:/etc/localtime:ro - /etc/resolv.conf:/etc/resolv.conf:ro - ${SAFELINE_DIR}/resources/nginx:/etc/nginx - ${SAFELINE_DIR}/resources/detector:/resources/detector - ${SAFELINE_DIR}/resources/chaos:/resources/chaos - ${SAFELINE_DIR}/logs/nginx:/var/log/nginx:z - ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache - ${SAFELINE_DIR}/resources/sock:/app/sock environment: - TCD_MGT_API=https://${SUBNET_PREFIX}.4:1443/api/open/publish/server - TCD_SNSERVER=${SUBNET_PREFIX}.5:8000 # deprecated - SNSERVER_ADDR=${SUBNET_PREFIX}.5:8000 - CHAOS_ADDR=${SUBNET_PREFIX}.10 ulimits: nofile: 131072 network_mode: host luigi: container_name: safeline-luigi restart: always image: ${IMAGE_PREFIX}/safeline-luigi${REGION}${ARCH_SUFFIX}:${IMAGE_TAG} environment: - MGT_IP=${SUBNET_PREFIX}.4 - LUIGI_PG=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable volumes: - /etc/localtime:/etc/localtime:ro - ${SAFELINE_DIR}/resources/luigi:/app/data logging: driver: "json-file" options: max-size: "100m" max-file: "5" depends_on: - detect - mgt networks: safeline-ce: ipv4_address: ${SUBNET_PREFIX}.7 fvm: container_name: safeline-fvm restart: always image: ${IMAGE_PREFIX}/safeline-fvm${REGION}${ARCH_SUFFIX}:${IMAGE_TAG} volumes: - /etc/localtime:/etc/localtime:ro logging: driver: "json-file" options: max-size: "100m" max-file: "5" networks: safeline-ce: ipv4_address: ${SUBNET_PREFIX}.8 chaos: container_name: safeline-chaos restart: always image: ${IMAGE_PREFIX}/safeline-chaos${REGION}${ARCH_SUFFIX}:${IMAGE_TAG} logging: driver: "json-file" options: max-size: "100m" max-file: "10" environment: - DB_ADDR=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable volumes: - ${SAFELINE_DIR}/resources/sock:/app/sock - ${SAFELINE_DIR}/resources/chaos:/app/chaos networks: safeline-ce: ipv4_address: ${SUBNET_PREFIX}.10

.env 文件

SAFELINE_DIR=/vol1/1000/docker/safeline IMAGE_TAG=latest MGT_PORT=9443 POSTGRES_PASSWORD=WrKvo1VfKMRFWHZsPMZC SUBNET_PREFIX=172.22.222 IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline ARCH_SUFFIX= RELEASE= REGION= MGT_PROXY=0

参数说明(只说需要修改部分)

SAFELINE_DIR:安装目录,放到 docker 路径方便管理

POSTGRES_PASSWORD:数据库的初始化密码,使用数字+英文大小写组合,勿使用特殊字符

SUBNET_PREFIX:一般默认就行,提示有冲突的话再改

创建 safeline 文件夹,将两个文件放到里面(注意是 .env,不是 env)

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

创建项目,选择上面路径就会自动导入配置

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

TIP:有可能提示一键有 SUBNET_PREFIX 配置的网关,随便修改一个没有的就行,比如我改为“192.168.0”

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

正常情况是全部都启动了

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

使用

浏览器中输入 https://NAS的IP:9443 就能看到界面,注意是 HTTPS 协议

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

点击“同意,开始使用”

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

重置密码

如果是手动部署的,可能会找不到初始化的管理员账号和密码,需要重置密码

找到 safeline-mgt 容器,在终端里输入下面命令

resetadmin担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

TIP:也可以直接连接 SSH,输入下面命令

docker exec safeline-mgt resetadmin

修改密码

输入管理员用户名和密码,进行登录

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

管理面板界面挺清爽的

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

通用设置 -》 控制台管理 -》 编辑

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

输入要修改密码

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

添加站点

这里我以下面一个 Web 站点演示(一般来说,雷池和被防护的站点不是同一个服务器

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

防护应用 -》添加应用

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

默认会有两个端口,分别是 HTTP 和 HTTPS

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

修改端口号(根据需要保留一个 HTTP 就行,使用 HTTPS 需要证书,后面也会讲这么添加证书),到时候就是通过这个端口访问页面的了。

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

填写上游服务器(需要防护的 Web 网站)和应用名称

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

这样添加成功了(可以编辑详细防护信息,这里就不展开说了)

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

浏览器访问 9080 端口(IP 地址和雷池一样的),可以正常访问

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

添加证书

有些部署的网页是需要 HTTPS 访问,这时候就需要添加证书

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

TIP:这里演示本地生成 SSL 证书,可以用于局域网里访问。

使用 SSH 工具连接 NAS 设备,依次输入下面命令

//切换为 root 用户权限 sudo -i //找个路径用于存放生产证书文件(按实际情况填写路径) cd /vol1/1000/docker //生成不带加密的私钥 openssl genrsa -out server.key 2048 //生成证书请求,需要填写一下信息(可以一路回车不填) openssl req -new -key server.key -out server.csr //生成证书文件 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

打开文件管理器,就能看到生成的证书,证书请求和私钥(一般需要用到的是证书和私钥,中间那个可以删掉不要)

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

根据提示,上传证书和私钥

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

可以看到证书已经添加成功了

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

来到刚刚添加防护的站点,点击详情

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

点击编辑基础配置

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

添加一个 HTTPS 的端口

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

选择刚刚添加的证书

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

添加以后,就有两个端口都可以访问了

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

现在就可以使用 HTTPS 访问了

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

总结

由于我平时很少用这类应用,所以很多功能也没有展开讲解设置,有需要可以去官网有详细的文档介绍。初次上手使用还是很简单的,有非常直观的 UI 界面展示各类信息。有需要的推荐可以部署试试,于有没有什么很大的效果,因为我不太懂这方面,反正聊胜于无吧。

要说有什么麻烦的地方,就是关联的容器太多了,要是封装成一个 all in one 就更方便了。资源占用情况,内存占用大概有 1GB 还是比较多的,倒是不怎么吃 CPU 性能。

担心NAS上的网站被黑客盯上?一键部署雷池WAF,为站点保障护航!

综合推荐:⭐⭐⭐(有站点防护需求,值得部署)

使用体验:⭐⭐⭐⭐(上手简单,界面大气)

部署难易:⭐⭐(简单)︎

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
23
扫一下,分享更方便,购买更轻松