使用 Azure Web 应用防火墙拦截黑客攻击
點擊上方藍字關注“汪宇杰博客”
導語
開發(fā)或運維過網(wǎng)站的朋友總免不了遇到不懷好意的訪客。互聯(lián)網(wǎng)上有許多全自動黑客工具及腳本,可以掃描你的網(wǎng)站是否有已知安全漏洞,并全自動發(fā)起攻擊,企圖奪取服務器控制權。盡管我們可以在編寫網(wǎng)站程序的時候盡量做到符合安全標準,但難免會有疏忽的時候。因此企業(yè)常常采購網(wǎng)站應用防火墻(WAF),部署在網(wǎng)站入口,來攔截常見的攻擊行為。微軟的有錢人專用云 Azure 上也有成熟的 WAF 服務,可以讓我們點點鼠標就配完防火墻,遠離奮斗。
Azure WAF 簡介
Azure Web 應用程序防火墻(WAF)是原生的托管服務,可為您的 Web 應用程序提供保護,使其免受常見漏洞和漏洞的影響。Web 應用程序越來越成為各種類型的攻擊的目標,例如惡意機器人、SQL 注入攻擊和跨站腳本攻擊,這些攻擊可能導致網(wǎng)站站點破壞,敏感數(shù)據(jù)泄露和應用程序宕機。防止應用程序代碼中的此類攻擊具有難度,并且可能需要在應用程序拓撲的多層進行嚴格的維護,修補和監(jiān)視。集中式Web應用程序防火墻有助于簡化安全管理,并更好地確保應用程序管理員免受威脅或入侵。此外,WAF解決方案可以通過在中心位置修補已知漏洞而不是保護每個單獨的Web應用程序來更快地響應安全威脅。
為什么要用 Azure 的 WAF
因為貴的東西除了貴,沒有別的問題。
圖 | 安全牛《戰(zhàn)五渣?四大云WAF實戰(zhàn)測試險遭團滅》
https://mp.weixin.qq.com/s/cIzT5SKX7EV-13zQlltcyQ
創(chuàng)建 Azure WAF
在 Azure Portal 里點擊 Create a resource,搜索 "WAF",選擇 "Web Application Firewall",點擊 Create。
Azure WAF 可以整合到 Front Door, Application Gateway 及 Azure CDN 中。其中的 Front Door 我曾經(jīng)寫過幾篇文章介紹(見文末),最為熟悉,所以以此為例,Policy for 里選擇 "Front Door"。Policy name 可以任意指定。
Mode 設置為 Prevention,即攔截模式,可以阻止被識別的攻擊。而 Detection 模式只會記錄日志,并放行攻擊行為,假裝沒看見。
Block response body 的內(nèi)容可以留空,也可以設置為給黑客的問候語,當攻擊行為被攔截的時候就會顯示在黑客的屏幕上,氣死他/她/它。
Managed rules 中列出了微軟提供的幾款常用防火墻規(guī)則,可以勾選你需要的。其中涵蓋了常見的 SQL 注入、XSS、Windows, Linux 遠程命令執(zhí)行、PHP注入、惡意機器人等等非常全面的攻擊行為規(guī)則。試想一下,如果沒有 WAF,要程序員手寫代碼全面防御這些攻擊,要修多少福報?而用了 Azure,只要點點鼠標就配完了,下班時候天還亮著。
Custom rules 允許我們設置微軟不提供的自定義防火墻規(guī)則。我們在稍后會介紹,此處先跳過。這些規(guī)則以及 Managed rules 都可以在創(chuàng)建完 WAF 后更改。
由于這個 WAF 策略在第一步里設置為了 Front Door,因此我們需要關聯(lián) Front Door 中的域名。至于 Front Door 是什么,怎么玩,可以參考我之前的文章。
《未雨綢繆 | 一文簡介 Azure?Front Door》
《解決 Azure AD 在 Azure Front Door 下登錄失敗的問題》
《使用 Azure Front Door 配置網(wǎng)站URL重定向》
最后點擊 Review + Create,完成 WAF 創(chuàng)建。如果成功關聯(lián)了 Front Door,那么等待5分鐘左右,WAF 即生效。
使用自定義規(guī)則
Azure WAF 允許用戶非常靈活地自定義防火墻規(guī)則。例如,我的博客并不是 PHP 寫的,所以請求 .php 的往往是黑客掃描工具。我想屏蔽 .php 的請求。那么我可以添加一個自定義規(guī)則,查找 URL 為 .php 結(jié)尾的請求,并阻止掉。
至于所謂黑客的掃描工具,并不是我瞎編的,可以給大家看個實際案例。我的博客運營11年間,經(jīng)常被黑客工具掃描,而用了 Azure 以后,Application Insight 就能監(jiān)測到這種短時間大量 404 請求的情況:
可以發(fā)現(xiàn)這段時間的 failure 幾乎都是 404。實際上網(wǎng)站在這段時間內(nèi)可以正常訪問,并沒有爆炸。
Drill in 進去就能發(fā)現(xiàn)這些 404 請求都是黑客工具在嘗試常見的 PHP 系統(tǒng)漏洞。
還嘗試 SQL 注入,在 URL 最后加個單引號。天哪,這可是我 2003 年初中時候玩剩下的,現(xiàn)在還有……
實際上 Azure WAF 的 managed rules 里已經(jīng)能夠防御大部分這樣的掃描,但如果想通過自定義規(guī)則來實現(xiàn),也可以,比如屏蔽所有 .php 的請求。進入 Azure WAF,Custom rules,添加一個自定義規(guī)則。
指定一個名稱,例如 BlockPHPExtension,將 Rule type 設置為 Match
Condition 為規(guī)則觸發(fā)條件。為了匹配所有以 .php 結(jié)尾的請求,我們可以:
Match type: String
Match variable: RequestUri
Operation: is
Operator: Ends with
Transformation: Lowercase
Match values: .php
最后拒絕請求:Deny traffic
保存規(guī)則后等5分鐘左右,嘗試訪問 .php 結(jié)尾的URL,就是這個效果:
Response Headers 里也能看到本次攔截是 Azure WAF 的功勞。
這個 Custom rules 還支持多種條件組合。例如屏蔽或僅允許某些國家及地區(qū)的請求、屏蔽短時間大量請求(Rate limit)、屏蔽大數(shù)據(jù)量的請求(Size)等等。可以輕松滿足各自的需要。
哎,有錢人的云,就是這么簡單粗暴,且有效!
汪宇杰博客
Azure | .NET |?微軟 MVP
無廣告,不賣課,做純粹的技術公眾號
喜歡本篇內(nèi)容請點個在看
總結(jié)
以上是生活随笔為你收集整理的使用 Azure Web 应用防火墙拦截黑客攻击的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 9 Lambda 小幅升级
- 下一篇: Azure WAF 导致网站无法登录 A