一、环境准备:构建安全防护的基础条件
-
系统环境要求
推荐使用Linux发行版(CentOS 7/8或Ubuntu 18.04+),以某主流云厂商的2核4G CentOS 7.9实例为例,需确保系统内核版本≥3.10。通过uname -r命令可快速验证内核版本,低于要求时需执行系统升级。 -
Docker引擎安装
采用容器化部署需预先安装Docker 19.03+版本,推荐使用官方提供的自动化安装脚本:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装完成后通过
docker version验证服务状态,重点检查Client和Server版本是否匹配。建议配置国内镜像加速源(如容器镜像服务)提升镜像拉取速度。 -
网络端口配置
需开放三类关键端口:
- 业务端口:80(HTTP)、443(HTTPS)
- 管理端口:9443(控制台访问)
- 健康检查端口:建议配置独立端口用于监控
在云服务器环境中,需在安全组规则中添加上述端口的入站规则。使用netstat -tulnp | grep -E '80|443|9443'可验证端口监听状态,避免部署时出现端口冲突。
二、核心部署流程:标准化三步操作
-
镜像获取与验证
从官方镜像仓库拉取最新社区版镜像,执行:docker pull chaitin/leichi:latest
拉取完成后通过
docker images | grep leichi验证镜像完整性,正常输出应包含REPOSITORY、TAG和IMAGE ID等信息。建议定期执行docker pull获取安全更新,避免使用第三方修改的镜像。 -
容器创建与配置
执行以下命令启动容器,该命令整合了端口映射、数据持久化和自动重启策略:docker run -d \--name leichi \--restart=always \-p 80:80 \-p 443:443 \-p 9443:9443 \-v leichi-data:/data \chaitin/leichi:latest
关键参数解析:
-v leichi-data:/data:创建命名卷实现配置持久化,即使容器删除数据仍保留--restart=always:设置容器随Docker服务自动重启,保障业务连续性- 多端口映射:同时支持HTTP/HTTPS业务流量和管理控制台访问
- 控制台初始化配置
通过日志获取初始密码:docker logs leichi 2>&1 | grep "初始密码"
使用浏览器访问
https://<服务器IP>:9443,输入默认账号admin和获取的密码完成登录。首次登录强制修改密码后,进入基础配置界面:
- 业务域名配置:支持多域名通配符设置
- 监听端口选择:默认80/443,可根据实际Nginx配置调整
- 防护规则集:提供OWASP Top 10等预置规则模板
配置保存后立即生效,无需重启服务。建议通过docker exec -it leichi curl -I http://localhost验证容器内部服务可用性。
三、防护效果验证:双维度检测方法
- 基础连通性测试
- 业务访问验证:通过本地浏览器访问配置的业务域名,预期返回200状态码
- 端口监听检查:执行
ss -tulnp | grep leichi确认业务端口由容器进程监听
- 防护日志分析
实时日志监控命令:docker logs -f leichi
正常访问应输出包含”allowed”的日志条目,攻击行为(如SQL注入)则会触发”blocked”记录并附带攻击特征。建议配置日志收集系统(如ELK)实现长期存储与分析。
四、常见问题解决方案
-
端口冲突处理
当出现”Address already in use”错误时:# 查找占用进程ss -tulnp | grep <冲突端口># 终止相关进程(示例)kill -9 <PID>
建议修改容器映射端口或调整业务服务配置。
-
数据持久化策略
升级镜像时采用”数据卷挂载+新容器创建”模式:# 停止旧容器docker stop leichi# 创建新容器(镜像版本更新)docker run -d --name leichi-new [原参数] chaitin/leichi:new-version# 验证无误后删除旧容器docker rm leichi
-
性能优化建议
- 资源限制:通过
--memory和--cpus参数控制容器资源使用 - 连接数调优:修改
/data/conf/nginx.conf中的worker_connections参数 - 规则缓存:启用
cc_防护模块的IP白名单功能减少误拦截
五、进阶运维实践
-
监控告警集成
通过Prometheus采集容器指标:# prometheus.yml配置示例scrape_configs:- job_name: 'leichi-waf'static_configs:- targets: ['<容器IP>:9100']
关键监控指标包括请求速率、拦截率、异常连接数等。
-
备份恢复机制
定期执行数据卷备份:docker run --rm \--volumes-from leichi \-v $(pwd):/backup \alpine tar czf /backup/leichi-data.tar.gz /data
恢复时通过
-v $(pwd)/leichi-data.tar.gz:/data.tar.gz挂载备份文件并在容器内解压。 -
高可用架构设计
建议采用”主备容器+负载均衡”模式,通过Keepalived实现VIP切换。主备节点间配置数据同步机制,确保规则集和会话状态的一致性。
结语:容器化部署WAF已成为企业安全建设的标准实践,通过标准化流程可将部署周期从传统模式的数小时缩短至10分钟内。开发者应重点关注数据持久化、监控集成和规则更新等关键环节,建立完善的防护体系生命周期管理机制。随着容器技术的演进,建议持续关注WAF产品的镜像更新和安全公告,及时应用补丁保持防护有效性。