為 Java 8 設定 DoS 保護服務

App Engine 阻斷服務 (DoS) 保護服務能在應用程式在受到阻斷服務攻擊,或遭受類似形式的濫用時,保護應用程式免於耗盡配額。您可以將 IP 位址或子網路加入黑名單,讓系統在您的應用程式程式碼受到呼叫前,先過濾掉從這些位址或子網路轉送過來的要求。如此一來,這些要求就不會耗用到任何免費或計費的分配資源。

根據預設,App Engine 會提供一般錯誤頁面給列入黑名單的位址。您可以自行設定應用程式,讓它提供自訂的回應訊息

事前準備

在您應用程式的 WEB-INF 目錄中建立 dos.xml 檔案。在這個檔案中指定要列入黑名單的 IP 位址和網路。

透過 DoS 黑名單封鎖要求

您可以將 IP 位址和 IP 子網路加入黑名單,讓這些位址無法存取您的應用程式。

dos.xml 最多可包含 100 個項目,因此如果發生 DoS 攻擊,可能必須封鎖整個子網路。如果在對應用程式進行的 DoS 攻擊中,發現多個 IP 位址皆來自相同的網路,那麼採用這樣的保護方式也比較有效率。

建立 IP 位址的黑名單項目

如要封鎖一或多個 IP 位址對應用程式的存取,您可以在 dos.xml 檔案中定義這些 IPv4 或 IPv6 位址。例如:

<?xml version="1.0" encoding="UTF-8"?>
<blacklistentries>
  <blacklist>
    <subnet>1.2.3.4</subnet>
    <description>a single IP address</description>
  </blacklist>
  <blacklist>
    <subnet>abcd::123:4567</subnet>
    <description>an IPv6 address</description>
  </blacklist>
</blacklistentries>

如果是分散式阻斷服務 (DDoS) 攻擊,您可能需要封鎖整個子網路,而非封鎖個別 IP 位址。

範例請見 dos.xml 參考資料

建立 dos.xml 之後,您必須將該檔案上傳至應用程式

建立 IP 子網路的黑名單項目

如要封鎖 IP 子網路對應用程式的存取,您可以使用 CIDR 格式來定義 IP 子網路。IP 轉 CIDR 工具能協助您建立採用 CIDR 標記法的規則。

<?xml version="1.0" encoding="UTF-8"?>
<blacklistentries>
  <blacklist>
    <subnet>abcd::123:4567/48</subnet>
    <description>an IPv6 subnet</description>
  </blacklist
  <blacklist>
    <subnet>abcd::123:4567/48</subnet>
    <description>an IPv6 subnet</description>
  </blacklist
</blacklistentries>

範例請見 dos.xml 參考資料

建立 dos.xml 之後,您必須將該檔案上傳至應用程式

建立自訂錯誤訊息,以便在收到列入黑名單的要求時傳送

根據預設,系統會針對 DoS 保護服務所封鎖的要求,顯示一般錯誤頁面。分散式阻斷服務攻擊也可能會牽涉到合法使用者的受感染機器,而本頁將為這些使用者解釋他們存取遭拒的原因。

  1. 在您的應用程式目錄中建立靜態檔案,用來處理遭到 DoS 保護服務封鎖的要求。

  2. appengine-web.xml 檔案中,提供靜態檔案的路徑並加上 dos_api_denial<static-error-handlers> 類型,藉此為 DoS 回應指定錯誤處理常式:

    <static-error-handlers>
      <handler error-code="dos_api_denial" file="dos-response.html" />
    </static-error-handlers>
    

刪除所有黑名單項目

如要刪除所有黑名單項目:

  1. 編輯 dos.xml 檔案,讓檔案僅包含:

    <?xml version="1.0" encoding="UTF-8"?>
    <blacklistentries/>
    

    刪除 dos.xml 並不會移除黑名單。

  2. 重新部署 dos.xml,使變更生效。

在主控台中查看 DoS 拒絕錯誤

您可以查看遭到拒絕的要求數圖表:

  1. 前往 Google Cloud Platform 主控台的 App Engine 資訊主頁:

    開啟 App Engine 錯誤詳細資料的圖表

  2. 視情況調整圖表時間範圍以查看結果。

上傳 DOS 黑名單

您可以使用 appcfg.sh 上傳 DoS 的設定。當您使用 appcfg.sh update 上傳應用程式至 App Engine 時,系統會以 dos.xml 設定檔的內容更新 DoS 保護服務。

若僅要更新 DoS 設定檔但不更新應用程式的其餘部分,您可以使用以下指令:

appcfg.sh update_dos [PATH_TO_CONFIG_FILE]/dos.xml

後續步驟

  • 設定 Stackdriver Monitoring 來快速找出問題,以及接收相關快訊。
  • 參閱客戶經驗,瞭解他們如何回應分散式阻斷服務 (DDoS) 攻擊 (2013 年 1 月)。
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Java 適用的 App Engine 標準環境