WAF防护之长亭雷池SafeLine

参考

介绍

一款足够简单、足够好用、足够强的免费 WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护你的网站不受黑客攻击。核心检测能力由智能语义分析算法驱动,专为社区而生,不让黑客越雷池半步。SafeLine 的开发团队长亭科技在 Web 安全领域有比较深的积累,2015 年就推出了商业化 WAF(Web Application Firewall),值得一提的是 B 站、小红书、滴滴、vivo、爱奇艺等公司都在使用。

相关特性

  • 便捷性

  • 采用容器化部署,一条命令即可完成安装,0 成本上手。安全配置开箱即用,无需人工维护,可实现安全躺平式管理。

  • 安全性

  • 首创业内领先的智能语义分析算法,精准检测、低误报、难绕过。语义分析算法无规则,面对未知特征的 0day 攻击不再手足无措。

  • 高性能

  • 无规则引擎,线性安全检测算法,平均请求检测延迟在 1 毫秒级别。并发能力强,单核轻松检测 2000+ TPS,只要硬件足够强,可支撑的流量规模无上限。

  • 高可用

  • 流量处理引擎基于 Nginx 开发,性能与稳定性均可得到保障。内置完善的健康检查机制,服务可用性高达 99.99%。

一. 🚀 安装

配置需求

  • 操作系统:Linux
  • 指令架构:x86_64
  • 软件依赖:Docker 20.10.6 版本以上
  • 软件依赖:Docker Compose 2.0.0 版本以上
  • 最小化环境:1 核 CPU / 1 GB 内存 / 10 GB 磁盘
  • safeline系统版本号 3.13.2

在线安装(推荐)

  • 如果服务器可以访问互联网环境,推荐使用该方式

  • 复制以下命令执行,即可完成安装

    1
    bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
  • 若安装失败,请参考 安装问题

离线安装

  • 如果服务器不可以访问互联网环境,推荐使用该方式
  • 离线安装前需完成环境检测,默认已完成 docker 环境准备

    下载 雷池社区版镜像包 并传输到需要安装雷池的服务器上,执行以下命令加载镜像

    1
    cat image.tar.gz | gzip -d | docker load

    执行以下命令创建并进入雷池安装目录

    1
    mkdir -p safeline  &&  cd safeline    # 创建 safeline 目录并且进入

    下载 编排脚本 并传输到 safeline 目录中

    复制执行以下命令,生成雷池运行所需的相关环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    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

    注意:不要一行一行复制,一次性复制全部命令后执行,如图

    image-20231127094752844

    执行以下命令启动雷池

    1
    docker-compose up -d

    image-20231127101501162

二. 效果 / 使用 本文演示在网站服务器部署雷池

基本使用 > 传送门

  • 在单独的服务器上部署雷池
  • 在网站服务器上部署雷池
  • 和其他反向代理一起部署雷池

前言:

工作原理

  1. 雷池社区版主要以 反向代理 的方式工作,类似于一台 nginx 服务。

  2. 部署时,需要让网站流量先抵达雷池,经过雷池检测和过滤后,再转给原来的网站业务。

  3. 建议优先熟悉反向代理概念再继续配置

    image-20231127101943759

    在单独的服务器部署雷池时配置(推荐)

    环境信息:
    网站服务器: IPA,对外端口80,域名‘example.com’
    部署雷池的服务器:IPB
    目的:使用雷池的80端口接受请求进行防护

    步骤:

    1. 必须将网站流量指向雷池的IPB。例如修改域名解析服务的配置,将域名解析到雷池IPB

    2. 具体配置参考下图

    3. 禁止网站服务器(IPA)上,所有除了雷池之外的访问。例如配置防火墙

      image-20231127110417956

配置完成 浏览器访问example.com:80,若能获取到业务网站的响应,并且站点上 “今日访问量” 增加,则代表配置成功。

本教程为网站服务器上部署雷池使用及效果如下

  • 登录

    使用google或者腾讯多因子认证方式访问

    浏览器打开后台管理页面 https://<waf-ip>:9443。根据界面提示,使用 支持 TOTP 的认证软件 扫描二维码,然后输入动态口令登录:

    image-20231127095732431

  • 配置防护站点

    雷池以反向代理方式接入,优先于网站服务器接收流量,对流量中的攻击行为进行检测和清洗,将清洗过后的流量转发给网站服务器。

    image-20231127100808091

    端口配置为雷池的端口 上游服务信息为自己的服务地址

    此时相当于做了一个反向代理 将访问web-start的流量先送到雷池 雷池分析后决定是否放行

    访问www.test.com:80即为访问web-start

    此时访问www.test.com:80若雷池检测通过则放行

    也可不设置域名此时访问10.0.0.10即可

    image-20231127104128574

  • 访问10.0.0.10后若访问成功请求数会相应增加

    image-20231127104519360

💡 TIPS: 添加后,执行 curl -H "Host: <域名>" http://<WAF IP>:<端口> 应能获取到业务网站的响应。

模拟攻击防护

使用以下方式尝试模拟黑客攻击,看看雷池的防护效果如何

  • 浏览器访问 http://<IP或域名>:<端口>/?id=1%20AND%201=1

  • 浏览器访问 http://<IP或域名>:<端口>/?a=<script>alert(1)</script>

  • 模拟攻击前

    image-20231127104711548

  • 模拟攻击后 (此两个模拟攻击的链接没有部署雷池时是可以正常访问的)

    http://10.0.0.10/?id=1%20AND%201=1

    http://10.0.0.10/?a=<script>alert(1)</script>

    image-20231127105034781

三. 效果

  • 防护站点等

    image-20231127105227665


    image-20231127105411200

  • 拦截详情

    image-20231127105454166


    image-20231127105516595

  • 主页面板

    image-20231127105545297

fighting!