1.雷池简介
雷池(SafeLine)是长亭科技耗时近 10 年倾情打造的 WAF,核心检测能力由智能语义分析算法驱动。
Slogan: 不让黑客越雷池一步。
2.雷池的安装
安装前提:
1.已经安装好docker和docker compose,请参看我的博文 docker系列-docker与docker compose安装
2.满足雷池安装的环境
安装建议:
1.将所有docker项目放在统一目录 /root/data/docker_data/ 下,方面后期管理与维护
2.添加SWAP虚拟内存,请参看我的博文 添加 SWAP 虚拟内存
3.将雷池安装在非站点服务器上
2.1 安装环境检查
最低配置要求
操作系统:Linux
指令架构:x86_64
软件依赖:Docker 20.10.14 版本以上
软件依赖:Docker Compose 2.0.0 版本以上
最小化环境:1 核 CPU / 1 GB 内存 / 5 GB 磁盘
检查命令
uname -m # 查看指令架构
docker version # 查看 Docker 版本
docker compose version # 查看 Docker Compose 版本
docker-compose version # 老版本查看Compose 版本
cat /proc/cpuinfo| grep "processor" # 查看 CPU 信息
free -h # 查看内存信息
df -h # 查看磁盘信息
lscpu | grep ssse3 # 确认CPU是否支持 ssse3 指令集
满足以上环境要求,进行安装
2.2 安装雷池
1.执行以下命令创建并进入雷池安装目录
mkdir -p /root/data/docker_data/safeline && cd /root/data/docker_data/safeline # 创建 safeline 目录并且进入
2.下载 雷池社区版镜像包 并传输到需要安装雷池的服务器上(建议上传至安装目录下),执行以下命令加载镜像
cat image.tar.gz | gzip -d | docker load
3.下载 编排脚本 并传输到 safeline 目录中,编排脚本即 docker-compose.yaml 文件
4.复制执行以下命令,生成雷池运行所需的相关环境变量
注意:不要一行一行复制,一次性复制全部命令后执行
cat >> .env <<EOF
SAFELINE_DIR=$(pwd)
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)
REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)
SUBNET_PREFIX=172.22.222
EOF
5.执行以下命令启动雷池
先查看9443端口有没有被占用
lsof -i:9443
没有占用部署即可
docker compose up -d
安装完成后,登录后台进行配置,浏览器打开后台管理页面 http://ip:9443,这里的ip即为服务器ip地址
根据界面提示,使用 支持 TOTP 的认证软件或者小程序 (我使用的是 Authenticator)扫描二维码,然后输入动态口令登录
3.雷池的配置与使用
3.1 雷池的配置
雷池社区版主要以 反向代理 的方式工作,类似nginx,让网站流量先抵达雷池,经过雷池检测和过滤后,再转给原来的网站业务。 简言之,DNS域名解析到雷池服务器,再通过雷池服务器转到站点服务器,期间进行必要的防护。这里我是在另外一台服务器(非站点服务器)进行部署的,这也是官网推荐的做法。
配置方式:
环境信息:
网站(站点)服务器:IPA,对外端口80,域名‘example.com’
雷池(非站点)服务器:IPB
步骤:
1.将原网站流量指向雷池的IPB(必须)。例如修改域名解析服务,将域名解析到IPB
2.参考配置如下图
3.禁止网站服务器上,除雷池之外的访问。例如配置防火墙
如果浏览器访问 example.com:80 能获取到业务网站的响应,并且数据统计页的 “今日请求数” 增加,代表配置成功。效果大致如下:
如果你之前在站点服务器上部署了 nginx proxy manager 进行反向代理,而雷池本身也具有反代的功能,所以需要停掉 nginx proxy manager 服务,将DNS解析的地址由IPA更换为IPB;实现https访问,就需要申请域名的ssl证书,如果某一域名已经通过 nginx proxy manager 申请了证书,就可以在 nginx proxy manager 的后台下载,手动导入,当然也可以直接在雷池后台申请ssl证书(推荐)。这里以前面部署的 Lobe Chat 演示。
1.通用配置->证书管理->添加证书->申请免费证书->输入域名(lobechat.sqwfly.top)和邮箱->点击申请
2.添加防护的站点,添加了ssl证书才能监听443端口
3.2 测试防护
访问以下地址模拟出对应的攻击:
模拟 SQL 注入,请访问 http://<IP或域名>:<端口>/?id=1%20AND%201=1
模拟 XSS,请访问 http://<IP或域名>:<端口>/?html=<script>alert(1)</script>
通过浏览器,你将会看到雷池已经发现并阻断了攻击请求,如果没有阻断说明配置存在问题。
3.3 其他常用配置项
3.3.1 黑白名单
黑名单:拦截,白名单:放通
条件 AND 是指同时符合,如果希望多个匹配条件需要增加多条黑名单或者白名单
3.3.2 频率限制
通过开启频率限制功能封锁恶意 IP
3.3.3 人机验证
设置之后,访问域名将会进行人机验证,以下是我的域名设置
4.雷池的升级与更新
4.1 按部升级
这里采用离线升级的方式,具体引用自雷池官网,详情可参考 升级雷池
1.进入雷池目录
cd /root/data/docker_data/safeline
2.执行如下命令
mv compose.yaml compose.yaml.old
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml" --no-check-certificate -O compose.yaml
wget "https://waf-ce.chaitin.cn/release/latest/seccomp.json" --no-check-certificate -O seccomp.json
sed -i "s/IMAGE_TAG=.*/IMAGE_TAG=latest/g" ".env"
grep "SAFELINE_DIR" ".env" > /dev/null || echo "SAFELINE_DIR=$(pwd)" >> ".env"
grep "IMAGE_TAG" ".env" > /dev/null || echo "IMAGE_TAG=latest" >> ".env"
grep "MGT_PORT" ".env" > /dev/null || echo "MGT_PORT=9443" >> ".env"
grep "POSTGRES_PASSWORD" ".env" > /dev/null || echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> ".env"
grep "SUBNET_PREFIX" ".env" > /dev/null || echo "SUBNET_PREFIX=172.22.222" >> ".env"
grep "IMAGE_PREFIX" ".env" >/dev/null || echo "IMAGE_PREFIX=chaitin" >>".env"
3.下载 雷池社区版镜像包 并传输到需要安装雷池的服务器上,执行以下命令加载镜像
docker load -i image.tar.gz
4.执行以下命令替换 docker 容器
docker compose down --remove-orphans
5.重新运行docker容器
docker compose up -d
4.2 一键脚本升级
只是将官网提供的升级方式以脚本的方式一键运行
1.进入雷池目录
cd /root/data/docker_data/safeline
2.创建脚本 upgrade.sh,内容如下:
#!/bin/bash
echo "雷池升级脚本"
#1.进入雷池目录
cd /root/data/docker_data/safeline
#2.修改一些环境变量信息
mv compose.yaml compose.yaml.old
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml" --no-check-certificate -O compose.yaml
wget "https://waf-ce.chaitin.cn/release/latest/seccomp.json" --no-check-certificate -O seccomp.json
sed -i "s/IMAGE_TAG=.*/IMAGE_TAG=latest/g" ".env"
grep "SAFELINE_DIR" ".env" > /dev/null || echo "SAFELINE_DIR=$(pwd)" >> ".env"
grep "IMAGE_TAG" ".env" > /dev/null || echo "IMAGE_TAG=latest" >> ".env"
grep "MGT_PORT" ".env" > /dev/null || echo "MGT_PORT=9443" >> ".env"
grep "POSTGRES_PASSWORD" ".env" > /dev/null || echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)" >> ".env"
grep "SUBNET_PREFIX" ".env" > /dev/null || echo "SUBNET_PREFIX=172.22.222" >> ".env"
grep "IMAGE_PREFIX" ".env" >/dev/null || echo "IMAGE_PREFIX=chaitin" >>".env"
#3.下载雷池社区版镜像包并传输到需要安装雷池的服务器上
wget "https://demo.waf-ce.chaitin.cn/image.tar.gz" --no-check-certificate -O image.tar.gz
#4.加载镜像
docker load -i image.tar.gz
#5.替换docker容器
docker compose down --remove-orphans
#6.重新运行docker容器
docker compose up -d
#7.删除image.tar.gz
rm -f image.tar.gz
#8.卸载不用的镜像
echo "y" | docker system prune
3.赋予该脚本执行权限
chmod +x upgrade.sh
4.执行该脚本
./upgrade.sh
5.雷池的卸载
cd /root/data/docker_data/safeline
docker compose down --rmi all # 停止容器运行并删除相关镜像
cd ..
rm -rf /root/data/docker_data/safeline # 完全删除
评论区