メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

この資料は、テクニカル サポート エージェントと IT プロフェッショナルを対象としています。 問題のヘルプが必要な場合は、Microsoft コミュニティに質問してください

はじめに

このヘルプ資料の目的は、ユーザー データグラム プロトコル (UDP) の増幅攻撃面を減らす方法に関するガイダンスを提供することです。 この資料の内容は次のとおりです。 

  • UDP と UDP 増幅攻撃の概要。

  • ポートとプロトコルの特権インターネット アクセスを最小限に抑えるように Azure Network Security Group (NSG) を構成する方法。

  • 再帰的ドメイン ネーム サービス (DNS) サーバーまたはネットワーク タイム プロトコル (NTP) サーバー用のポートが必要な場合に、UDP 増幅攻撃面を減らすようにサービスを構成する方法。

  • ネットワーク セキュリティ グループ構成の検証のために Nmap スキャンを実行する方法。

攻撃面を減らすには、この記事のガイダンスに従って受信 UDP 接続を閉じることをお勧めします。

概要

ユーザー データグラム プロトコル (UDP) は、接続のないプロトコルです。 Azure クラウド サービスに対する受信アクセスが UDP に許可されると、仮想マシン (VM) に対する分散型リフレクション サービス拒否 (DRDoS) に使用される可能性のある攻撃面が生じます。 UDP ベースの増幅攻撃は、分散型サービス拒否 (DDoS) 攻撃の一種です。この攻撃により、パブリックにアクセス可能な UDP サービスと帯域幅増幅係数 (BAF) が利用され、標的のシステムが UDP トラフィックで過負荷になる可能性があります。

注: 既定では、NSG を作成した場合、構成によって UDP を含むすべてのポートが閉じられます。さらに、Azure はプラットフォーム レベルの DDOS 保護機能を備えています。   そのため、サービス層に DDOS を追加することもできます。

この種類の攻撃の詳細については、https://www.us-cert.gov/ncas/alerts/TA14-017A (英語情報) を参照してください。 

UDP ベースの増幅攻撃は、分散型サービス (DDoS) 攻撃の形式です。

このような 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 を使用する必要があるユーザーは、(この資料に記載されている) 脆弱な構成を削除することをお勧めします。  これは、これらの 2 つのポートがこの種類の攻撃に広く使用されているためです。

プロトコル

UDP ポート

脆弱な構成

DNS

53

パブリック インターネットに開かれた再帰 DNS

NTP

123

クエリを開くコマンドと monlist コマンドの有効化

推奨される操作

次の手順を実行すると、UDP に対する攻撃の影響を緩和するために役立ちます。

  1. インターネットに公開する必要があるサービスの必要性を評価し、正しいサービス操作に絶対に必要な受信 UDP ポートを決定し、重要でないすべての UDP ポートを閉じます。

  2. UDP ポートを開く必要がある場合は、この資料の該当するセクションを参照し、UDP ポートでリッスンする NTP および DNS に関する推奨事項を確認してください。 その他のすべてのポートについては、「UDP ポートを閉じる」セクションに従ってください。 

NTP の monlist サービスにはデバッグ情報のクエリを実行する機能がありますが、サービスの問題をデバッグする場合に、一時的にのみ有効にすることをお勧めします。 また、UDP リフレクション攻撃を仕掛けるために使用される可能性があります。 4.2.8 より前の NTP デーモン (NTPD) パッケージでは、このサービスは既定で有効です。  次のガイダンスに従うことをお勧めします。 

  • monlist が必要なユーザーは、必要な IP アドレスのみへのアクセスを許可するように NSG を構成することをお勧めします。

  • 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: NTPD パッケージを Windows にインストールし、ポートを開いている場合は、修復アクションの手順に従う必要があります。

注 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. DNS マネージャーを開きます ([スタート] を選択し、[管理ツール] をポイントして [DNS] を選択します)。

  2. コンソール ツリーで目的の DNS サーバーを右クリックし、[プロパティ] をクリックします。

  3. [詳細設定] タブを選択します。

  4. [サーバー オプション] で、[再帰を無効にする] チェック ボックスがオンであることを確認します。

  5. ([サービス] コントロール パネルから) DNS サービスを再起動します。

