专栏首页坏男孩Cloudflare中firewall的编写方法

Cloudflare中firewall的编写方法

简单介绍

这篇文章中说到坏男孩博客一直在使用CloudFlare提供SSL服务和防火墙服务。SSL并没有什么好说的,今天简单介绍一下我是如何写Cloudflare中的防火墙规则。

​ firewall,也就是我们所说的防火墙规则。我们可以先看下效果

如图所示,在2.13号一天,防火墙为我们拦截了上亿条的恶意请求。免费套餐有5条的额度,对于一般用户我觉得已经足够了,如果你的网站结构过于复杂,还请你升级套餐,以寻求更多规则额度。

​ 我们可以找到的官方文档如下:https://developers.cloudflare.com/firewall/cf-firewall-rules/,请先观看此文档,再看本文。如果你看完文档的话,你会发现拦截恶意请求其实很简单(当然需要你对http请求有一定了解)。看不懂也没关系,本文将大致讲解一下常用字段。防火墙支持的字段比一般编程语言更多,基于应用层+网络层。

基础字段

  • AS Num ​ 通常缩写为asn,指的是某一个IP管理系统所分配到的IP,如果你看到大量恶意请求来自同一个asn,那就可以对这个asn直接做处理,亦或者你想屏蔽某IDC机房,也可以直接查到他的asn号。 可以用在线工具来查询 asn,例如 ipip.net https://tools.ipip.net/as.php;也可以下载一个离线库来查询某IP的asn信息,例如 https://iptoasn.com/
  • Cookie ​ 服务端用来标识用户身份的手段,如果不了解,就不用做处理。
  • Country ​ 访客IP对应的国家,可以用来做访客区域限制。
  • Hostname ​ 访问的主机名,也就是域名。因为CF是域名接入,子域名也会走这一段,如果你需要针对某子域名写规则,则需要用到这个字段。
  • IP Address ​ 访客IP地址。
  • Referer ​ 页面来源,详情可以看 百度百科,可以做防盗链,也可以限制API不被滥用。
  • Request Method ​ 页面请求方式,GET、POST、HEAD等这些。我们都知道,POST请求是不被缓存的,所以可能会被坏人利用这一手段来进行CC攻击。所对应的防御手段就是在不需要使用其他请求方式的时候只开启GET。
  • SSL/HTTPS ​ 是否启用SSL。
  • URI Full ​ 页面完整地址。获取到的是这个 https://www.baidu.com/s?ie=utf-8&wd=%E5%9D%8F%E7%94%B7%E5%AD%A9
  • URI ​ 页面地址。如果上面的URL,只能获取到 /s?ie=utf-8&wd=%E5%9D%8F%E7%94%B7%E5%AD%A9 ,也就是去掉了协议+主机名。
  • URI PATH ​ 页面路径。上面基础再去掉请求参数,获取到 /s
  • URI Query String ​ 请求参数。获取到的就是 ie=utf-8&wd=%E5%9D%8F%E7%94%B7%E5%AD%A9
  • HTTP Version ​ HTTP版本。不常用。
  • User Agent ​ 用户代理,缩写为UA。可以用来屏蔽掉非正常用户。这里我用来屏蔽一些程序访问,例如 (http.user_agent contains "curl") or (http.user_agent contains "requests") or (http.user_agent contains "python") or (http.user_agent contains "php") or (http.user_agent contains "java") or (http.user_agent contains "urllib") or (http.user_agent contains "Java") or (http.user_agent contains "Ruby") or (http.user_agent contains "Go-http-client") or (not http.user_agent contains "/")
  • X-Forwarded-For ​ XFF头,使用了代理或者CDN后常添加到这里。详见百度百科
  • Known Bots ​ 已知爬虫。这里是CF已知的搜索引擎爬虫,我们可以用它来给搜索引擎爬虫加白。
  • Threat Score ​ 风险指数、安全分数。可选为0-100,0为最低。越大表示该IP风险越高。

基本逻辑

可以看这里 https://developers.cloudflare.com/firewall/cf-firewall-rules/fields-and-expressions/,基本类同于程序语法。

相应动作

Action

Description

Bypass

Allows user to dynamically disable Cloudflare security features for a requestAvailable to all plansMatching requests exempt from evaluation by a user-defined list containing one or more of the following Cloudflare Firewall products/features:User-agent BlockingBrowser Integrity CheckHotlinking ProtectionSecurity Level (IP Reputation)Rate LimitingZone Lockdown (PRO, BIZ, ENT)WAF Managed Rules (PRO, BIZ, ENT)Requests which match the Bypass action are still subject to evaluation (and thus a challenge or block) within Firewall Rules, based on the order of execution.To stop a bypassed request from further evaluation within Firewall Rules, you must create a new rule using the same expression and the Allow action immediately below the Bypass rule.//让请求不受某条规则的限制

Allow

Matching requests are exempt from challenge and block actions triggered by other Firewall Rules content.The scope of the Allow action is limited to Firewall Rules; matching requests are not exempt from action by other Cloudflare Firewall products, such as IP Access Rules, WAF, etc.Matched requests will be mitigated if they are part of a DDoS attack.//允许该请求

Challenge (Captcha)

Useful for ensuring that the visitor accessing the site is human, not automatedThe client that made the request must pass a Captcha Challenge.If successful, Cloudflare accepts the matched request; otherwise, it is blocked.//输入验证码

JS Challenge

Useful for ensuring that bots and spam cannot access the requested resource; browsers, however, are free to satisfy the challenge automatically.The client that made the request must pass a Cloudflare Javascript Challenge before proceeding.If successful, Cloudflare accepts the matched request; otherwise, it is blocked.//五秒盾

Block

Matching requests are denied access to the site.//直接阻止访问

