首页 开发 本站的网络安全实践
  • 本文约2364字,阅读需7分钟
  • 326
  • 3

本站的网络安全实践

温馨提示:本文最后更新于2025.2.12 21:42,若内容或图片失效,请在下方留言或联系博主。
摘要

假期结束前的最后一篇博客.

导言

站长是学生, 对网络安全知之甚少, 本文仅供参考, 以下是网站的网络拓扑, 将会逐层讲解.

Client / End User
       |
       v
  Cloudflare WAF  (First Layer of Security)
       |
       v
  SafeLine WAF    (Second Layer of Security)
       |
       v
  Origin Server   (Final Destination)

本文的目标是尽可能在拓扑上层拦截请求, 同时尽最大努力减少误判.

Cloudflare WAF

Cloudflare WAF 是内建于 Cloudflare CDN 的防火墙, 对于 Free 计划用户, 其提供最基本的保护.

The Free Cloudflare Managed Ruleset

This ruleset is automatically deployed on any new Cloudflare zone and is specially designed to reduce false positives to a minimum across a very broad range of traffic types. Customers will be able to disable the ruleset, if necessary, or configure the traffic filter or individual rules. As of today, the ruleset contains the following rules:

  • Log4J rules matching payloads in the URI and HTTP headers;
  • Shellshock rules;
  • Rules matching very common WordPress exploits;

WAF for everyone: protecting the web from high severity vulnerabilities

很明显, 对于狡猾的攻击者, 这些规则显得微不足道.

速率限制规则(/security/waf/rate-limiting-rules)

我们可以部署速率限制规则, 防止超出预期的恶意流量回源.

我们采取以下表达式匹配所有请求:

(http.request.uri.path wildcard "*")

并应用以下规则:

速率限制规则
速率限制规则

即可做到在 {10} 秒内 {某个 IP} 发出 {超过 200} 个请求时在 CDN 边缘实施拦截.

自定义规则(/security/waf/custom-rules)

这里的作用并不大, 只是实施对可信任爬网的放行, 如果你想的话也可以对防火墙行为进行精细的调配.

自定义防火墙规则
自定义防火墙规则

规则自上而下应用, 生效后即 Continue.

第一条是阻止规则, 为了节省规则消耗, 我们将所有动作为 Block 的规则 All in one.

(http.host eq "itedev.com" and http.request.uri contains "conf")

以上表达式的作用是匹配 {对 itedev.com 含 conf URI} 发出的请求.
这条规则是很早的时候加的, 目的是阻止配置文件扫描, 十分片面, 将在下面的 SafeLine WAF 一章进行补充.

(http.host eq "nas-alist.itedev.com" and not starts_with(http.request.uri.path, "/d/public"))

以上表达式的作用是匹配 {对 nas-alist.itedev.com 路径不以 /d/public 开头的 URI} 发出的请求.
本站由 Alist + Pan Baidu 联合提供图片/小文件下载, 这句的目的是阻止公网非文件 API 访问, 内容上传等由我们的内部网络路由.

动作与放置顺序
动作与放置顺序

至于为什么放在第一个, 需要自行感悟, 原则是生效面越宽泛的越下.

第二条是放行规则, 本站的两个静态资源域名可以说无所畏惧(静态托管于 B2 桶)

(http.host eq "fonts.itedev.com") or (http.host eq "static.itedev.com")

使用以上表达式,匹配 {对 主机名 fonts.itedev.com} 或 {对 主机名 static.itedev.com} 发出的请求.

动作
动作

对所有 Cloudflare 安全产品放行(除自动程序攻击模式), 关于缓存绕过攻击, 配置缓存规则, 此处不赘述(该放到类似"缓存的艺术"一类文章讲).

第三条是对友善爬网的放行(Cloudflare 默认拦截国内搜索引擎蜘蛛)

(cf.client.bot and cf.threat_score le 60)

以上表达式匹配 {经过验证的蜘蛛且 cf 威胁分数小于 60} 发出的请求, 威胁分数和蜘蛛列表由 Cloudflare 维护.

DDoS 替代(/security/ddos)

规则
规则

在这里不对规则集进行精确调节, 规则集由 Cloudflare 自行维护, 会自定义的规则集的高级玩家应该不会阅读这篇肤浅的文章吧.

自动程序攻击模式(/security/bots)

启动就好

自动程序攻击模式
自动程序攻击模式

阻止 AI 自动程序(/security/bots)

自行决定, 本站是关闭的.

API Shield(/security/api-shield)

本站为 PaaS 站点, 用不着(也懒得配置), 跳过.

至此, Cloudflare WAF 配置完成.

SafeLine WAF

这玩意的中文名叫雷池 WAF, 站长没有家资, 使用的是社区版.

安装参考安装雷池 | 雷池 SafeLine, 本站不赘述.

记得提前在安装目录下创建以下结构, 站长遇到了容器无法挂载目录的问题.

目录结构
目录结构

安装完成后到 /system 改掉管理员密码, 并启用二步验证.

然后添加证书, 添加应用等.

如果源有额外反代服务器, 则雷池防火墙可以取代其中一层(一般是最外层)

记得放行 Cloudflare IP

自定义规则
自定义规则

自行探索防火墙内的每个配置项, 应该无需我讲就知道他们是干什么的(小白友好型).

Origin Server

在源放行雷池 IP, 参考广东电信下的外网访问实践, 对源启用 DDNS, 规避源 IP 泄露带来的 WAF 绕过.

至此, 配置完成.

评论
评论需审核,勿重复提交
请等待安全验证
TeacherDu
Tokyo JP ChromeWindows 10
CF永远神!
2025.02.12 22:22
回复
$comment['poster']
Guangzhou CN ChromeWindows 10
@TeacherDu:赛博活菩萨, 免费部分真的慷慨, 而且某些付费项很便宜
2025.02.15 10:53
回复
乌拉草
乌拉草
Guangzhou CN Wechat BrowserAndroid
厉害了,我完全看不懂
2025.02.12 20:12
回复