monlist
概要

NTPクライアントからNTPサーバへmonlistコマンドを発行すると、サーバは直前に通信していた相手の情報を最大600件まで遡ってリスト化し、返信する。サーバは内部に通信履歴を保持しており、その内容を参照して応答を生成する仕組みである。
返信される情報には、通信相手のIPアドレスやポート番号、受信パケット数、通信モード、NTPのバージョン、制限フラグ、平均問い合わせ間隔、最後に交信してからの経過時間などが含まれる。これらの情報は、サーバの利用状況の把握や、不正なアクセスの検知に役立てられてきた。
monlistコマンドは、利用者からの短い要求パケットに対し、サーバから数十倍に膨れ上がった大量の応答パケットを返すという性質を持つ。これが悪用され、DDoS攻撃の一種である増幅攻撃(NTPリフレクション攻撃)の手段として利用されるようになった。攻撃者は送信元IPアドレスを攻撃対象のものに偽装し、多数のNTPサーバへmonlist要求を送信する。すると各サーバは偽装された送信元、つまり攻撃対象に向けて大量の応答データを送りつけることになり、対象のネットワークやサーバに大きな負荷がかかる。
この問題は2013年頃から顕在化し、monlistコマンドを悪用した大規模な攻撃が複数確認され、多くの公開NTPサーバが攻撃の踏み台として利用された。これを受け、広く普及しているNTPサーバプログラムのntpdでは、バージョン4.2.7p26以降でmonlistコマンドが廃止され、アクセス制御や応答方法を見直した後継機能の「mrulist」に置き換えられた。
それ以前の古いバージョンを運用している場合は、設定ファイルに「noquery」などの制限を追記してmonlist機能を無効化するか、最新版へ更新することが対策として推奨されている。現在では、セキュリティ上のリスクを避けるため、インターネット上で稼働する多くの公開NTPサーバにおいて、monlist機能は初期設定の段階で無効化されているか、外部からの要求に応答しないよう制限が施されている。