完整可以看这里 <https://developers.cloudflare.com/firewall/cf-firewall-rules/actions/ >。

开始实战

​ 下面介绍我是如何写的,由于博客是纯静态的,所以我并不担心会出现服务器被入侵的问题。所以我编写的规则大部分是针对恶意(非真实)用户的拦截。

  • 屏蔽掉自动化/程序访问,这里我直接选择block (http.user_agent contains "curl") or (http.user_agent contains "requests") or (http.user_agent contains "python") or (http.user_agent contains "php") or (http.user_agent contains "java") or (http.user_agent contains "urllib") or (http.user_agent contains "Java") or (http.user_agent contains "Ruby") or (http.user_agent contains "Go-http-client") or (not http.user_agent contains "/")
  • 验证可能存在风险的请求,选择Challenge (Captcha)(由于我的博客不需要接收传参,也不需要其他类型请求。如果你不是纯静态,请加白名单!!!) (http.request.full_uri contains "?") or (http.request.method ne "GET") or (cf.threat_score gt 10)
  • 放行已知蜘蛛,选择Allow (cf.client.bot)

总结

​ 总的来说,编写规则需要对http请求有一定了解且了解自己的网站结构。这样才能够更好的抓住恶意请求的特征,相信通过本文可以帮你更好的了解应该如何去编写规则。如果你实在懒得去了解,也可以请博主喝杯奶茶代写,联系

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://huai.pub/复制
如有侵权,请联系 yunjia_community@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Waf识别工具和83个Waf拦截页面

    乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任...

    乌鸦安全
  • 研究 WAF 系统从这个开源项目开始

    今天来为大家推荐一个新的开源项目,这个项目收集整理了非常全面的 WAF 相关技术,其中包括 WAF 的简介、如何识别 WAF、常见 WAF 的指纹识别方法、绕 ...

    信安之路
  • C2上线操作 修改特征

    C2翻译本:https://blog.ateam.qianxin.com/CobaltStrike4.0用户手册_中文翻译.pdf

    WgpSec
  • Cloudflare网站访问需要验证码的解决办法

    网友@Bill问道:用了Cloudflare的CDN,打开网站经常遇到要输入验证码才能正常浏览的情况,这个怎么解决呢。Cloudflare是国外著名的免费CDN...

    魏艾斯博客www.vpsss.net
  • 服务器升级至centos8 网站配置-php与mysql从5.6升级到php7与msyql

    linux centos8 安装php7 nginx1.4 mysql8 ,运行php网站,各个模块从零开始配置

    周陆军
  • Lighthouse Router (一):在腾讯云轻量应用服务器上安装 MikroTik RouterOS 并配置简单的端口转发

      RouterOS 是由 MikroTik 公司开发的基于 Linux 内核的路由操作系统,是目前功能较强、应用较广的一款软路由系统,适用于中小企事业单位、网...

    Nyarime
  • Lighthouse Router (1): 在腾讯云轻量应用服务器上安装RouterOS并配置简单的端口转发

    RouterOS 是由 MikroTik 公司开发的基于 Linux 内核的路由操作系统,是目前功能较强、应用较广的一款软路由系统,适用于中小企事业单位、网吧...

    iks
  • IPFS - 一个点对点的超媒体协议

    Juan Benet在 2014 年创建了 Protocol Labs (协议实验室)

    Hajeekn
  • Linux 中firewall的使用方法总结

    以上就是Linux 中firewall的简单实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    砸漏
  • 【教程】Cloudflare CDN 的 Page Rules 参数设置详细解释

    面向需要高级安全性和性能、PCI 合规以及优先电子邮件支持的小型电子商务网站和企业。

    lbyxiaolizi
  • vue中的路由编写方法

    李维亮
  • cloudflare防护cc的方法

    所有ip不是1.2.4.8(你可以改为服务器的ip或者自己的ip) 并且ip有过任何不好行为的ip,都启用验证码,如果你更严格,把评分去掉.

    义含-遗憾
  • PTAA:一款功能强大的紫队自动化渗透测试工具

    为了评估安全检测与事件响应能力,我们正在尝试寻找一种自动化模拟对手攻击策略的方式。通过研究,我们设计出了MITRE ATT&CK™ TTPs,并以Metaspl...

    FB客服
  • 将你的网站部署到 Cloudflare 加快访问速度

    本文章首发于语雀! 通过各种高科技功能同步到Hajeekn 的博客 上篇我们介绍了 Cloudflare Argo Tunnel 的玩法 本篇讲述如何部署网站到...

    Hajeekn
  • Cloudflare泄露用户信息长达数月:系“编程错误”导致

    Cloudflare是一家位于美国的网络安全服务商,为包括Uber(优步),Fitbit,1password等在内的众多公司提供网站安全管理,性能优化等服务。近...

    FB客服
  • 如何编写方法

    wfaceboss
  • Cloudflare 页面缓存(Page Rules)优化WordPress全站缓存配置规则

    当你接入Cloudflare的CDN,并点亮小云朵之后。你的网站就已经通过Cloudflare的CDN节点进行中转了。默认情况下,Cloudflare 会对你网...

    陌涛
  • 一个聪明的计划以确保物联网安全可能仍然有很大的缺点

    事物互联网安全危机继续快速发展。新的僵尸网络可以应用于征兵路由器和安全摄像机,黑客利用医疗设备来破坏整个医院网络,智能玩具仍然在儿童身上蔓延。互联网基础设施公司...

    首席架构师智库
  • Nali:一个离线查询 IP 地理信息和 CDN 提供商的终端利器

    dig、nslookup、traceroute 等都是非常实用的网络调试工具,Nali 是一个可以自动解析这些工具 stdout 中的 IP 并附上所属 ISP...

    iMike

扫码关注云+社区

领取腾讯云代金券