使用 Azure Web 应用防火墙拦截黑客攻击

点击上方蓝字关注“汪宇杰博客”

使用 Azure Web 应用防火墙拦截黑客攻击

导语

开发或运维过网站的朋友总免不了遇到不怀好意的访客。互联网上有许多全自动黑客工具及脚本,可以扫描你的网站是否有已知安全漏洞,并全自动发起攻击,企图夺取服务器控制权。尽管我们可以在编写网站程序的时候尽量做到符合安全标准,但难免会有疏忽的时候。因此企业常常采购网站应用防火墙(WAF),部署在网站入口,来拦截常见的攻击行为。微软的有钱人专用云 Azure 上也有成熟的 WAF 服务,可以让我们点点鼠标就配完防火墙,远离奋斗。

使用 Azure Web 应用防火墙拦截黑客攻击

Azure WAF 简介

Azure Web 应用程序防火墙(WAF)是原生的托管服务,可为您的 Web 应用程序提供保护,使其免受常见漏洞和漏洞的影响。Web 应用程序越来越成为各种类型的攻击的目标,例如恶意机器人、SQL 注入攻击和跨站脚本攻击,这些攻击可能导致网站站点破坏,敏感数据泄露和应用程序宕机。防止应用程序代码中的此类攻击具有难度,并且可能需要在应用程序拓扑的多层进行严格的维护,修补和监视。集中式Web应用程序防火墙有助于简化安全管理,并更好地确保应用程序管理员免受威胁或入侵。此外,WAF解决方案可以通过在中心位置修补已知漏洞而不是保护每个单独的Web应用程序来更快地响应安全威胁。

使用 Azure Web 应用防火墙拦截黑客攻击

为什么要用 Azure 的 WAF

因为贵的东西除了贵,没有别的问题。

使用 Azure Web 应用防火墙拦截黑客攻击

图 | 安全牛《战五渣?四大云WAF实战测试险遭团灭》

https://mp.weixin.qq.com/s/cIzT5SKX7EV-13zQlltcyQ

使用 Azure Web 应用防火墙拦截黑客攻击

创建 Azure WAF

在 Azure Portal 里点击 Create a resource,搜索 "WAF",选择 "Web Application Firewall",点击 Create。

使用 Azure Web 应用防火墙拦截黑客攻击

Azure WAF 可以整合到 Front Door, Application Gateway 及 Azure CDN 中。其中的 Front Door 我曾经写过几篇文章介绍(见文末),最为熟悉,所以以此为例,Policy for 里选择 "Front Door"。Policy name 可以任意指定。

使用 Azure Web 应用防火墙拦截黑客攻击

Mode 设置为 Prevention,即拦截模式,可以阻止被识别的攻击。而 Detection 模式只会记录日志,并放行攻击行为,假装没看见。

Block response body 的内容可以留空,也可以设置为给黑客的问候语,当攻击行为被拦截的时候就会显示在黑客的屏幕上,气死他/她/它。

使用 Azure Web 应用防火墙拦截黑客攻击

Managed rules 中列出了微软提供的几款常用防火墙规则,可以勾选你需要的。其中涵盖了常见的 SQL 注入、XSS、Windows, Linux 远程命令执行、PHP注入、恶意机器人等等非常全面的攻击行为规则。试想一下,如果没有 WAF,要程序员手写代码全面防御这些攻击,要修多少福报?而用了 Azure,只要点点鼠标就配完了,下班时候天还亮着。

使用 Azure Web 应用防火墙拦截黑客攻击

Custom rules 允许我们设置微软不提供的自定义防火墙规则。我们在稍后会介绍,此处先跳过。这些规则以及 Managed rules 都可以在创建完 WAF 后更改。

由于这个 WAF 策略在第一步里设置为了 Front Door,因此我们需要关联 Front Door 中的域名。至于 Front Door 是什么,怎么玩,可以参考我之前的文章。

未雨绸缪 | 一文简介 Azure Front Door

解决 Azure AD 在 Azure Front Door 下登录失败的问题

使用 Azure Front Door 配置网站URL重定向

使用 Azure Web 应用防火墙拦截黑客攻击

最后点击 Review + Create,完成 WAF 创建。如果成功关联了 Front Door,那么等待5分钟左右,WAF 即生效。

使用 Azure Web 应用防火墙拦截黑客攻击

使用自定义规则

Azure WAF 允许用户非常灵活地自定义防火墙规则。例如,我的博客并不是 PHP 写的,所以请求 .php 的往往是黑客扫描工具。我想屏蔽 .php 的请求。那么我可以添加一个自定义规则,查找 URL 为 .php 结尾的请求,并阻止掉。

至于所谓黑客的扫描工具,并不是我瞎编的,可以给大家看个实际案例。我的博客运营11年间,经常被黑客工具扫描,而用了 Azure 以后,Application Insight 就能监测到这种短时间大量 404 请求的情况:

使用 Azure Web 应用防火墙拦截黑客攻击

可以发现这段时间的 failure 几乎都是 404。实际上网站在这段时间内可以正常访问,并没有爆炸。

使用 Azure Web 应用防火墙拦截黑客攻击

Drill in 进去就能发现这些 404 请求都是黑客工具在尝试常见的 PHP 系统漏洞。

使用 Azure Web 应用防火墙拦截黑客攻击

还尝试 SQL 注入,在 URL 最后加个单引号。天哪,这可是我 2003 年初中时候玩剩下的,现在还有……

使用 Azure Web 应用防火墙拦截黑客攻击

实际上 Azure WAF 的 managed rules 里已经能够防御大部分这样的扫描,但如果想通过自定义规则来实现,也可以,比如屏蔽所有 .php 的请求。进入 Azure WAF,Custom rules,添加一个自定义规则。

使用 Azure Web 应用防火墙拦截黑客攻击

指定一个名称,例如 BlockPHPExtension,将 Rule type 设置为 Match

使用 Azure Web 应用防火墙拦截黑客攻击

Condition 为规则触发条件。为了匹配所有以 .php 结尾的请求,我们可以:

Match type: String

Match variable: RequestUri

Operation: is

Operator: Ends with

Transformation: Lowercase

Match values: .php

最后拒绝请求:Deny traffic

使用 Azure Web 应用防火墙拦截黑客攻击

保存规则后等5分钟左右,尝试访问 .php 结尾的URL,就是这个效果:

使用 Azure Web 应用防火墙拦截黑客攻击

Response Headers 里也能看到本次拦截是 Azure WAF 的功劳。

使用 Azure Web 应用防火墙拦截黑客攻击

这个 Custom rules 还支持多种条件组合。例如屏蔽或仅允许某些国家及地区的请求、屏蔽短时间大量请求(Rate limit)、屏蔽大数据量的请求(Size)等等。可以轻松满足各自的需要。

使用 Azure Web 应用防火墙拦截黑客攻击

使用 Azure Web 应用防火墙拦截黑客攻击

哎,有钱人的云,就是这么简单粗暴,且有效!

使用 Azure Web 应用防火墙拦截黑客攻击

汪宇杰博客

Azure | .NET | 微软 MVP

无广告,不卖课,做纯粹的技术公众号

喜欢本篇内容请点个在看

使用 Azure Web 应用防火墙拦截黑客攻击