2014/02/13

ntpdに気をつけれ、と さくらVPSからメールが来た の巻。

一応JPCERT/CCから1/15にメールが来てて個人的には対策済みなんですが、
念の為のチェック&啓蒙ということで。

■問題の概要

詳細は下記の情報を見ると良いですが、
ntpdの一部バージョンには状況確認用コマンド(monlist)が用意されていて、
これが外部から呼ばれると、かなりのトラフィックを発生させるので
DDoSに使われるよ、という話。

ふだん利用している さくらインターネット 様からも注意喚起メールが今日届きました。


■何が問題なのか

monlistの機能的には、対象ntpサーバが最近通信をした相手をリストアップする機能。

試しにmonlistを有効にした状態で以下のようなコマンドを叩いてみる。

# ntpdc -c monlist

remote address          port local address      count m ver rstr avgint  lstint
===============================================================================
ntp-b3.nict.go.jp        123 4x.xxx.xx.xx3          6 4 4    180      1       1
ntp-b2.nict.go.jp        123 4x.xxx.xx.xx3          6 4 4    180      2       2
ntp-a3.nict.go.jp        123 4x.xxx.xx.xx3          6 4 4    180      2       3
ntp-a2.nict.go.jp        123 4x.xxx.xx.xx3          6 4 4    180      2       4
うちのVPSではNICTのNTPサーバを見ているのでリストアップされます。
ntpdのrestrict設定(+Firewall)で他には通信しないようにしているので、
これ以外はリストされないようになってます。

ここで問題なのは、
  • 1コマンド&小さい通信量で簡単に取り出せる
  • 通信履歴がまるまる大公開
  • さらにリスト作成時にDNSで名前解決が走る(ntpdc -nなら抑制できるけど)
ということで、増幅率(きっかけコマンドに対して発生する無駄な通信量)が半端ねえ。

ぱないの!
…どころの話じゃないのです。忍ちゃんもびっくり。

■対策方法

ntpdのバージョンアップなんですが、影響を受けないバージョンは「4.2.7p26」。
しかし安定版は4.2.6であり、各distroでもまだ落ちてきてないバージョンかと。

そこで、monlist自体をストップしましょう。
ntpdの設定ファイルに「disable monitor」と1行追記。

※私の環境はDebian Wheezyです。

# vi /etc/ntp.conf
disable monitor    ←ファイル末尾にでも追記する

# /etc/init.d/ntp restart
 これで再度monlistを叩いてみると…
# ntpdc -c monlist
***Server reports data not found
問い合わせを無視するようになりました。これでOK。
外から確認したい場合は、 OpenNTPProject.org などを使用するといいかもです。


…というか、単発サーバで自前時刻合わせだったらntpd使わずntpdateを
slewモードを使ってcronで回すのも手です。


久々に奇声が漏れるレベルの増幅率ですので、早急に対処を。