使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

本文僅供技術支援專員與 IT 專業人員使用。 如果您有問題正在尋求協助,請詢問 Microsoft Community

簡介

本說明文章的目的在,針對如何縮小使用者資料包通訊協定 (UDP) 放大攻擊的受攻擊面提供指引。 本文包含下列資訊:

  • UDP 與 UDP 放大攻擊概觀。

  • 如何為連接埠與通訊協定設定Azure 網路安全性群組 (NSG),提供最低權限的網際網路存取權限。

  • 如果遞迴網域名稱服務 (DNS) 或網路時間通訊協定 (NTP) 伺服器需要連接埠,應如何設定服務以移除 UDP 放大攻擊的受攻擊面。

  • 如何執行 Nmap 掃描以驗證網路安全性群組設定。

使用者應依照本文中的指引進行,關閉輸入 UDP 連線以縮小受攻擊面。

摘要

使用者資料包通訊協定 (UDP) 是無連線通訊協定。 當 UDP 是 Azure 雲端服務允許的輸入存取時,所產生的受攻擊面可用來針對虛擬機器 (VM) 進行分散式反射拒絕服務 (DRDoS) 攻擊。 UDP 型放大攻擊是分散式拒絕服務 (DDoS) 攻擊的一種形式,其仰賴可公開存取的 UDP 服務與頻寬放大因素(BAF),利用 UDP 流量讓受害者系統不堪負荷。

注意:根據預設,如果您已建立 NSG,其設定會關閉所有連接埠,包括 UDP。 此外,Azure 在平台層級會有 DDOS 保護。 因此,使用者也能在其服務層新增 DDOS。

若要深入了解這類攻擊,請參閱 https://www.us-cert.gov/ncas/alerts/TA14-017A

The UDP-based amplification attack is a form of a distributed denial-of-service (DDoS) attack

這些 UDP 反射攻擊進行時經常利用下列通用連接埠: 17 (QOTD), 19 (CharGEN), 53 (DNS), 69 (TFTP), 123(NTP), 161 (SNMP), 389 (CLDAP), 1900 (SSDP), 9987 (DSM/SCM 目標介面), 11211 (Memcached)。 使用者應評估其是否必須對網際網路公開這些連接埠,並將所有非絕對必要的 UDP 連接埠關閉。 特別是,連接埠 53 (DNS) 或連接埠 123 (NTP) 必須要有輸入 UDP 的使用者,應將易受攻擊的設定 (如本文中所列) 移除。 這是因為這兩個連接埠廣泛用於這類型的攻擊。

通訊協定

UDP 連接埠

易受攻擊的設定

DNS

53

向公用網際網路開放的遞迴 DNS

NTP

123

已啟用開啟查詢與 monlist 命令

建議動作

下列步驟有助於降低攻擊對 UDP 的影響:

  1. 評估有必要向網際網路公開哪些服務、判斷絕對要有哪些輸入 UDP 連接埠,服務才能正確運作,以及關閉所有非必要的 UDP 連接埠。

  2. 必須開放 UDP 連接埠的使用者可參考本文的特定章節,以取得和 UDP 連接埠上的 NTPDNS 接聽有關的建議。 對於所有其他連接埠,請依照<要關閉的 UDP 連接埠>一節進行。

NTP 中的 monlist 服務能夠執行查詢以取得偵錯資訊,而應該只能為了偵錯服務問題而暫時啟用。 此外,它能用來進行 UDP 反射攻擊。 根據預設,比 4.2.8 版舊的 NTP 精靈 (NTPD) 套件中會啟用這項服務。 使用者應依照此指引進行:

  • 需要 monlist 的使用者應設定 NSG,以只允許存取必要的 IP 位址。

  • 使用者若不需要 monlist 且在執行比 4.2.8 版舊的 Linux NTPD 套件,則應將套件更新至最新版本,並確認 monlist 並未啟用。 無法將套件更新至較新版本的使用者,請務必使用下列補救步驟來設定服務:

  1. 檢查 NTPD 套件版本:

#sudo -i ntpq -c rv

  1. 如果 NTPD 套件版本比 4.7p26 舊,請依照下列步驟進行:

#vi /etc/ntp.conf

  1. 如果尚不存在,請新增下列這幾行:

restrict -4 default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

  1. 重新啟動 NTP 服務:

# service ntp restart [Debian/ Ubuntu]

# service ntpd restart [Redhat/ Centos]

注意事項 1: 如果您在 Windows 上安裝 NTPD 套件,並有開放連接埠,則必須依照步驟進行補救動作。

注意事項 2: 如需詳細資訊,請參閱 https://www.us-cert.gov/ncas/alerts/TA14-013A

注意事項 3: 用於時間同步 (模式 3 與模式 4) 的一般 NTP 封包不會受到影響。 這表示同步處理時間,還有伺服器只提供時間時,都是安全的。

