輕松便捷為AWS WAF部署一套儀表板

來源: AWS
作者:AWS Team
時間:2020-09-02
17170
在本文中,我們將向大家介紹如何在Amazon Web Services(AWS)賬戶中部署一套解決方案,通過AWS Web Application Firewall(WAF)服務提供全自動儀表板。

在本文中,我們將向大家介紹如何在Amazon Web Services(AWS)賬戶中部署一套解決方案,通過AWS Web Application Firewall(WAF)服務提供全自動儀表板。這套解決方案使用由AWS WAF生成并收集到的日志記錄,并通過用戶友好型儀表板顯示相關結果,具體如圖一所示。

deploy-dashboard-for-aws-waf-minimal-effort1.png

圖一:AWS WAF的用戶友好型儀表板

此儀表板提供多種圖表,可供您隨時參考、篩選及調(diào)整。圖一為我們使用樣本網(wǎng)頁中的數(shù)據(jù)創(chuàng)建出的示例儀表板,您可以在其中查看:

·已執(zhí)行的AWS WAF規(guī)則

·全部請求數(shù)量

·被阻止的請求數(shù)量

·允許及被阻止的請求數(shù)量對比

·來自不同國家的請求數(shù)量

·HTTP方法

·HTTP版本

·特定IP計數(shù)

·請求計數(shù)

·訪問量前10的IP地址

·訪問量前10的國家

·訪問量前10的用戶代理

·訪問量前10的主機

·訪問量前10的WebACL

此儀表板由Kibana創(chuàng)建而成,您可以向其中添加新的可視化圖表,充分發(fā)揮其功能靈活性。

AWS WAF是一套Web應用程序防火墻。它有助于保護您的Web應用程序或API免受各類常見Web攻擊活動對其可用性、安全性以及資源消耗量的負面影響。只需幾個步驟,您就可以將AWS WAF部署至應用程序負載均衡器、Amazon CloudFront分配或者Amazon API Gateway階段當中。在本文中,我們將共同了解如何深入了解AWS WAF層的運行情況。AWS WAF提供兩種服務版本:AWS WAF(版本2)與AWS WAF經(jīng)典。這里,我們建議您使用AWS WAF版本2以保持最新功能,因為AWS WAF經(jīng)典已經(jīng)不再更新。當然,本文中描述的解決方案可同時支持這兩種AWS WAF版本。

這套解決方案能夠快速實現(xiàn)部署:不到一個小時之內(nèi),儀表板即可準備就緒。該解決方案使用多項AWS服務構建而成,具體包括Amazon Elasticsearch(Amazon ES),AWS Lambda,Amazon Kinesis Data Firehose,Amazon Cognito,Amazon EventBridge等等。當然,大家無需了解這些服務的詳細信息,即可輕松完成儀表板的構建與使用。在這里我們準備了一套CloudFormation模板,您可以在AWS控制臺進行部署,借此在您的AWS賬戶上自動設置整個解決方案。您也可以在我們的AWS Github上找到完整解決方案。此方案屬于開源成果,因此您可以隨意使用與編輯,滿足您希望達成的任何需求。

此解決方案的架構可以分為7個步驟,如圖二所示。

deploy-dashboard-for-aws-waf-minimal-effort2.png

圖二:構建儀表板時的交互點

各交互點如下:

1.AWS WAF服務的一項重要功能為AWS WAF日志。此日志能夠捕捉關于被阻止及允許的請求的相關信息,結果將被轉(zhuǎn)發(fā)至Kinesis Data Firehose服務。

2.Kinesis Data Firehose緩沖區(qū)接收信息,而后將其發(fā)送至作為解決方案核心的Amazon ES處。

3.部分信息——例如AWS WAF Web ACL中的名稱——不會被記錄在AWS WAF日志當中。為了使整個解決方案對于用戶更加友好,我在這里使用了EventBridge;每當用戶更改其AWS WAF配置時,都會調(diào)用EventBridge。

4.在創(chuàng)建新規(guī)則時,EventBridge將調(diào)用Lambda函數(shù)。

5.Lambda將檢索關于全部現(xiàn)有規(guī)則的信息,并更新規(guī)則ID及其名稱在Amazon ES集群中的映射。

6.為了讓整個解決方案更加安全,這里使用Amazon Cognito服務存儲被授權使用儀表板用戶的憑證。

7.用戶輸入憑證以訪問安裝在Amazon ES集群中Kibana上的儀表板。

現(xiàn)在,讓我們部署解決方案并查看其工作效果。

步驟1:使用CloudFormation模板部署解決方案

