雷池 WAF 主从同步高可用教程
雷池 - 小小
更新于 5 小时前
雷池 WAF 高可用方案可以保障业务连续性,确保雷池的可用性。本教程介绍使用雷池的主从同步功能搭建一个高可用的 WAF 集群。
考虑到企业级应用对安全防护的连续性要求,以及单点故障可能带来的业务中断风险,因此需要一个高可用的 WAF 防护方案。特别是在以下场景:
通过主从配置同步自动将雷池的网站应用,引擎规则,黑白名单,人机验证等功能配置近实时同步到不同的从节点。具体实现方式和功能特性:
本教程演示过程中使用的服务器信息说明:
在从节点执行刚才的同步命令
预计需要等待 1-2 分钟,此时主节点界面的显示效果为:
从节点界面的显示效果为:
当最近同步时间更新到最近的一两分钟内之后就可以在从节点确认一下网站应用和各种防护配置的同步情况了。
在完成雷池 WAF 的主从配置之后,就可以通过在负载均衡让主从接收流量了。这里使用阿里云的 SLB 作为演示。阿里云负载均衡(Server Load Balancer,简称SLB)是对云上流量进行按需分发的服务。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。阿里云新一代SLB产品家族包含应用型负载均衡ALB和网络型负载均衡NLB。本文以 NLB 为例进行说明。
注意创建的时候后端协议必须选择 TCP,调度算法必须选择源IP哈希。为了简单起见这里选择开启全端口转发,其他配置看情况选择。
在这里选择部署了主从节点的雷池 WAF 服务器即可
选择 TCP 协议,端口端视情况填写即可。为了方便演示这里还是选择打开全端口转发。
确认刚才的信息选择提交
将原有的域名解析的 A 记录删除,通过 CNAME 解析的方式将自有域名指向 NLB 实例域名。解析完成之后通过域名测试是否正常访问即可。
通过以上配置,我们已经成功搭建了一个高可用的雷池 WAF 集群。该方案不仅能够提供持续的安全防护能力,还能在节点故障时实现自动切换,确保业务系统的稳定运行。在实际部署过程中,建议根据业务规模和需求选择合适的节点数量,并定期进行故障演练,验证高可用方案的可靠性。同时,也要注意做好监控和告警,及时发现并处理潜在问题,为业务系统提供更可靠的安全保障。
问:SLB 方案还有别的选择吗?
答:不限制 SLB 方案,市面上常见的云厂商方案都可以选择,甚至简单实用 Nginx 来做也行。
问:为什么一直显示同步中?
答:同步中只是说明主从同步的模式正常运行中,并不代表数据同步完成状态,因此只有同步中和未同步两种状态。
问:从节点可以编辑配置吗?
答:不可以。从节点是只读状态,只能跟随主节点的配置。
问:从节点需要购买单独的授权吗?
答:是的,每个从节点都需要单独的授权。
问:最近同步时间一直没更新或者时间差距很大?
答:可以看看主从的 mgt 容器日志是否有明显错误,或者解绑后重新尝试同步。
问:主从可以同时接收流量吗?
答:可以。
问:主节点会有从节点的攻击日志、访问日志等统计数据吗?
答:考虑到日志同步体量等问题暂时不支持。
1
2
safeline-ce接口IP地址问题
Liutieyi
更新于 7 小时前
安装完毕后,出现一个safeline-ce接口,地址为192.168.0.1,和我这里有冲突,怎么设置?
0
7
建议支持OCSP装订(OCSP Stapling)
Fluorum
更新于 4 小时前
当前版本的WAF似乎没有开启OCSP Stapling的选项,只能手动修改每一个网站的配置文件,建议添加开关或默认支持OCSP Stapling
0
1
内网主机通过代理上网,该如何设置
TIME
更新于 1 天前
看文档说 safeline-mgt 要上网,我就在docker-compose.yml中添加了代理。
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
- http_proxy=http://10.22.16.29:8080
- https_proxy=http://10.22.16.29:8080
- no_proxy=localhost,127.0.0.1,10.*,::1
但是还是报错。
2025/05/13 22:43:23 [error] 13#13: *15 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.10, server: , request: "POST /inner/waiting/collect HTTP/1.1", upstream: "http://[::1]:8000/inner/waiting/collect", host: "safeline-mgt"
2025/05/13 22:43:23 [warn] 13#13: *15 upstream server temporarily disabled while connecting to upstream, client: 192.168.0.10, server: , request: "POST /inner/waiting/collect HTTP/1.1", upstream: "http://[::1]:8000/inner/waiting/collect", host: "safeline-mgt"
2025/05/13 22:43:23 [error] 13#13: *15 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.10, server: , request: "POST /inner/waiting/collect HTTP/1.1", upstream: "http://127.0.0.1:8000/inner/waiting/collect", host: "safeline-mgt"
2025/05/13 22:43:23 [warn] 13#13: *15 upstream server temporarily disabled while connecting to upstream, client: 192.168.0.10, server: , request: "POST /inner/waiting/collect HTTP/1.1", upstream: "http://127.0.0.1:8000/inner/waiting/collect", host: "safeline-mgt"
2025/05/13 22:43:25 [error] 15#15: *18 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.7, server: , request: "GET /inner/slave_mode HTTP/1.1", upstream: "http://[::1]:8000/inner/slave_mode", host: "192.168.0.4"
2025/05/13 22:43:25 [warn] 15#15: *18 upstream server temporarily disabled while connecting to upstream, client: 192.168.0.7, server: , request: "GET /inner/slave_mode HTTP/1.1", upstream: "http://[::1]:8000/inner/slave_mode", host: "192.168.0.4"
2025/05/13 22:43:25 [error] 15#15: *18 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.7, server: , request: "GET /inner/slave_mode HTTP/1.1", upstream: "http://127.0.0.1:8000/inner/slave_mode", host: "192.168.0.4"
2025/05/13 22:43:25 [warn] 15#15: *18 upstream server temporarily disabled while connecting to upstream, client: 192.168.0.7, server: , request: "GET /inner/slave_mode HTTP/1.1", upstream: "http://127.0.0.1:8000/inner/slave_mode", host: "192.168.0.4"
2025/05/13 22:43:27 [ERROR] detect/skynet.go:134 Get "http://safeline-fvm/skynetinfo": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
panic: failed to init models: initSkynetDisableRule Error: Get "http://safeline-fvm/skynetinfo": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
goroutine 1 [running]:
main.main()
/work/main.go:40 +0x199
不知道什么原因,主机必须要通过代理才能上网。
0
1
雷池社区是否有人工客服?
张华杰
更新于 1 天前
雷池社区无人工客服
售后技术支持需额外够买
0
1
雷池 WAF 主从同步高可用教程
雷池 - 小小
更新于 5 小时前
雷池 WAF 高可用方案可以保障业务连续性,确保雷池的可用性。本教程介绍使用雷池的主从同步功能搭建一个高可用的 WAF 集群。
考虑到企业级应用对安全防护的连续性要求,以及单点故障可能带来的业务中断风险,因此需要一个高可用的 WAF 防护方案。特别是在以下场景:
通过主从配置同步自动将雷池的网站应用,引擎规则,黑白名单,人机验证等功能配置近实时同步到不同的从节点。具体实现方式和功能特性:
本教程演示过程中使用的服务器信息说明:
在从节点执行刚才的同步命令
预计需要等待 1-2 分钟,此时主节点界面的显示效果为:
从节点界面的显示效果为:
当最近同步时间更新到最近的一两分钟内之后就可以在从节点确认一下网站应用和各种防护配置的同步情况了。
在完成雷池 WAF 的主从配置之后,就可以通过在负载均衡让主从接收流量了。这里使用阿里云的 SLB 作为演示。阿里云负载均衡(Server Load Balancer,简称SLB)是对云上流量进行按需分发的服务。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。阿里云新一代SLB产品家族包含应用型负载均衡ALB和网络型负载均衡NLB。本文以 NLB 为例进行说明。
注意创建的时候后端协议必须选择 TCP,调度算法必须选择源IP哈希。为了简单起见这里选择开启全端口转发,其他配置看情况选择。
在这里选择部署了主从节点的雷池 WAF 服务器即可
选择 TCP 协议,端口端视情况填写即可。为了方便演示这里还是选择打开全端口转发。
确认刚才的信息选择提交
将原有的域名解析的 A 记录删除,通过 CNAME 解析的方式将自有域名指向 NLB 实例域名。解析完成之后通过域名测试是否正常访问即可。
通过以上配置,我们已经成功搭建了一个高可用的雷池 WAF 集群。该方案不仅能够提供持续的安全防护能力,还能在节点故障时实现自动切换,确保业务系统的稳定运行。在实际部署过程中,建议根据业务规模和需求选择合适的节点数量,并定期进行故障演练,验证高可用方案的可靠性。同时,也要注意做好监控和告警,及时发现并处理潜在问题,为业务系统提供更可靠的安全保障。
问:SLB 方案还有别的选择吗?
答:不限制 SLB 方案,市面上常见的云厂商方案都可以选择,甚至简单实用 Nginx 来做也行。
问:为什么一直显示同步中?
答:同步中只是说明主从同步的模式正常运行中,并不代表数据同步完成状态,因此只有同步中和未同步两种状态。
问:从节点可以编辑配置吗?
答:不可以。从节点是只读状态,只能跟随主节点的配置。
问:从节点需要购买单独的授权吗?
答:是的,每个从节点都需要单独的授权。
问:最近同步时间一直没更新或者时间差距很大?
答:可以看看主从的 mgt 容器日志是否有明显错误,或者解绑后重新尝试同步。
问:主从可以同时接收流量吗?
答:可以。
问:主节点会有从节点的攻击日志、访问日志等统计数据吗?
答:考虑到日志同步体量等问题暂时不支持。
1
2
safeline-ce接口IP地址问题
Liutieyi
更新于 7 小时前
安装完毕后,出现一个safeline-ce接口,地址为192.168.0.1,和我这里有冲突,怎么设置?
0
7
建议支持OCSP装订(OCSP Stapling)
Fluorum
更新于 4 小时前
当前版本的WAF似乎没有开启OCSP Stapling的选项,只能手动修改每一个网站的配置文件,建议添加开关或默认支持OCSP Stapling
0
1
内网主机通过代理上网,该如何设置
TIME
更新于 1 天前
看文档说 safeline-mgt 要上网,我就在docker-compose.yml中添加了代理。
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
- http_proxy=http://10.22.16.29:8080
- https_proxy=http://10.22.16.29:8080
- no_proxy=localhost,127.0.0.1,10.*,::1
但是还是报错。
2025/05/13 22:43:23 [error] 13#13: *15 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.10, server: , request: "POST /inner/waiting/collect HTTP/1.1", upstream: "http://[::1]:8000/inner/waiting/collect", host: "safeline-mgt"
2025/05/13 22:43:23 [warn] 13#13: *15 upstream server temporarily disabled while connecting to upstream, client: 192.168.0.10, server: , request: "POST /inner/waiting/collect HTTP/1.1", upstream: "http://[::1]:8000/inner/waiting/collect", host: "safeline-mgt"
2025/05/13 22:43:23 [error] 13#13: *15 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.10, server: , request: "POST /inner/waiting/collect HTTP/1.1", upstream: "http://127.0.0.1:8000/inner/waiting/collect", host: "safeline-mgt"
2025/05/13 22:43:23 [warn] 13#13: *15 upstream server temporarily disabled while connecting to upstream, client: 192.168.0.10, server: , request: "POST /inner/waiting/collect HTTP/1.1", upstream: "http://127.0.0.1:8000/inner/waiting/collect", host: "safeline-mgt"
2025/05/13 22:43:25 [error] 15#15: *18 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.7, server: , request: "GET /inner/slave_mode HTTP/1.1", upstream: "http://[::1]:8000/inner/slave_mode", host: "192.168.0.4"
2025/05/13 22:43:25 [warn] 15#15: *18 upstream server temporarily disabled while connecting to upstream, client: 192.168.0.7, server: , request: "GET /inner/slave_mode HTTP/1.1", upstream: "http://[::1]:8000/inner/slave_mode", host: "192.168.0.4"
2025/05/13 22:43:25 [error] 15#15: *18 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.7, server: , request: "GET /inner/slave_mode HTTP/1.1", upstream: "http://127.0.0.1:8000/inner/slave_mode", host: "192.168.0.4"
2025/05/13 22:43:25 [warn] 15#15: *18 upstream server temporarily disabled while connecting to upstream, client: 192.168.0.7, server: , request: "GET /inner/slave_mode HTTP/1.1", upstream: "http://127.0.0.1:8000/inner/slave_mode", host: "192.168.0.4"
2025/05/13 22:43:27 [ERROR] detect/skynet.go:134 Get "http://safeline-fvm/skynetinfo": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
panic: failed to init models: initSkynetDisableRule Error: Get "http://safeline-fvm/skynetinfo": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
goroutine 1 [running]:
main.main()
/work/main.go:40 +0x199
不知道什么原因,主机必须要通过代理才能上网。
0
1
雷池社区是否有人工客服?
张华杰
更新于 1 天前
雷池社区无人工客服
售后技术支持需额外够买
0
1