執行對網際網路開放的 DNS 遞迴解析程式,可能導致使用者自己的或其他使用者的服務遭到 UDP 攻擊。 使用者應評估其是否真的有必要執行 DNS 服務。 若非如此,則應拒絕所有對連接埠 53 的存取,或將 DNS 服務解除安裝,請依照下列適用於其作業系統與 DNS 實作的指示進行。

確實需要執行 DNS 服務以提供權威名稱解析,但不需要 DNS 遞迴的使用者,應停用此功能,請依照下列適用於其作業系統與 DNS 實作的指示進行 (如本文稍後所提供)。 此外,強烈建議您在所有情況下,都將所有對 NSG 中連接埠 53 的存取,限制在一組以最低權限執行服務所需的特定 IP 位址。

Windows: 在 Windows Server 2012、2016 的 DNS 伺服器上,停用 DNS 遞迴解析程式

  1. 開啟 [DSN 管理員] (選取 [開始],指向 [系統管理工具],然後選取 [DNS])。

  2. 在主控台樹狀目錄中,以滑鼠右鍵按一下適用的 DNS 伺服器,然後選取 [內容]。

  3. 選取 [進階] 索引標籤。

  4. 在 [伺服器選項] 中,確認已選取 [停用遞迴] 核取方塊。

  5. 重新啟動 DNS 服務 (從 [服務] 控制台)。

Linux: 在 Bind 伺服器上,停用 DNS 遞迴

  1. 使用根認證,透過 SSH (安全殼層) 連線到伺服器。

  2. 在連線到伺服器之後,檢查 named.conf 檔案是否有任何 DNS 遞迴,然後調查設定:

    cat /etc/named.conf | grep "recursion"

  3. 使用文字編輯器開啟 named.conf 檔案,然後使用下列命令檢查遞迴的設定:

    #vi /etc/named.conf

  4. 僅變更外部 DNS 遞迴的設定,然後找到名為 “external” 的區段。如果未提供該區段,您可以將下列各行加到 named.conf 檔案,以停用外部 DNS 遞迴。 請將下列各行放入 “options” 區段:

    allow-transfer {"none";};

    allow-recursion {"none";};

    recursion no;

    如果您已有 external 區段,您可以根據需求將 recursion 值變更為 yes no

  5. 完成設定變更之後,請儲存該檔案。

  6. 重新啟動 DNS 伺服器,使變更生效。 執行下列命令以重新啟動 DNS 服務:

    service named restart

    注意: 如果您使用任何其他專屬 DNS 伺服器,請參閱相關產品文件以停用 DNS 遞迴設定。

使用者應關閉高風險的輸入 UDP 連接埠,請依照本節中的指引進行。 建議使用者針對「所有」UDP 連接埠關閉來自網際網路的輸入連線。

必須對網際網路開放特定 UDP 連接埠的使用者,應該只開放該連接埠,並只限對那些絕對必要的 IP 範圍進行輸入存取 (也就是說,不向整個網際網路公開 UDP 連接埠)。

若要關閉 UDP 連接埠,使用者可以執行下列任一動作或兩者:

  • 更新 ARM 範本以停用輸入 UDP。 此舉需要重新部署 NSG 範本。 不過,可確定使用此範本的未來部署會有正確的安全性設定。

  • 更新 NSG 規則以限制網路存取。 請參閱 Azure 入口網站Azure PowershellAzure CLI

資源: NSG 相關資訊管理網路安全性群組 (NSG)

檢查向網際網路開放的 UDP 連接埠

使用者應檢閱其 NSG 規則,確認將服務設定為不允許 UDP 輸入連線,請依照可在如何管理 NSG 中找到的指引進行。 使用者也能執行外部 Nmap 掃描,以確認已正確地關閉 UDP 連接埠。

完成 Nmap 掃描的步驟

重要

使用者應該只掃描自己的 IP 位址範圍內,確保其他使用者並未受到影響,請依照滲透測試運作規則進行,並另請確認掃描遵守 Microsoft 線上服務條款。

  1. 安裝 Nmap

  2. 檢查防火牆設定,確定您允許輸出 UDP 流量以執行掃描。

  3. 依照本節中如何執行掃描的 Nmap 指示進行。 使用者也可以使用 Zenmap GUI (安裝 Windows Nmap  時,一併安裝在桌面上的圖示)。

    1. 建立含有 IP 位址清單的 .csv 檔案,以掃描特定連接埠 (例如,連接埠 69)。

    2. 執行 Nmap 命令。 您可以納入這些選項: -sUV (UDP 連接埠) -T4 -p {要掃描的連接埠} -Pn {將主機全都視為線上主機} -iL {輸入清單} -oL {輸出清單} & (要在背景中執行的選擇性旗標):

      nmap -sUV -T4 -Pn -p 69 -iL filename.csv -oX filename.xml &

    3. 檢查反射攻擊中最常使用的連接埠:

      nmap -sUV -T4 -Pn -p17,19,53,69,111,123,137,161,389,1900,5353,11211 -iL filename.csv -oX filename.xml &

    4. 檢閱結果以識別任何開放連接埠。

  1. 透過套件管理員或從 https://nmap.org/download.html 來安裝 Nmap。

