侧边栏壁纸
博主头像
琉璃红梅 博主等级

琉璃世界,白雪红梅。

  • 累计撰写 44 篇文章
  • 累计创建 90 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker系列-雷池的搭建与使用

雪穗
2024-01-21 / 0 评论 / 0 点赞 / 84 阅读 / 0 字
温馨提示:
本文最后更新于40天前,若内容或图片失效,请留言反馈。 若部分素材不小心影响到您的利益,请联系我删除。

1.雷池简介

雷池(SafeLine)是长亭科技耗时近 10 年倾情打造的 WAF,核心检测能力由智能语义分析算法驱动。

Slogan: 不让黑客越雷池一步。

雷池官网:https://waf-ce.chaitin.cn/

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  # 完全删除

0

评论区