2019年1月26日 星期六

使用 Azure Log Analytics 建立監控分析 Azure WAF 儀表板

架設完成 Azure WAF 服務之後,要如何知道運作狀況?
預設在Azure WAF的計量中有提供效能方面的資訊

可以在圖中的 Metric 下拉式選單中檢視各項效能資訊,相信這樣仍然有所不足對吧?
例如,要如何得知是否有資安攻擊?是否有不正常流量狀況?或者其中進一步的資訊...
首先, Azure WAF 提供了以下三種 Log:
  • ApplicationGatewayAccessLog
  • ApplicationGatewayPerformanceLog
  • ApplicationGatewayFirewallLog
但是呢?這三種Log要存放在哪裡?存放的地方要自己準備喔,當然最方便的就是放在Azure Storage裡面了,所以首先第一步,就是要準備一個 Azure Storage,新增一個儲存體帳戶,過程不贅述了,參考下圖:
帳戶種類選擇「Storage(一般用途 v1)」即可,其他選項依需求選擇。


準備好了儲存空間,接下來就要設定啟用 WAF  Log 紀錄和存放位置,來到 WAF 的設定畫面,選擇「診斷紀錄檔」新增一筆設定


首先取好設定名稱,接著設定儲存體帳戶,先勾選「封存至儲存體帳戶」,選擇之前新增的 Storage...

接下來勾選「傳送至 Log Analytics」,接著新增一個工作區,設定完相關資訊後,最後是訂價層,就是收費模式....是的, Log Analytics 是要付費的!
收費方式參考:Log Analytics 收費模式


接下來就是選擇勾選要存哪個事件,以及保留天數,一般建議留存三個月...
另外是 Metric 效能資料,這就看是否有需求要另外收集效能資訊分析...

以上步驟就已經完成收集 WAF Log的作業了,接下來就是資料分析的作業了,在之前的設定過程中已經新增了 Log Analytics 的工作區,如果熟悉搜尋語言可以自行設定資料分析的公式,又或者直接使用 Azure 預設提供的監控範本(在Azure Log Analytics的名詞是解決方案),設定方式如下圖:

Azure Log Analytics 提供了許多非常多的範本,這個情境選擇「Azure 應用程式閘道分析」並建立...


不需要其他設定,就自動建立一套儀表板了,點選進去可以看到更詳細內容

例如 WAF 存取事件、防火牆事件等等...


點選任何一張圖,就可以進入下圖中的畫面,可呈現原始的事件紀錄清單...

為了可以快速日後瀏覽,可以釘選在首頁儀表板,點選圖釘的地方

接下來在Azure Portal首頁的儀表板,就可以看到了

OK,關於使用Azure Log Analytics 監控分析 Azure WAF 的方法介紹到這邊囉~

2019年1月25日 星期五

在 Azure WAF上設定將網址 http 自動導向 https

在 Azure WAF 設定 redirect 是很簡單的事,關於 Azure WAF 的資訊您可以參考以下文章:
在 Azure 啟用 WAF保護 Web服務

要實作將網址 http 自動轉向 https,首先一樣先從做前端的「接聽程式」開始,先到WAF設定畫面的「接聽程式」先新增一筆「基本」

新增的接聽程式,重點在於設定要接聽的是 Port 80,設定埠號名稱、埠號以及通訊協定
這樣就總共有兩筆「接聽程式」了,一個是接聽 Port 443,另一個是接聽 Port 80


接下來要新增一筆「規則」選擇「基本」

 在新增規則的內容,首先設定規則名稱、還有接聽程式(就是一開始設定的接聽 Port 80那一條),然後勾選最關鍵的「設定重新導向」,會出現重新導向類型,這個地方請思考實際需求選擇適合的類型,重新導向目標選擇「接聽程式」,所以目標接聽程式就是原本 Port 443的接聽程式,其他地方保持預設,完成後就大功告成了。

接下來就可以測試囉,常識打 http開頭的網址,是否會自動轉向 https?

在 Azure 啟用 WAF保護 Web服務

來談談 WAF (Web Application Firewall)吧,不知道啥麼是WAF的話下列網址可以自行研究一下:
WAF:網站主機的金鐘罩鐵布衫

因此對外的Web重要服務,通常都需要架設WAF來保護,即使移轉到雲端也是一樣,所以本篇文章說明,在微軟的Azure雲端平台,如何啟用WAF保護Web服務。

微軟官方文章已經寫了非常清楚,關於概念功能,也有教程,可以先參考一下:
https://docs.microsoft.com/zh-tw/azure/application-gateway/overview

Azure 的 WAF,內建於 Azure Application Gateway 這支功能之中,選擇部屬Azure Application Gateway就可以選擇 WAF模式和應用程式閘道模式。

本篇文章已描述 WAF 為主:

Azure Application Gateway

