1. 项目概述
雷池WAF(Web Application Firewall)是一款专注于保护Web应用安全的防护系统。它通过分析HTTP/HTTPS流量,能够有效防御SQL注入、XSS跨站脚本、CSRF等常见Web攻击。在实际企业环境中,由于安全合规要求或网络环境限制,很多场景需要进行离线部署。
我在金融行业安全防护体系中多次实施过雷池WAF的离线部署,这种部署方式特别适合以下场景:
- 生产环境与互联网物理隔离的金融机构
- 对数据出境有严格监管要求的政务系统
- 需要满足等保三级以上安全要求的核心业务系统
2. 离线部署前期准备
2.1 硬件环境要求
雷池WAF离线部署对硬件有明确要求,根据我实际部署经验,建议配置如下:
| 组件 | 最低配置 | 推荐配置 | 备注 |
|---|---|---|---|
| CPU | 4核 | 8核 | 建议Intel Xeon系列 |
| 内存 | 8GB | 16GB | DDR4 ECC内存更稳定 |
| 存储 | 100GB | 500GB | 建议SSD阵列 |
| 网卡 | 千兆×2 | 万兆×2 | 需支持bypass功能 |
特别注意:在金融行业部署时,建议使用带Bypass功能的万兆网卡,确保在设备故障时流量能自动旁路,不影响业务连续性。
2.2 软件依赖准备
离线环境下需要预先下载所有依赖包,主要包括:
- 操作系统镜像(推荐CentOS 7.9 minimal)
- Docker离线安装包(v20.10+)
- Docker-compose二进制文件
- 雷池WAF离线安装包(需从官网申请)
- 依赖库(libseccomp, libltdl等)
我通常会准备一个包含所有依赖的离线仓库,结构如下:
/offline-repo ├── os-packages/ # 系统RPM包 ├── docker/ # Docker离线包 ├── leichi/ # 雷池安装包 └── scripts/ # 部署脚本3. 详细部署步骤
3.1 基础环境配置
首先需要在目标服务器配置本地yum源:
# 挂载系统ISO mount -o loop CentOS-7-x86_64-Minimal-2009.iso /mnt # 创建本地repo文件 cat > /etc/yum.repos.d/local.repo <<EOF [local] name=Local Repository baseurl=file:///mnt enabled=1 gpgcheck=0 EOF # 安装基础依赖 yum install -y openssl openssl-devel libffi-devel bzip2-devel3.2 Docker离线安装
将提前准备的docker离线包解压后执行:
tar xzvf docker-offline.tar.gz cd docker-offline ./install.sh验证安装:
docker --version docker-compose --version systemctl enable docker3.3 雷池WAF部署
解压离线安装包并导入镜像:
tar xzvf leichi-waf-offline.tar.gz cd leichi-waf docker load -i leichi-images.tar修改配置文件:
# config/leichi.conf [system] mode = offline license_file = /data/license.dat [network] management_ip = 192.168.1.100 bypass_interface = eth0启动服务:
./deploy.sh --offline4. 配置与调优
4.1 网络拓扑配置
典型部署拓扑建议:
互联网 → 负载均衡 → 雷池WAF(透明模式) → 业务服务器关键配置参数:
# 设置网卡工作模式 ethtool -K eth0 gro off lro off echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf4.2 规则库更新
离线环境更新规则库的方法:
- 在联网环境导出最新规则
./leichi-cli rule export --output rules-20230801.tar.gz- 将规则包拷贝到离线环境
- 导入规则
./leichi-cli rule import --file rules-20230801.tar.gz4.3 性能调优
根据业务流量特点调整参数:
# 调整WAF引擎参数 [waf_engine] worker_processes = 8 # 建议与CPU核心数相同 max_connections = 10000 # 根据内存调整(每个连接约20KB) request_body_size = 10M # 允许检测的最大POST数据5. 常见问题排查
5.1 部署阶段问题
问题1:Docker服务启动失败
- 现象:
Failed to start docker.service: Unit not found - 解决方案:
# 检查依赖是否完整 rpm -qa | grep docker # 重新安装containerd yum reinstall -y containerd.io
问题2:镜像导入失败
- 现象:
Error processing tar file: unexpected EOF - 解决方案:
# 检查镜像包完整性 sha256sum leichi-images.tar # 重新传输文件(建议使用rsync) rsync -avzP leichi-images.tar root@offline-server:/tmp/
5.2 运行阶段问题
问题1:HTTPS解密失败
- 现象:
SSL handshake failed - 解决方案:
- 确保证书链完整
openssl verify -CAfile ca-bundle.crt server.crt- 检查WAF的SSL中间证书配置
问题2:性能瓶颈
- 现象:请求延迟高,CPU使用率100%
- 优化步骤:
# 查看慢请求日志 tail -f /var/log/leichi/slow.log # 调整检测规则优先级 ./leichi-cli rule modify --id 1005 --priority high
6. 运维管理实践
6.1 日志收集方案
建议的日志收集架构:
雷池WAF → Filebeat(日志采集) → Logstash(过滤处理) → Elasticsearch(存储) → Kibana(展示)关键配置示例:
# filebeat.yml filebeat.inputs: - type: log paths: - /var/log/leichi/access.log fields: type: waf-access output.logstash: hosts: ["logstash.internal:5044"]6.2 监控指标设置
必须监控的核心指标:
| 指标名称 | 告警阈值 | 检查频率 |
|---|---|---|
| CPU使用率 | >80%持续5分钟 | 1分钟 |
| 内存使用 | >90% | 1分钟 |
| 丢包率 | >0.1% | 5分钟 |
| 规则匹配率 | <30% | 15分钟 |
配置Prometheus监控示例:
# prometheus.yml scrape_configs: - job_name: 'leichi-waf' static_configs: - targets: ['waf-server:9100']6.3 灾备方案设计
建议采用双机热备架构:
- 主备节点通过keepalived实现VIP漂移
- 配置实时会话同步:
./leichi-cli sync --master 192.168.1.100 --slave 192.168.1.101- 定期备份关键配置:
# 每周全量备份 tar czvf /backup/leichi-conf-$(date +%F).tar.gz /etc/leichi我在某银行项目中的实际维护经验表明,离线环境下的WAF运维需要特别注意:
- 建立严格的更新包校验流程(SHA256校验)
- 准备完整的应急回退方案
- 定期进行故障演练(建议每季度一次)