念の為のチェック&啓蒙ということで。
■問題の概要
詳細は下記の情報を見ると良いですが、ntpdの一部バージョンには状況確認用コマンド(monlist)が用意されていて、
これが外部から呼ばれると、かなりのトラフィックを発生させるので
DDoSに使われるよ、という話。
ふだん利用している さくらインターネット 様からも注意喚起メールが今日届きました。
■何が問題なのか
monlistの機能的には、対象ntpサーバが最近通信をした相手をリストアップする機能。試しにmonlistを有効にした状態で以下のようなコマンドを叩いてみる。
# ntpdc -c monlistうちのVPSではNICTのNTPサーバを見ているのでリストアップされます。
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
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これで再度monlistを叩いてみると…
disable monitor ←ファイル末尾にでも追記する
# /etc/init.d/ntp restart
# ntpdc -c monlist問い合わせを無視するようになりました。これでOK。
***Server reports data not found
外から確認したい場合は、 OpenNTPProject.org などを使用するといいかもです。
…というか、単発サーバで自前時刻合わせだったらntpd使わずntpdateを
slewモードを使ってcronで回すのも手です。
久々に奇声が漏れるレベルの増幅率ですので、早急に対処を。