汪宇杰
10年網(wǎng)站開發(fā)和運(yùn)維經(jīng)驗(yàn),Azure和.NET方向開發(fā)者、Azure全球訓(xùn)練營講師、3年連任微軟最有價(jià)值專家(MVP)。現(xiàn)任美國領(lǐng)先金融科技企業(yè)高級(jí)工程師。作為積極的微軟技術(shù)布道者,曾在Windows 10平臺(tái)發(fā)布“描圖”、“Character Map UWP”等總計(jì)數(shù)十款開源無廣告版本應(yīng)用,累積百萬全球裝機(jī)量,被Windows Central、IT之家等知名科技媒體多次推薦。長期運(yùn)營個(gè)人博客https://edi.wang、微信公眾號(hào)“汪宇杰博客”,參與GitHub多個(gè)開源項(xiàng)目,擁有開源、無廣告、非營利傳播技術(shù)的技術(shù)信仰。
開發(fā)或運(yùn)維過網(wǎng)站的朋友總免不了遇到不懷好意的訪客?;ヂ?lián)網(wǎng)上有許多全自動(dòng)黑客工具及腳本,可以掃描你的網(wǎng)站是否有已知安全漏洞,并全自動(dòng)發(fā)起攻擊,企圖奪取服務(wù)器控制權(quán)。盡管我們可以在編寫網(wǎng)站程序的時(shí)候盡量做到符合安全標(biāo)準(zhǔn),但難免會(huì)有疏忽的時(shí)候。因此企業(yè)常常采購網(wǎng)站應(yīng)用防火墻(WAF),部署在網(wǎng)站入口,來攔截常見的攻擊行為。微軟Azure上也有成熟的WAF服務(wù),可以讓我們僅需點(diǎn)幾下鼠標(biāo)便可完成防火墻配置。
Azure WAF簡介
Azure Web應(yīng)用程序防火墻(WAF)是原生的托管服務(wù),可為您的Web應(yīng)用程序提供保護(hù),使其免受常見漏洞和漏洞的影響。Web應(yīng)用程序越來越成為各種類型的攻擊的目標(biāo),例如惡意機(jī)器人、SQL注入攻擊和跨站腳本攻擊,這些攻擊可能導(dǎo)致網(wǎng)站站點(diǎn)破壞,敏感數(shù)據(jù)泄露和應(yīng)用程序宕機(jī)。防止應(yīng)用程序代碼中的此類攻擊具有難度,并且可能需要在應(yīng)用程序拓?fù)涞亩鄬舆M(jìn)行嚴(yán)格的維護(hù),修補(bǔ)和監(jiān)視。集中式Web應(yīng)用程序防火墻有助于簡化安全管理,并更好地確保應(yīng)用程序管理員免受威脅或入侵。此外,WAF解決方案可以通過在中心位置修補(bǔ)已知漏洞而不是保護(hù)每個(gè)單獨(dú)的Web應(yīng)用程序來更快地響應(yīng)安全威脅。
01
創(chuàng)建Azure WAF
在Azure Portal里點(diǎn)擊Create a resource,搜索"WAF",選擇"Web Application Firewall",點(diǎn)擊Create。
Azure WAF可以整合到Front Door,Application Gateway及Azure CDN中。其中的Front Door我曾經(jīng)寫過幾篇文章介紹(見文末),最為熟悉,所以以此為例,Policy for里選擇"Front Door"。Policy name可以任意指定。
Mode設(shè)置為Prevention,即攔截模式,可以阻止被識(shí)別的攻擊。而Detection模式只會(huì)記錄日志,并放行攻擊行為,假裝沒看見。
Block response body的內(nèi)容可以留空,也可以設(shè)置為給黑客的問候語,當(dāng)攻擊行為被攔截的時(shí)候就會(huì)顯示在黑客的屏幕上。
Managed rules中列出了微軟提供的幾款常用防火墻規(guī)則,可以勾選你需要的。其中涵蓋了常見的SQL注入、XSS、Windows,Linux遠(yuǎn)程命令執(zhí)行、PHP注入、惡意機(jī)器人等等非常全面的攻擊行為規(guī)則。試想一下,如果沒有WAF,就需要程序員花費(fèi)一定時(shí)間手寫代碼,而用了Azure,只要輕松點(diǎn)點(diǎn)鼠標(biāo)就完成配置了。
Custom rules允許我們?cè)O(shè)置微軟不提供的自定義防火墻規(guī)則。我們?cè)谏院髸?huì)介紹,此處先跳過。這些規(guī)則以及Managed rules都可以在創(chuàng)建完WAF后更改。
由于這個(gè)WAF策略在第一步里設(shè)置為了Front Door,因此我們需要關(guān)聯(lián)Front Door中的域名。至于Front Door是什么,怎么操作,可以參考我之前的文章。
最后點(diǎn)擊Review+Create,完成WAF創(chuàng)建。如果成功關(guān)聯(lián)了Front Door,那么等待5分鐘左右,WAF即生效。
02
使用自定義規(guī)則
Azure WAF允許用戶非常靈活地自定義防火墻規(guī)則。例如,我的博客并不是PHP寫的,所以請(qǐng)求.php的往往是黑客掃描工具。我想屏蔽.php的請(qǐng)求。那么我可以添加一個(gè)自定義規(guī)則,查找URL為.php結(jié)尾的請(qǐng)求,并阻止掉。
至于所謂黑客的掃描工具,并不是我瞎編的,可以給大家看個(gè)實(shí)際案例。我的博客運(yùn)營11年間,經(jīng)常被黑客工具掃描,而用了Azure以后,Application Insight就能監(jiān)測到這種短時(shí)間大量404請(qǐng)求的情況:
可以發(fā)現(xiàn)這段時(shí)間的failure幾乎都是404。實(shí)際上網(wǎng)站在這段時(shí)間內(nèi)可以正常訪問。
Drill in進(jìn)去就能發(fā)現(xiàn)這些404請(qǐng)求都是黑客工具在嘗試常見的PHP系統(tǒng)漏洞。
還嘗試SQL注入,在URL最后加個(gè)單引號(hào)。
實(shí)際上Azure WAF的managed rules里已經(jīng)能夠防御大部分這樣的掃描,但如果想通過自定義規(guī)則來實(shí)現(xiàn),也可以,比如屏蔽所有.php的請(qǐng)求。進(jìn)入Azure WAF,Custom rules,添加一個(gè)自定義規(guī)則。
指定一個(gè)名稱,例如BlockPHPExtension,將Rule type設(shè)置為Match
Condition為規(guī)則觸發(fā)條件。為了匹配所有以.php結(jié)尾的請(qǐng)求,我們可以:
Match type: String
Match variable: RequestUri
Operation: is
Operator: Ends with
Transformation: Lowercase
Match values: .php
最后拒絕請(qǐng)求:Deny traffic
保存規(guī)則后等5分鐘左右,嘗試訪問.php結(jié)尾的URL,就是這個(gè)效果:
Response Headers里也能看到本次攔截是Azure WAF的功勞。
這個(gè)Custom rules還支持多種條件組合。例如屏蔽或僅允許某些國家及地區(qū)的請(qǐng)求、屏蔽短時(shí)間大量請(qǐng)求(Rate limit)、屏蔽大數(shù)據(jù)量的請(qǐng)求(Size)等等??梢暂p松滿足各自的需要。
微軟最有價(jià)值專家是微軟公司授予第三方技術(shù)專業(yè)人士的一個(gè)全球獎(jiǎng)項(xiàng)。27年來,世界各地的技術(shù)社區(qū)領(lǐng)導(dǎo)者,因其在線上和線下的技術(shù)社區(qū)中分享專業(yè)知識(shí)和經(jīng)驗(yàn)而獲得此獎(jiǎng)項(xiàng)。
MVP是經(jīng)過嚴(yán)格挑選的專家團(tuán)隊(duì),他們代表著技術(shù)最精湛且最具智慧的人,是對(duì)社區(qū)投入極大的熱情并樂于助人的專家。MVP致力于通過演講、論壇問答、創(chuàng)建網(wǎng)站、撰寫博客、分享視頻、開源項(xiàng)目、組織會(huì)議等方式來幫助他人,并最大程度地幫助微軟技術(shù)社區(qū)用戶使用Microsoft技術(shù)。
更多詳情請(qǐng)登錄官方網(wǎng)站:
https://mvp.microsoft.com/zh-cn