有幾個重要元件可以從上圖了解:
1. Application Gateway Frontend IP : 直接面對來自於網際網路流量的最前端 IP
2. HTTP/HTTPS Listener (接聽程式):要監聽來自於網際網路流量的哪一個 Port
3. HTTP Setting:前端的接聽程式,要對應後端實際的網頁伺服器的哪個 Port
4. Rule:定義前端要用哪幾個接聽程式?後端用哪幾個 HTTP Setting?實際要保護的是哪幾台Web服務?
5. Backend Pool:實際要接受保護的網頁伺服器

各個重要角色都清楚了,就可以開始實作了:
首先,假設我的網站架設在Azure上(舉例網址為:https://www.sinya.com/),需要啟用WAF來保護,由於是走 HTTPS 因此還要注意憑證的操作。
另外,我在DNS有一筆 www 的 A紀錄指向網頁伺服器的 IP,當WAF 建置完成之後,就要將DNS改成指向WAF,如此Web就正是受到WAF保護了

接下來開始實作了:
1. 新增一個Azure Application Gateway服務:
    在步驟一,先設定基本組態資料,除了「定價層」要選擇 WAF,其他選擇預設就好
第二步驟,設定WAF的網路組態,以及設定公用IP,其中最重要的是「接聽程式」的設定,因為要保護 HTTPS網站,因此需要先上傳 PFX 檔案,由於接聽程式要代表網頁伺服器本身承受來自網際網路的流量,因此需要含私鑰的PFX檔案,這個PFX檔案,就需要從 網頁伺服器本身匯出 (參考:匯入和管理 SSL 私密金鑰 )
接下來,就是起用防火牆狀態,以及防火牆模式,所謂的偵測和預防的差別,在於有無阻擋機制,按下確定後第三步驟,檢視設定內容後就可以正式建立了,建立過程會花點時間請耐心等候...

建置完成之後,前往 WAF 的設定畫面,如下圖
首先,可以在圖中右上方紅框處得知 WAF 的公用 IP,以及FQDN資訊,這就是當完成之後要更改 DNS 紀錄用的,左邊紅框處,是剛才設定過程中已經設定完成的接聽程式,進去看一下內容,因隱私我遮蔽了一些項目,假設下圖中那一項接聽程式(_Port443)是剛才設定的,我們可進一步觀察細部設定:

下圖是接聽程式的設定內容,例如前端公用IP、接聽的網路埠號、主機名稱、憑證等等...
這一段先前的設定已經完成,不需要多做設定。
接下來,要新增一個 HTTP 設定:
在HTTP設定中,要設定後端網頁伺服器的要接聽的通訊協定,由於我的網頁伺服器有設定SSL憑證,因此選擇 HTTPS,同時上傳 cer 憑證檔案 (可以從IE瀏覽器開啟SSL網頁時匯出cer檔案)...
另外一個狀況:如果網頁伺服器並沒有掛 SSL 憑證,但是希望 WAF 可以掛SSL憑證,原本網頁伺服器還是走 Port 80,這樣情境也是可以的!
就是前端的「接聽程式」走 HTTPS,這邊的 HTTP設定走 HTTP 即可喔!

接下來設定「後端集區」指定實際的網頁伺服器,設定後端集區的名稱、輸入網頁伺服器的 IP 或者 FQDN,按下新增就好了

接下來設定「規則」指定規則名稱、前端接聽程式、後端HTTP設定和後端集區,這樣就行了!
這樣 WAF 就會依造這條規則,將接聽的網路埠號、街到後端的HTTP設定,進而將資料送到後端集區的網頁伺服器了~目前為止大致設定差不多了,但是還有一個設定要完成,就是「健康狀態探查」如此才能確認WAF服務是否OK...
輸入探查的名稱、通訊協定、主機名稱,要探查的路徑(不知道的話打 「/」 代表看全部),其他沒特別需求保持預設即可

接下來要回到「HTTP設定」找到之前設定完成的 HTTP設定,直接拉到最下方勾選"自訂探查"項目,會出現下拉式選單,選擇剛才建立的"健康狀態探查"
接下來就先確認WAF機制是否有正常的運作了,找到有愛心符號的「後端健康狀態」只要看到狀況良好的綠色符號,就代表大功告成了,至目前為止WAF設定便完成了。

建議各位,儘量測試網站各項功能,看是否WAF有影響到網站功能造成異常,如果測試都沒有問題,就可以到DNS將網站的 A 紀錄改成 WAF 的囉,首先將原本網站的 A 紀錄刪掉,新增一筆網站的 CNAME 紀錄,我這邊用 Azure DNS 來舉例:輸入對應的網站FQDN, 和輸入 WAF的CNAME資訊
WAF 的 CNAME 資訊在何處?藏在概觀的畫面上,公用IP 後面括號中一串亂碼後面帶 cloudapp.net的字串就是了...

待 DNS 生效之後 Ping 看看,接下來確認網頁開啟正常之後,就大功告成囉...