1. 雷池WAF社区版离线部署全指南
作为一名长期从事Web应用安全防护的工程师,我深知WAF(Web应用防火墙)在保护线上业务安全中的重要性。雷池WAF社区版作为一款国产开源WAF解决方案,凭借其轻量级、易部署的特点,成为许多中小企业和个人开发者的首选。本文将详细介绍如何在离线环境中完成雷池WAF的完整部署,包含你可能在其他文档中找不到的实战经验。
2. 环境准备与前置检查
2.1 硬件与操作系统要求
雷池WAF社区版对系统环境有明确要求,部署前请确保满足以下条件:
- 操作系统:Linux发行版(推荐CentOS 7+/Ubuntu 18.04+)
- CPU架构:x86_64必须支持SSSE3指令集,推荐支持AVX2
- 容器环境:Docker 20.10.14+和Docker Compose 2.0.0+
- 资源需求:最低1核CPU/1GB内存/5GB磁盘空间
提示:生产环境建议至少2核CPU/4GB内存配置,否则可能影响防护性能
2.2 系统环境检查
执行以下命令验证环境是否符合要求:
# 检查CPU架构和指令集支持 uname -m # 应显示x86_64 lscpu | grep ssse3 # 必须有输出 lscpu | grep avx2 # 推荐有输出 # 检查内存和磁盘 free -h # 确认可用内存≥1GB df -h # 确认可用磁盘≥5GB # 检查Docker版本(如已安装) docker version --format '{{.Server.Version}}' # 需≥20.10.14 docker compose version # 需≥2.0.02.3 离线环境特殊准备
由于是离线部署,需要提前下载以下文件到可联网机器:
- Docker安装包(对应系统版本)
- Docker Compose二进制文件
- 雷池社区版镜像包(image.tar.gz)
- compose.yaml编排文件
3. Docker环境离线安装
3.1 Docker引擎安装
不同Linux发行版的Docker离线安装方式略有差异,以下是CentOS 7的示例:
# 上传docker-ce-20.10.14.rpm系列包到服务器 rpm -ivh docker-ce-*.rpm # 安装所有依赖包 # 启动并设置开机自启 systemctl start docker systemctl enable docker # 验证安装 docker --version # 应显示20.10.14或更高常见问题:如果遇到依赖缺失,需按错误提示先安装containerd.io、docker-ce-cli等依赖包
3.2 Docker Compose离线安装
# 上传docker-compose-linux-x86_64二进制文件 mkdir -p ~/.docker/cli-plugins mv docker-compose-linux-x86_64 ~/.docker/cli-plugins/docker-compose chmod +x ~/.docker/cli-plugins/docker-compose # 验证安装 docker compose version # 应显示2.0.0或更高4. 雷池WAF离线部署
4.1 镜像导入与目录准备
# 创建安装目录 mkdir -p /data/safeline && cd /data/safeline # 导入镜像(上传image.tar.gz到当前目录) cat image.tar.gz | gzip -d | docker load # 下载编排文件(需提前获取compose.yaml) wget https://waf-ce.chaitin.cn/release/latest/compose.yaml -O compose.yaml4.2 环境变量配置
编辑.env文件,关键配置说明如下:
SAFELINE_DIR=/data/safeline # 安装目录 IMAGE_TAG=latest # 镜像版本 MGT_PORT=9443 # 控制台端口 POSTGRES_PASSWORD=$(openssl rand -hex 16) # 随机生成数据库密码 SUBNET_PREFIX=172.22.222 # 内部网络段 IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline # 镜像源 ARCH_SUFFIX= # ARM架构需改为"-arm"安全提示:POSTGRES_PASSWORD务必使用强密码,建议用
openssl rand -hex 16生成
4.3 服务启动与初始化
# 启动服务 docker compose up -d # 等待1-2分钟后初始化管理员 docker exec safeline-mgt resetadmin执行resetadmin后会输出初始密码,务必妥善保存。如果忘记密码,可重新执行该命令重置。
5. 访问与基础配置
5.1 控制台访问
通过浏览器访问https://服务器IP:9443,使用初始密码登录。首次登录会强制修改密码。
注意事项:
- Chrome可能提示证书不安全,这是正常现象(使用自签名证书)
- 确保防火墙已放行9443端口
5.2 防护站点配置
- 进入"防护站点"→"添加站点"
- 填写域名和上游服务器地址(如http://192.168.1.100:8080)
- 选择防护模式(推荐先使用"观察模式")
5.3 公网发布配置
要使WAF生效,需在网络设备上配置:
- 防火墙:将公网IP的80/443端口映射到WAF服务器的对应端口
- DNS解析:将域名解析到公网IP
- WAF监听端口:确保compose.yaml中对应站点的监听端口已开放
6. 高级配置与优化
6.1 性能调优建议
# 在compose.yaml中为关键服务添加资源限制 services: safeline-mgt: deploy: resources: limits: cpus: '1' memory: 1G safeline-detector: deploy: resources: limits: cpus: '2' memory: 2G6.2 日志持久化配置
默认日志存储在容器内,重启会丢失。建议挂载到宿主机:
services: safeline-detector: volumes: - /data/safeline/logs:/var/log/safeline6.3 规则自定义技巧
- 进入"安全策略"→"规则管理"
- 可基于内置规则克隆修改
- 测试规则建议先设置"观察模式"验证效果
- 高频误报规则可调整匹配阈值或添加白名单
7. 常见问题排查
7.1 服务启动失败
现象:docker compose up -d后容器不断重启
排查步骤:
# 查看容器日志 docker compose logs # 常见原因: # 1. 端口冲突 → 修改.env中的MGT_PORT # 2. 内存不足 → 增加系统资源或调整限制 # 3. 镜像损坏 → 重新导入image.tar.gz7.2 无法访问控制台
排查步骤:
- 确认容器运行状态:
docker ps应显示3个容器 - 检查防火墙:
iptables -L -n查看规则 - 验证端口监听:
netstat -tulnp | grep 9443
7.3 防护不生效
可能原因:
- DNS解析未切换至WAF IP
- 站点配置中的上游服务器地址错误
- 网络设备端口映射未生效
验证方法:
curl -H "Host: 你的域名" http://WAF_IP -v # 应看到X-Protected-By: Safeline头8. 维护与升级
8.1 日常维护
- 日志检查:定期查看
/data/safeline/logs下的访问日志和错误日志 - 性能监控:使用
docker stats观察资源使用情况 - 规则更新:关注官方公告,及时更新防护规则
8.2 离线升级步骤
- 下载新版image.tar.gz和compose.yaml
- 停止服务:
docker compose down - 备份数据:
cp -r /data/safeline /data/safeline_bak - 导入新镜像:
cat image.tar.gz | gzip -d | docker load - 更新编排文件:替换compose.yaml
- 启动服务:
docker compose up -d
经过以上步骤,你应该已经成功在离线环境中部署了雷池WAF社区版。这套方案我在多个生产环境中验证过稳定性,特别是在无法连接外网的安全隔离区部署效果良好。实际使用中建议结合业务特点调整防护策略,初期可先启用观察模式,待稳定后再切换为防护模式。