點擊Launch Stack在您的賬戶內(nèi)啟動一個CloudFormation堆棧,借此部署解決方案。

您將被重新定向至美國北弗吉尼亞州CloudFormation服務,該區(qū)域為與CloudFront相關聯(lián)的AWS WAF WebACL在部署此解決方案時使用的默認區(qū)域。您也可以根據(jù)需要更改具體區(qū)域。此模板將啟動多項云資源,包括但不限于:

·內(nèi)置Kibana的Amazon ES集群,用于存儲數(shù)據(jù)并顯示儀表板。

·Amazon Cognito用戶池,外加一套包含用于指示儀表板訪問權限的用戶注冊表。

·Kinesis Data Firehose,用于將日志流式傳輸至Amazon ES。

在向?qū)С绦蛑?,系統(tǒng)會要求您修改或者提供四項不同參數(shù),分別為:

·DataNodeEBSVolumeSize:待創(chuàng)建的Amazon ES集群的存儲大小,您可以直接保留默認值。

·ElasticSearchDomainName:Amazon ES集群域的名稱。您可以直接保留默認值。

·NodeType:用于創(chuàng)建Amazon ES集群的實例類型。您可以根據(jù)需求進行修改,也可以直接保留默認值。

·UserEmail:您需要更新此參數(shù)。這項參數(shù)所指示的電子郵件地址將負責收取Kibana登錄密碼。

步驟2:等待

我將本示例中的模板命名為aws-waf-dashboard,其啟動過程大概需要20到30分鐘。您可以休息一會兒,直到該堆棧的狀態(tài)轉(zhuǎn)換為CREATE_COMPLETE。

deploy-dashboard-for-aws-waf-minimal-effort4.png

圖三:CloudFormation模板啟動完成

步驟3:驗證Kibana與儀表板是否正常工作

檢查您的郵件。您應該已經(jīng)收到包含所需密碼的電子郵件,并可借此登錄至Kibana儀表板。請記錄密碼內(nèi)容,而后返回CloudFormation服務并選擇aws-waf-dashboard模板。在Output選項卡中的Value列中,您應能看到一項參數(shù)及其附帶的指向儀表板的鏈接。

deploy-dashboard-for-aws-waf-minimal-effort5.png

圖四:輸出CloudFormation模板

在Kibana當中,選擇Dashboard選項卡,如圖五所示,而后選擇表中的WAFDashboard。此項操作將調(diào)用AWS WAF儀表板。目前的儀表板應該還沒有內(nèi)容,因為其尚未與AWS WAF連接。

deploy-dashboard-for-aws-waf-minimal-effort6.png

圖五:空白Kibana儀表板

步驟4:接入AWS WAF日志

deploy-dashboard-for-aws-waf-minimal-effort7.png

圖六:WAF&Shield

如果您還沒有啟用AWS WAF日志,則需要立即進行操作以繼續(xù)下一步。請在Web ACL中選擇Logging and metrics,而后選擇Enable logging,如圖七所示。

deploy-dashboard-for-aws-waf-minimal-effort8.png

圖七:啟用AWS WAF日志

在Amazon Kinesis Data Firehose Delivery Stream之下選擇下拉列表,而后選擇由模板在步驟2中創(chuàng)建完成的Kinesis Firehose。其名稱以aws-waf-logs開頭。保存您的更改。

deploy-dashboard-for-aws-waf-minimal-effort9.png

圖八:選擇創(chuàng)建好的Kinesis Firehose

步驟5:最終驗證

您的AWS WAF日志將通過Kinesis Data Firehose從AWS WAF服務直接被發(fā)送至Amazon ES集群,并通過Kibana儀表板供您使用。幾分鐘之后,您應該會在儀表板上看到類似于圖一中的截屏數(shù)據(jù)。

本輪演練成功完成!如大家所見,只需要幾個簡單步驟,我們就構建并部署了一套解決方案,可以使用此方案檢查我們的AWS WAF配置,同時查看其正在發(fā)出哪些請求、以及這些請求是否被阻止/允許。

示例場景

下面,讓我們從示例場景出發(fā),看看這套解決方案的使用方法。我為自己的小狗創(chuàng)建了一個簡單網(wǎng)站,并配置CloudFront以加快網(wǎng)站速度、提升安全水平。

deploy-dashboard-for-aws-waf-minimal-effort10.png

圖九:Java the Dog網(wǎng)站主頁

接下來,我們配置一個AWS WAF Web ACL,并將其附加至當前CloudFront分配當中,這也是我這個小網(wǎng)站的入口點。在AWS WAF Web ACL中,我沒有添加任何規(guī)則,即允許所有請求流入。這樣一來,我就能夠記錄所有請求并準確了解誰在訪問我的網(wǎng)站。接下來,按照前文中提到的步驟配置AWS WAF儀表板。

