前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在LightHouse上安装雷池WAF保护你的网站

在LightHouse上安装雷池WAF保护你的网站

原创
作者头像
猫猫摸大鱼
修改2023-08-30 08:00:22
1.5K0
修改2023-08-30 08:00:22
举报
文章被收录于专栏:摸鱼摸鱼

最近闲来无事发现一款免费的,号称使用智能语义分析算法的WAF(SafeLine,也叫雷池WAF)于是打算搭建试用一下 。

本文使用服务器为腾讯云LightHouse

本文创作时雷池WAF为 3.1.1 版本 ,雷池WAF社区版官网:https://waf-ce.chaitin.cn/

一、安装

安装过程分为两种情况:

1. 雷池和源站在同一台服务器,即雷池所在服务器 80/443 端口被占用,请看 1.1

2. 雷池和源站不在同一台服务器,即雷池所在服务器 80/443 端口未被占用,请跳过到 1.2

1.1 修改Nginx监听端口

由于雷池默认需要监听 80 443 9443 端口,其中的 80443 端口和 Nginx 冲突,所以我们需要修改Nginx的监听端口

如果你并非使用宝塔而是自己安装的Nginx,那么你一定知道如何自行修改监听端口,我在这里就不多赘述了。

!!!如果你是通过宝塔安装的Nginx,暂时无法修改80端口(因为改完了过一会也会自动再监听80端口)

如果你是通过宝塔安装的Nginx,那么你需要找到 /www/server/panel/vhost/nginx 这个目录

代码语言:javascript
复制
/www/server/panel/vhost/nginx

将该目录下的三个配置文件( 0.default.confphpfpm_status.conf你的网站域名.conf )中的 80443 修改为其他端口,例如 80808443 ,当然别的未被占用的端口也可以。

0.default.conf:

修改为(例)

phpfpm_status.conf:

修改为(例)

你的网站域名.conf:

修改为(例)

将以上三个配置文件修改完后还需要将 /www/server/nginx/conf 目录下的 nginx.conf 中的 80 修改

/www/server/nginx/conf/nginx.conf:

修改为(例)

全部修改并保存后分别运行以下两个命令

!!!如果你是通过宝塔安装的Nginx,暂时无法修改80端口(因为改完了过一会也会自动再监听80端口)

1.2 安装雷池WAF

首先服务器上需要安装 docker 和 docker compose ,然后在服务器上运行以下一键脚本

代码语言:javascript
复制
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"

提示输入雷池安装目录,默认 /data/safeline ,这里我使用的是 /data/waf(默认即可)

输入 Y 继续安装

开始拉取镜像(可能要等待较长时间,国内鸡建议设置 Docker 加速)

镜像拉取完成,创建雷池WAF容器

安装完成

二、登录并配置雷池WAF

安装完成后我们访问 服务器IP:9443 可以看到登录雷池需要我们绑定TOTP(动态口令),下载一个身份验证器APP,如 Google Authenticator(谷歌身份验证器)Microsoft Authenticator(微软身份验证器)或者使用自建的密码管理器 Bitwarden (网页版也可以),如果以上三项都不方便的话也可以使用腾讯身份验证器,然后扫描下方二维码,如不能扫码可以点击复制密钥然后通过密钥添加动态口令。

绑定完成后输入APP上的验证码登录(每7天需要登录一次)

登录后界面如下

在配置防护站点之前我们先上传一下证书,便于后续配置,点击通用配置 - 证书管理,添加一个证书

上传域名所需证书,点击提交(此处提出批评 1. 只支持证书文件,不支持复制粘贴 2. 不能拖动上传,只能点击上传 3. 不支持ECC证书,希望尽快在新版本优化。)

证书上传完成

接下来添加防护站点,点击防护站点 - 添加站点

域名为你要防护的域名,端口监听 80443 (雷池监听的端口),443端口勾选 SSL ,选择你刚刚上传的证书;