Ubuntu / Debian:

sudo apt-get update
sudo apt-get install nmap

Redhat / CentOS:

yum update
yum install nmap [Redhat/ Centos]

  1. 使用下列 Nmap 命令以驗證已知 UDP 連接埠:

    1. 建立含有 IP 位址清單的 .csv 檔案,以掃描特定連接埠 (例如,連接埠 69)。

    2. 使用 pscp 命令,將 .csv 檔案上傳至 Linux VM:

      pscp filename.csv admin@remotehost:filename.csv

    3. 執行納入選項的 sudo nmap 命令,包括:-sUV (UDP 連接埠) -T4 -p {要掃描的連接埠} -Pn {將主機全都視為線上主機} -iL {輸入清單} -oL {輸出清單} & (要在背景中執行的選擇性旗標):

      sudo nmap -sUV -T4 -Pn -p 69 -iL filename.csv -oX filename.xml &

    4. 檢查反射攻擊中最常使用的連接埠:

      sudo nmap -sUV -T4 -Pn -p17,19,53,69,111,123,137,161,389,1900,5353,11211 -iL filename.csv -oX filename.xml &

    5. 完成程序時,請使用 pscp 命令來下載檔案。

    6. 檢閱結果以識別任何開放連接埠。

Nmap 掃描範例

注意

如果您打算使用這些範例中的命令,將掃描程序自動化,請注意 UDP 掃描會花費很長的時間執行,原因是掃描程式有時必須等待,以偵測流量是否傳回 (這點無法保證)。 為能獲得最佳效能,請針對每個連接埠建立各自的掃描。

將所有連接埠關閉,從命令行執行 Windows 掃描。

注意: 由於這是 Nmap UDP 掃描,所以可將 "open|filtered" 解譯為「已關閉」。

下列命令會執行 Windows 掃描:

C:\Users\user\DeskTop>nmap -sUV -T4 -Pn -p17,19,53,69,111,123,137,161,389,1900,5353,11211 23.36.53.224

Windows nmap scan

將 DNS 開啟,針對 1.1.1.1 執行 Linux 掃描。 請注意,DNS 連接埠 53 並未顯示指出連接埠處於關閉的 "open|filtered"。 不過,其他連接埠均顯示為 "open|filtered"。 這表示其均已關閉。

下列命令會執行 Linux 掃描:

testuser@testUbuntu:~$ sudo nmap -sUV -T4 -Pn -p17,19,53,69,111,123,137,161,389,1900,5353,11211 1.1.1.1

Linux nmap scan

此外,請執行下列指令碼檢查連接埠 53、123 及 389 上的服務是否設定有誤。

對於 Linux 使用者,務必透過 sudo 執行每個命令。

若要掃描開放 DNS 遞迴解析程式:

nmap -sUV -Pn -T4 -p 53 --script=dns-recursion -iL <input_file> -oX <output_file>

對於單一 IP 位址:

nmap –sU –p53 –script=dns-recursion <Public IP address>

比 4.2.8  版舊的 NTPD 套件容易受到透過 monlist 命令進行的反射攻擊。 如果已設定 “restrict noquery”,monlist 反射攻擊就無法得逞。

可識別弱點的 Nmap 指令碼:

nmap -sUV -Pn -T4 -p 123 --script= ntp-monlist -iL <input_file> -oX <output_file>

對於單一 IP 位址:

nmap -sU -pU:123 -Pn -n --script=ntp-monlist <Public IP address>

nmap -sU -p389 -v -n -Pn <Public IP address>

顯示公開的 LDAP 資訊:

nmap -p 389 --script ldap-rootdse <Public IP address>

常見問題集

這不是建議使用的設定。 不過,如果使用者有相依服務,則應根據下列指引使用簽署功能,增加額外的安全性:

使用者應使用下列文件,以了解如何為 Azure VM 設定時間同步。 如果使用者所用的 Linux 或 Windows NTPD 套件易受攻擊,則應該更新至最新版本。

使用 Azure 網路監看員,了解如何進行疑難排解: https://docs.microsoft.com/zh-tw/azure/network-watcher/network-watcher-connectivity-overview

否。這些都是 UDP 服務的標準連接埠。 不過,在另一個連接埠號碼上能接聽任一服務,否則伺服器可能存在連接埠從另一個來源連接埠轉送的負載平衡器後方。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×