NTPを利用したNTPリフレクション攻撃の概略と対策


投稿日:2014年9月12日
  • 6
  • 6



2014年初頭に欧州で400GBpsという史上最大規模のDDoS攻撃を観測

ntp

攻撃手法はntpdのmonlistという機能を利用したDDoS攻撃でした。

わりと最近のことなのでご覧になった方もいると思いますが、JPCERTより「ntpd の monlist 機能を使った DDoS 攻撃に関する注意喚起」という発表がされています。

対岸の火事ではなく、日本でも実際にSmp攻撃の踏み台に利用されたという声も聞くようになりました。設定ファイルに1行追加するだけで対策できるので、ぜひ対策しましょう。


NTPリフレクション攻撃の概略と対策

攻撃者はntpdのmonlistという機能を悪用してDDoS攻撃を行います。monlistとはntpdの状態をリモートで管理するための機能です。

以下のイラストにあるように、問い合わせに対して応答が多いのが特徴です。

illustration-amplification-attack-ph3

cloudflare.comより

実際に問い合わせと応答を実験した方の情報

192byteに対して17160byteの応答をしたそうです。つまり約90倍に増幅されたことになります。理論的には200倍にまで増幅されることがあるため、増幅幅が40倍程度のDNS Amp攻撃よりも高効率です。

NTPリフレクション攻撃対策

試しに以下のコマンドで確かめてみてください。

# ntpdc -c monlist

以下の様な表示なら問い合わせに応答しています。

remote address          port local address      count m ver rstr avgint  lstint
===============================================================================
ntp-b3.nict.go.jp        123 153.122.40.105         1 4 4    1d0      0       0
ntp-a3.nict.go.jp        123 153.122.40.105         2 4 4    1d0      1       0
ntp-a2.nict.go.jp        123 153.122.40.105         1 4 4    1d0      1       1

応答していない場合は以下の様な表示になります。

***Server reports data not found

NTPの設定ファイルを編集します

# vi /etc/ntp.conf

以下の設定がコメントアウトされていないか確認する

実はRHLEやCentOSの場合はデフォルトで以下設定になっています。これはipv4、ipv6共に全てのアクセスを拒否しています。
この後に続いて許可したホストに対して特定の機能を許可するという流れになります。

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

NICT公開NTPサービスを利用する

以下のようにcentosのデフォルトの設定の場合はntp.nict.jpのものを利用させていただきましょう。ISPで別途NTPサーバを提供している場合はそちらを利用しましょう。

server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
↓
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst

最終行に追加

# NTP Dos攻撃対策
disable monitor

NTPの再起動

# /etc/init.d/ntpd restart

NTPが正しく設定できたか確認

# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp-b2.nict.go. .NICT.           1 u   49   64    1   11.338   -5.813   0.192
*ntp-a3.nict.go. .NICT.           1 u   58   64    3    2.674   -2.028   0.174
 ntp-a2.nict.go. .NICT.           1 u   58   64    3   10.498   -6.386   0.218

続いて問い合わせに対して応答しないか確認

# ntpdc -c monlist
***Server reports data not found

これでNTPリフレクション攻撃に対する対策ができました。
しかしよく次から次に新しい攻撃を思いつくなと、逆に関心しますね。



現在のページを共有する



現在のページに関連する記事

NTPを利用したNTPリフレクション攻撃の概略と対策 BIND DNSで行う名前解決と、各種ネットワークの設定
NTPを利用したNTPリフレクション攻撃の概略と対策 OpenSSLとプライベートCAでメールサーバ用の秘密鍵と公開鍵証明書を作成
NTPを利用したNTPリフレクション攻撃の概略と対策 Google Feed APIの代替手段としてjQueryだけでRSSを表示する方法
NTPを利用したNTPリフレクション攻撃の概略と対策 OpenSSLでプライベートCAを構築して、クライアント用ルート証明書を作成
NTPを利用したNTPリフレクション攻撃の概略と対策 Windows 10でネットワークが不安定になった際の対策まとめ
NTPを利用したNTPリフレクション攻撃の概略と対策 誤って削除したGoogle Chromeのブックマークを復元する方法
NTPを利用したNTPリフレクション攻撃の概略と対策 fluentdと連動して集計処理を行うNorikraの導入方法

おすすめの記事

エンティティとデコード用プラグイン「Entity Decode Button」を作成しました

エンティティとデコード用プラグイン「Entity Decode Button」…

SNSのカウントをキャッシュするWordPressのプラグインを作成しました

SNSのカウントをキャッシュするWordPressのプラグインを作成し…

ImageMagickをWindowsのXAMPPに導入する方法

ImageMagickをWindowsのXAMPPに導入する方法

W3 Total Cacheの設定を通して学ぶ、WordPressを高速化するキャッシュの仕組み

W3 Total Cacheの設定を通して学ぶ、WordPressを高速化するキャ…

WordPressに「トップへ戻る」ボタンを設置して、フックの仕組みについて学ぼう

WordPressに「トップへ戻る」ボタンを設置して、フックの仕組み…

Norikraの使い方をサンプルのクエリとイベントを交えて解説

Norikraの使い方をサンプルのクエリとイベントを交えて解説

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデザインに変更

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデ…

シンプルなスパムコメント対策プラグイン「Simple AntiSpam」を作成しました

シンプルなスパムコメント対策プラグイン「Simple AntiSpam」を…


コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。