上游服务器填写分为四种情况 (http(s):// 的意思是 http:// 或 https:// )

1. 雷池和源站在同一台服务器上,nginx修改了端口,源站部署在nginx:此时上游服务器地址填 http(s)://127.0.0.1:Nginx监听的端口

2. 雷池和源站在同一台服务器上,nginx修改了端口,但源站并非部署在nginx:此时上游服务器地址填 http(s)://127.0.0.1:源站实际端口

3. 雷池和源站不在同一台服务器上,源站默认80/443端口:此时上游服务器地址填 http(s)://源站服务器IP (图中所示)

4. 雷池和源站不在同一台服务器上,源站非80/443端口:此时上游服务器地址填 http(s)://源站服务器IP:源站实际端口

提交,可以看到我们添加的站点

接下来配置一下其他信息,点击通用配置 - 其它,站点通用配置如下图

至于源IP获取方式建议自己进行实际测试,在 从网络连接中获取 / X-Forwarded-For / X-Real-IP 中选取一个更加准确的

接下来进行防护配置,点击防护配置 - 频率限制,开启 高频访问封禁 和 高频攻击封禁 ,并按需配置相关参数,点击保存

如果有自己的IP黑白名单,可以先将它们添加到IP组,点击通用配置 - IP组,添加IP组

添加后的IP组

然后点击防护配置 - 人机认证,添加人机认证

按需添加人机验证,例如刚刚添加的IP组就可以用在这里,我这里添加的是让来自恶意IP的访问者进行人机验证,点击提交

刚刚添加的人机验证规则

点击防护配置 - 黑白名单,添加黑白名单,这里就可以将刚刚创建的IP组进行黑白分配,或是按需进行其他配置

点击防护配置 - 语义分析,这里可以对各种攻击进行防护强度的简单设置

至此,雷池WAF的基本配置就完成了,接下来将 DNS解析记录 或 CDN源站 修改为雷池WAF所在服务器的IP,然后我们就可以看到流量已经经过雷池了

接下来我们访问一下 http://你防护的域名/?id=1%20AND%201=1 测试防护效果

代码语言:javascript
复制
http://你防护的域名/?id=1%20AND%201=1

可以看到雷池拦截了我们刚刚的SQL 注入攻击

在攻击事件里也可以看到我们刚刚的SQL 注入攻击被拦截了(怎么我刚用上雷池就有人爬我网站)

雷池NB(超大声!)

三、其他

3.1 停止运行雷池

在雷池安装目录(默认为/data/safeline,本文中我使用的是/data/waf)

代码语言:javascript
复制
cd /data/safeline

运行如下命令

代码语言:javascript
复制
docker compose down

停止运行后就可以修改 .env 文件以修改雷池部分设置了

3.2 重新运行雷池

停止运行后在雷池安装目录运行如下命令

代码语言:javascript
复制
docker compose up -d

雷池即可恢复运行

3.3 升级雷池

注意: 升级雷池时服务会重启,流量会中断一小段时间,建议在网站流量最小的时候执行升级操作,以免影响网站正常业务

运行以下一键脚本

代码语言:javascript
复制
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/upgrade.sh)"

以下内容摘自官方文档

[可选] 升级成功后,可以执行以下命令删除旧版本 Docke 镜像,以释放磁盘空间。

代码语言:javascript
复制
docker rmi $(docker images | grep "safeline" | grep "none" | awk '{print $3}')

有部分环境的默认 SafeLine 安装路径是在 /data/safeline-ce,安装之后可能会发现需要重新绑定 OTP、配置丢失等情况,可以修改 .env 的 SAFELINE_DIR 变量,指向 /data/safeline-ce

3.4 卸载雷池

首先进行3.1的步骤:停止运行雷池,然后删除雷池安装目录,即卸载雷池。

3.5 迁移雷池

由3.4可推出,迁移雷池的步骤为:

1. 备份雷池安装目录

2. 迁移至目标机器的雷池安装目录

3. 执行 3.2 重新运行雷池

4. 如有新版本,执行 3.3 升级雷池

5. 迁移完成

(由于我在写教程的时候防护的是业务站点,停止运行就寄了,就不在 3.1 - 3.5 放图了)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、安装
    • 1.1 修改Nginx监听端口
      • 1.2 安装雷池WAF
      • 二、登录并配置雷池WAF
      • 三、其他
        • 3.1 停止运行雷池
          • 3.2 重新运行雷池
            • 3.3 升级雷池
              • 3.4 卸载雷池
                • 3.5 迁移雷池
                相关产品与服务
                轻量应用服务器
                轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com