在服务器上安装好了openwrt后用一键脚本部署雷池是不支持的 我们要离线手动部署

创建雷池目录

mkdir -p "/data/safeline"

下载镜像包

cd "/data/safeline"
wget https://demo.waf-ce.chaitin.cn/image.tar.gz -O image.tar.gz

下载 compose 编排脚本(修改不使用/etc/loceltime 修复报错)

cd "/data/safeline"
wget -O compose.yaml https://r2.lovelyy.eu.org/raw/backup/safeline/compose.yaml

官方

cd "/data/safeline"
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"

配置 compose 环境变量(注意密码POSTGRES_PASSWORD可以改变 现在是随机字符串)

cd "/data/safeline"
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)
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=chaitin
EOF

加载容器

cd "/data/safeline"
cat image.tar.gz | gzip -d | docker load

启动雷池

cd "/data/safeline"
docker compose up -d

替换原来的Tengine配置 可以实现溯源来自Cloudflare连接的真实ip并启用日志

wget -O /data/safeline/resources/nginx/nginx.conf https://alist4.lovelyy.eu.org/d/CloudFlareR2/backup/safeline/nginx.conf?sign=9ca4nzhwf-asxaqMsSXakg0veo40q6fpkymJJW1C7XM=:0
docker exec safeline-tengine nginx -s reload

测试XSS注入(在你访问的url后加上)

/?search=<script>alert('XSS')</script>

OpenWrt区域的转发一定要开

后台重置下雷池面板的密码

docker exec safeline-mgt resetadmin

然后在Lucky申请证书要注意这两个地方 证书名叫做cert_1(一般雷池第一个证书的名称)

映射证书路径和触发脚本也需要修改 这样就能无感自动更新雷池证书

映射路径

/data/safeline/resources/nginx/certs

触发脚本

docker exec safeline-tengine nginx -s reload

当然 也可以通过API的方式来进行热更新雷池证书

一、获取API Token

在雷池 WAF 的系统设置 ->API Token 来创建一个 API 密钥并保存下来

二、获取ssl证书及密钥

因为是使用文件上传的方式更新 ssl 证书,因此需要在本地保存有 ssl 证书及密钥,这里我使用的是 lucky 的 ACME 证书映射功能。在 lucky->SSL/TLS 证书 -> 修改来映射保存证书到本地

三、定期执行更新脚本--insecure或者-k 参数忽略证书验证

crt=$(sed ":tag;N;s/\n/\\\n/;b tag" /path/to/你的证书)
key=$(sed ":tag;N;s/\n/\\\n/;b tag" /path/to/你的密钥)

curl --location --insecure --request POST "https://你的雷池waf网站/api/open/cert" \
--header "X-SLCE-API-TOKEN: xxxx你的API_TOKENxxxx" \
--header "Content-Type: application/json" \
--data "{
    \"manual\": {
        \"crt\": \"$crt\",
        \"key\": \"$key\"
    },
    \"type\": 2,
    \"id\": 1
}"

这里有一个需要注意的这里的 id 为你的证书 ID, 可以在网站证书选择页面查看 ID 号码,0 是自增长,推荐直接指定 ID 好更新

四、利用lucky自动更新证书

lucky 支持证书更新时执行脚本,直接将脚本粘贴到那里即可

升级雷池 删除旧版本未使用的镜像,释放磁盘空间

cd "/data/safeline"
wget https://demo.waf-ce.chaitin.cn/image.tar.gz -O image.tar.gz
docker compose down --remove-orphans
docker image prune --filter="label=maintainer=SafeLine-CE"
docker load -i image.tar.gz
docker compose up -d