前言
关于雷池
长亭科技的雷池开源WAF(Web Application FireWalld)是一款足够简单、足够好用、足够强的免费 WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护你的网站不受黑客攻击。
推荐的配置
需根据业务情况进行选择,带宽推荐与源站的带宽保持一致
独立部署雷池环境下:
如果业务QPS低于100,推荐2c4g及以上配置
如果业务QPS大于100低于1000,推荐4c8g及以上配置
如果业务QPS高于1000,推荐8c16g及以上配置
注意:
上述推荐仅做参考,建议根据业务情况进行测试后,再确定服务器配置
为什么需要一个waf?
WAF可保护Web应用免受跨站伪造、服务器端请求伪造、文件包含漏洞和SQL注入等攻击。在网络安全日进严重的今天,使用WAF已经成为保护Web应用的重要手段之一。WAF可以通过对HTTP请求进行深度分析和过滤,识别和阻止恶意请求,从而有效防御各种攻击。此外,WAF还可以提供实时的攻击日志和报告,帮助网站管理员及时发现和应对安全威胁。
以本人站点为例,在一个月内本站遭受到了9.8k近一万次的攻击雷池已经拦截了54.6k的请求,如果有其中一个攻击成功入侵了我的网站,将会对网站的安全性和用户数据造成严重的威胁。因此拥有一个waf是非常重要的。
安装雷池
根据实际情况选择安装方式,支持一键安装
在线安装
如果服务器可以访问互联网环境,推荐使用该方式
复制以下命令执行,即可完成安装
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
如果需要使用华为云加速,可使用
CDN=1 bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
如果需要安装最新版本流式检测模式,可使用
STREAM=1 bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
若安装失败,请参考 安装问题
离线安装
如果服务器不可以访问互联网环境,推荐使用该方式
离线安装前需完成环境检测,默认已完成 docker 环境准备
下载 雷池社区版镜像包 并传输到需要安装雷池的服务器上,执行以下命令加载镜像
cat image.tar.gz | gzip -d | docker load
执行以下命令创建并进入雷池安装目录
mkdir -p safeline && cd safeline # 创建 safeline 目录并且进入
下载 编排脚本 并传输到 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
注意:不要一行一行复制,一次性复制全部命令后执行,如图
执行以下命令启动雷池
docker compose up -d
实操
在执行安装命令后会提示确实安装雷池的目录,一般保持默认回车即可,如果变更安装位置可能会导致升级以后需要重新登录
此处输入Y
即可
然后雷池就会自动下载镜像并安装了,等待安装完成即可
在安装完成后会输出默认账号密码需要留意一下
初始化控制台
进入控制台
此时用浏览器访问服务器IP+端口9443
即可,如https://127.0.0.1:9443/
在访问雷池控制台时,可能会提示您的连接不是私密连接
一般情况下点击高级
然后点击继续前往即可。因为雷池控制台默认使用的时自签证书,这会导致浏览器不信任该证书,从而导致提示您的连接不是私密连接
登录并修改默认密码并设置otp
登录控制台前需线统一雷池的许可协议,点击下方同意即可
然后输入刚才在终端中输出的账号密码进行登录
点击系统配置->登陆设置右侧三个点->编辑
在此处设置新的密码,和启用totp,然后点击确定后会自动退出登录
在此输入刚才修改过的账号密码然后点击登录
点击登录后会跳转到totp绑定页面,若没有totp绑定软件可将鼠标放在支持 TOTP 的认证软件
上,然后下载想要的软件然后按照软件提示扫码绑定totp,然后点击完成绑定就会跳转到验证totp的页面上
在此处输入刚才绑定好的totp即可
输入完totp后即可登录控制台
添加站点并将控制台添加到防护站点
将控制台添加到防护站点中的作用一是减少暴露面,二是将雷池控制台也管控起来,将雷池控制台添加到防护站点中也可以更方便的配置ssl证书。此文添加站点的案例为添加雷池控制台为例
创建证书
创建ssl证书可以让您的网站变得更安全,若不适用ssl证书,那么您在网页上的输入的所有内容都有可能被监控和被篡改,除非您非常确定不需要使用https来加密您的网站,否则强烈建议将每个网站都申请ssl证书并启用
证书申请入口
在创建证书的地方有两个入口,以下将分别介绍一下
入口1
在站点防护->证书管理中添加证书
入口2
添加站点的时候,在端口中勾选了ssl的时候就会在下面自动出现证书选择框,在选择框中直接点击添加证书就会跳转到刚才入口1的页面中
添加已有证书
在添加证书页面中选择上传已有证书将证书和私钥填入到对应的位置即可
申请免费证书
在添加证书页面中选择申请免费证书,输入域名和申请的邮箱即可,申请的域名可一次填写多个。
申请的域名会自动续签,所以不用再担心ssl证书会过期啦
点击提交后等待一分钟左右即可完成免费ssl证书的申请
添加站点
点击站点防护->站点管理->添加站点
在此处配置站点相关配置,且将图中信息替换成您的实际内容
配置讲解:
域名:填写您的实际域名
端口:此处建议添加80/443两个端口,并且将443端口开启ssl。注:若提示端口占用换成其他端口即可,或将雷池所在服务器占用80/443端口的应用修改对应的端口。本文中雷池是单独部署在一台服务器上的
证书:在下拉框中选择对应的ssl证书即可
上游服务器:其中https代表着ssl加密协议,127.0.0.1是代表这本机IP,9443的意思是应用的端口。若添加其他应用填写对应的http协议、IP、端口即可
此时,在雷池中的第一个网站就创建好啦,访问对应的域名即可进行访问
安全配置
开启强制https访问、开启IPV6监听、使用HTTP/2
在站点防护->代理设置中,勾选上强制https、使用HTTP/2、监听ipv6即可
获取源IP方式
在站点防护->代理设置中,即可配置获取源IP方式
配置讲解
从网络连接中获取:直接将访问waf的IP设为源IP,适合waf前面没有cdn或其他中间件的环境,即直接将域名解析到waf IP的情况
取X-Forwarded-For 中上一级代理的地址:适用于前面套了两层cdn或中间件的环境,如雷池前面有nginx,nginx前面还有cdn,此时就适合选择该项
取X-Forwarded-For 中上上一级代理的地址:适用于前面套了三层cdn或中间件的环境,如雷池前面有nginx,nginx前面还有waf,waf前面还有一层cdn的,此时就适合选择该项,
取X-Forwarded-For 中上上上一级代理的地址:适用于前面套了四层cdn或中间件的环境
从HTTPHeader 中获取:适用于前waf前面套了一层cdn的,一般默认写X-Forwarded-For
若您不知道要填什么,请联系对应cdn供应商询问
什么是X-Forwarded-For ?
X-Forwarded-For 是一个 HTTP 扩展头部。用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。
一般情况下,cdn、waf、中间件、都会将上一层访问的IP封装进X-Forwarded-For中
频率限制
在防护配置->频率限制中即可配置。
将限制开关打开即可,此处配置需要根据实际情况来配置,若影响到了正常业务将对应的数值调高点即可,但调的太高了就也失去了防护的效果,此处需要根据实际情况慢慢来调试
配置讲解
高频访问限制:用于拦截高频访问行为的功能,按照上面图中所示就是十秒内,请求达到100次,就对该IP在十分钟内进行人机验证,当然也可以设置为直接封禁
高频攻击限制:用于拦截高频攻击行为的功能,按照上面图中所示就是六十秒内,被雷池拦截10次就对该IP在三十分钟内进行自动封禁,当然也可以设置为进行人机验证
自定义规则
在防护配置->自定义规则中即可访问自定义规则页面,此处默认有搜索引擎爬虫白名单
和长亭社区恶意IP情报黑名单
创建白名单、黑名单、人机验证、身份认证规则
在防护配置->自定义规则->添加规则中即可创建对应的规则,
在雷池中拥有强大的匹配规则可以设置 源IP
、路径
、Host
、Header
、Body
、请求方法
、国家/地区
、省和地区
等规则,拥有很开放的自定义功能
配置讲解
案例1
用户不希望境外用户访问 example.com 此时要怎么设置呢?
需要添加一个黑名单规则,设置匹配目标为国家/地区,匹配方式设置为不等于,IP归属地设置为中国,此时就会将地域不等于中国的请求全部拦截掉,但是用户希望的是example.com不让境外访问,所以还要添加一个匹配条件,设置匹配目标为host(域名的意思),匹配方式为等于,匹配内容为example.com,此时该规则就会仅作用在example.com这个域名上了
案例2
用户希望将example.com设置为需要账号密码才能访问,但是用户的example.com网站并不支持该功能此时要怎么配置才能实现该功能呢?
这时候需要添加一个身份验证的规则,将设置匹配目标为host(域名的意思),匹配方式为等于,匹配内容为example.com,并且在下方输入用户名和密码即可完成设置
语义分析
在防护配置->语义分析中即可设置语义分析强度,一般情况下保持默认即可
补充规则
此为专业版功能,让您拥有更完全完善的防护体验,若您拥有专业版可以批量设置为全部防护
使用雷池动态加密前端js、html
功能介绍
关于动态防护(BETA)
动态防护(BETA),能自动动态加密网站的 html 和 js 源码,阻止爬虫和攻击自动化程序的分析(对应新增 safeline-chaos 容器)
为什么要加密
由于 JS
和 html
代码的开放性,代码易被人截取、窃取、篡改,从而引发隐私泄露、数据泄露、信息泄露等安全问题。
配置
启用动态防护
进入雷池后台,在防护站点->站点配置->动态防护中打开配置页面
点击启用后即可启用动态防护
添加防护资源
在启用动态防护
后点击下方的添加需要保护的资源
勾选需要防护的资源然后点击添加
点击保存即可完成防护资源的添加
此时在站点管理中就可以看到动态防护已经开启了
效果预览
未开启动态防护前
开启动态防护后
在开启动态防护后可以看到每次重新访问内容都会被重新加密
评论区