Linux: バインド サーバーで DNS 再帰を無効にする

  1. ルート資格情報を使用して、SSH (Secure Shell) 経由でサーバーに接続します。

  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;

    既に外部セクションがある場合は、必要に応じて recursion 値を yes または no に変更することで設定を変更できます。  

  5. 変更を構成したら、ファイルを保存します。

  6. DNS サーバーを再起動して変更を有効にします。 次のコマンドを実行して、DNS サービスを再起動します。

    service named restart

    注: 他の独自の DNS サーバーを使用している場合は、各製品のドキュメントを参照して、DNS 再帰設定を無効にしてください。

このセクションのガイダンスに従って、危険性の高い受信 UDP ポートを閉じることをお勧めします。  すべての UDP ポートでインターネットからの受信接続を閉じることをお勧めします。

インターネットへの特定の UDP ポートを開く必要がある場合は、そのポートのみを開き、受信アクセスを厳密に必要な IP 範囲のみに制限するようにします (つまり、インターネット全体に UDP ポートを公開しないでください)。 

UDP ポートを閉じるには、次のいずれかまたは両方のアクションを実行します。

  • ARM テンプレートを更新して、受信 UDP を無効にします。 これには、NSG テンプレートの再デプロイが必要です。  ただし、このテンプレートを使用する今後のデプロイでは、正しいセキュリティ設定が確実に行われるようになります。

  • ネットワーク アクセスを制限するように NSG 規則を更新します。 Azure portalAzure PowershellAzure CLI の資料を参照してください。

リソース: NSG に関する情報ネットワーク セキュリティ グループ (NSG) の管理

インターネットに対して開いている UDP ポートを確認する

NSG の管理方法に関する資料のガイダンスに従って、NSG 規則を見直して、サービスが UDP 受信接続を許可しないように構成されていることを確認することをお勧めします。 また、外部 Nmap スキャンを実行して、UDP ポートが正しく閉じられていることを確認することもできます。 

Nmap スキャンを完了する手順

重要

侵入テストの実施ルール」に従い、他のユーザーが影響を受けないように、また、スキャンが Microsoft Online Service の規約に準拠するように、ご自分の IP アドレス範囲内のみをスキャンしてください。

  1. Nmap をインストールします

  2. 送信 UDP トラフィックによるスキャンの実行がファイアウォール設定で許可されていることを確認します。

  3. スキャンの実行方法については、このセクションの Nmap の手順に従ってください。  また、Zenmap GUI を使用することもできます (Windows Nmap のインストール時にアイコンがデスクトップにインストールされます)。

    1. 特定のポート (ポート 69 など) をスキャンする IP アドレス リストを含む .csv ファイルを作成します。

    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. 特定のポート (ポート 69 など) をスキャンする IP アドレス リストを含む .csv ファイルを作成します。

    2. pscp コマンドを使用して、.csv ファイルを Linux VM にアップロードします。

      pscp filename.csv admin@remotehost:filename.csv

    3. -sUV (UDP ポート) -T4 -p {スキャンするポート} -Pn {すべてのホストをオンラインとして扱う} -iL {入力リスト} -oL {出力リスト} および (バックグラウンドで実行する省略可能なフラグ) オプションを使用して sudo nmap コマンドを実行します。 

      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" は "closed" と解釈できます。 

次のコマンドを実行すると、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 スキャン

DNS を開いて、1.1.1.1 の Linux スキャンを実行します。 "open|filtered" はポートが閉じていることを示すため、DNS ポート 53 には表示されません。 ただし、他のポートには "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 スキャン

さらに、次のスクリプトを実行して、ポート 53、123、および 389 のサービスが正しく構成されているかどうかを確認します。

Linux ユーザーの場合は、sudo で各コマンドを処理する必要があります。

開いている DNS 再帰リゾルバーをスキャンするには:

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

1 つの IP アドレスの場合:

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

 4.2.8   より前の NTPD パッケージ バージョンは、monlist コマンドを介した UDP リフレクション攻撃に対して脆弱です。 “restrict noquery” が構成されている場合、monlist リフレクション攻撃は機能しません。

脆弱性を特定する Nmap スクリプト:

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

1 つの 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 Network Watcher を使用してトラブルシューティングする方法については、https://docs.microsoft.com/ja-jp/azure/network-watcher/network-watcher-connectivity-overview を参照してください。 

いいえ。これらは、UDP サービスの標準のポートです。 ただし、サービスが別のポート番号をリッスンしているか、別のソース ポートからポート転送するロード バランサーの背後にサーバーが存在している可能性があります。

UDP 増幅に関する資料 https://www.us-cert.gov/ncas/alerts/TA14-017A (英語情報) を参照してください。 

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×