本站的网络安全实践
导言
站长是学生, 对网络安全知之甚少, 本文仅供参考, 以下是网站的网络拓扑, 将会逐层讲解.
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 绕过.
至此, 配置完成.