雷池,是今年长亭开源的一个 WAF 产品,GitHub 地址:https://github.com/chaitin/safeline 。基于业界领先的语义引擎检测技术,作为反向代理接入,保护网站不受黑客攻击。
首先我们要进行基本的安装,目前最新版是 2.5.0,这里采用源码的方式进行安装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 # 安装 docker 环境 $ curl -sL https://get.docker.com/ | VERSION=v24.0.5 sh $ curl https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose# 下载源码 $ cd $ curl -s https://github.com/chaitin/safeline/archive/refs/tags/v2.5.0.tar.gz -o safeline.tar.gz $ mkdir ~/safeline$ tar xzf safeline.tar.gz -C ~/safeline --strip-components=1 $ rm -rf safeline.tar.gz$ cd ~/safeline# 配置环境变量 $ echo "SAFELINE_DIR=$(pwd) " >> .env $ echo "IMAGE_TAG=2.5.0" >> .env $ echo "MGT_PORT=9443" >> .env $ echo "POSTGRES_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32) " >> .env $ echo "REDIS_PASSWORD=$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32) " >> .env $ echo "SUBNET_PREFIX=172.22.222" >> .env # 启动 $ docker compose up -d [+] Running 7/7 ✔ Network safeline-ce Created 0.1s ✔ Container safeline-tengine Started 2.7s ✔ Container safeline-mgt-api Started 3.7s ✔ Container safeline-detector Started 3.3s ✔ Container safeline-mario Started 3.5s ✔ Container safeline-redis Started 3.3s ✔ Container safeline-postgres Started 3.3s
好了,现在访问 https://IP:9443
这里绑定动态口令,需要先安装 Google Authenticator,然后扫码绑定。
小提示:如果你需要多账户,那可以把上面的图片保留下来,然后各自去用 Google Authenticator 扫码绑定。
现在我们进入到管理后台页面了。
进入到通用配置页面,使用右侧的批量配置为 高强度防护。
回到服务器,我们需要启动一个测试服务。
~/web/docker-compose.yaml
1 2 3 4 5 6 7 8 9 version: '3.8' services: hongfs: image: ghcr.io/hongfs/env:web-1 ports: - "65080:80" deploy: replicas: 10
1 2 $ docker swarm init $ docker stack deploy --compose-file ~/web/docker-compose.yaml web
启动完成了,我们回到管理后台,切换到防护站点,点击添加站点。
好了,我们可以尝试下访问。
试一下恶意访问。
切换到控制台的攻击事件,可以看见有这条记录。
因为 docker swarm 不是完全的轮训模式,所以这里我们要测试不同容器能不能接受到,需要进行压测。
1 $ wrk -c10 -t2 -d10m https://waf.hongfs.cn/hostname
然后我们循环请求输出看看。
1 2 3 4 5 6 7 8 9 10 $ for i in $(seq 1 100); do curl "https://waf.hongfs.cn/hostname" ; done d3c86856a79e d3c86856a79e 81df78e0663a a61580336565 d3c86856a79e d3c86856a79e d3c86856a79e a61580336565 2260176be746
既然我们在压测,干脆开启新版的限流功能看看。这个在频率限制里面。
好了,现在我们可以正常使用了。