根據(jù)設想,我以為這個網(wǎng)站的用戶應該主要來自美國、德國和日本,因為這法國斗牛犬在這三個國家特別受歡迎。但通過實際觀察,我發(fā)現(xiàn)來自印度的用戶相當多,這確實有些出乎意料。在圖十中可以看到,AWS WAF儀表板提供包含所有四個國家的統(tǒng)計數(shù)據(jù),而指向此網(wǎng)站的訪問請求超過11000次。

deploy-dashboard-for-aws-waf-minimal-effort11.png

圖十:Kibana儀表板,以及來自美國、日本、德國與印度的訪問請求

deploy-dashboard-for-aws-waf-minimal-effort12.png

圖十一:僅觀察來自印度的網(wǎng)站訪問請求

儀表板顯示,前一個小時內(nèi)我的網(wǎng)站收到700多條來自印度的請求。這對我這個小網(wǎng)站無疑是個巨大的成功……但遺憾的是,所有請求都來自同一個IP地址。此外,其中大多帶有可疑的用戶代理標頭:“secret-hacker-agent”。我們可以在Kibana的Visualize選項卡中看到這部分信息,如圖十二所示。

deploy-dashboard-for-aws-waf-minimal-effort13.png

圖十二:Kibana儀表板中的Visualize選項卡

看起來情況不妙,所以我決定使用AWS WAF阻止這些請求。

那么,新的問題來了——我們到底該屏蔽掉什么?我當然可以直接阻斷所有來自印度的請求,但這顯然不是最好的方法,因為可能還有其他來自印度的真正法國斗牛犬愛好者想看我的網(wǎng)站。我也可以直接阻止當前惡意IP地址,但黑客完全可以使用其他IP繼續(xù)攻擊我的網(wǎng)站。最后,我決定創(chuàng)建一項用于檢查用戶代理標頭的AWS WAF規(guī)則。如果用戶代理標頭包含“secret-hacker-agent”,則該請求將被規(guī)則所阻止。

在AWS WAF規(guī)則部署完成的幾分鐘內(nèi),我注意到網(wǎng)站仍有來自印度的請求,但這一次,帶有可疑用戶代理標頭的請求再也沒有出現(xiàn)!如圖十三所示,隨后出現(xiàn)了約2700項請求,但其中約2000項被阻止。

deploy-dashboard-for-aws-waf-minimal-effort14.png

圖十三:被阻止的可疑請求

實際上,為了展示,我自己就是那個以secret-hacker-agent攻擊自己網(wǎng)站的壞人~大家可以通過以下命令行截屏看到,我那個帶有可疑用戶代理標頭的請求(使用wget實現(xiàn))被正確阻止(接收到「403 Forbidden」消息)。而在使用其他標頭(「good-agent」)時,請求則可成功通過AWS WAF規(guī)則的過濾。

deploy-dashboard-for-aws-waf-minimal-effort15.png

圖十四:運行“wget”命令后的命令行截屏

總結

在本文中,我們詳細介紹了如何通過幾個步驟為AWS WAF部署儀表板,以及如何利用它發(fā)現(xiàn)并阻止Web應用程序攻擊。現(xiàn)在,您可以采用同樣的基本思路為自己的應用程序部署這套解決方案了。如果您對本文中的解決方案及儀表板有任何建議或反饋,請在下方評論區(qū)或者項目的GitHub頁面上與我們交流。

本文的創(chuàng)造靈感,源自我的好友Tom Adamski此前撰寫的另一篇博文,他在其中描述了如何使用Kibana與Amazon ES實現(xiàn)AWS WAF日志可視化。另外,也感謝Achraf Souk在AWS邊緣服務方面向我提供的幫助。

Original URL:https://aws.amazon.com/cn/blogs/security/deploy-dashboard-for-aws-waf-minimal-effort/

本篇作者

1599011960(1).png

Tomasz Stachlewski

Tomasz是AWS公司高級解決方案架構經(jīng)理,他負責幫助不同規(guī)模的企業(yè)(從初創(chuàng)公司到大型巨頭)推進云探索之旅。他是無服務器架構等創(chuàng)新型技術的忠實擁躉,致力于運用這些技術幫助組織加速數(shù)字化轉(zhuǎn)型的步伐。

立即登錄,閱讀全文
版權說明:
本文內(nèi)容來自于AWS,本站不擁有所有權,不承擔相關法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務商推薦
更多
個人VIP