NTP

読み:えぬてぃーぴー / 英語表記:Network Time Protocol

ネットワークにつながった機器の時刻を、正確な時刻のサーバに合わせる(同期する)ためのプロトコル。UDPの123番ポートを使う。

イマシルちゃんの解説

パソコンやサーバの時計は、放っておくと少しずつずれていくんだ。
時計がずれていると、ログの時刻がバラバラになって、トラブルの原因を追いかけられなくなっちゃう。

NTPは、正確な時計を持つサーバに「今、何時?」って聞いて、自分の時計を合わせる仕組みなんだ。
しかも、問い合わせにかかった時間まで計算に入れて、ぴったり合わせてくれるんだよ!

より深い解説

定義

NTP(Network Time Protocol)は、RFC 5905などで定められた、ネットワークを通じて機器の時刻を同期するためのプロトコルである。UDPのポート123番を使う。インターネット上でもミリ秒単位、LANではそれ以上の精度で時刻を合わせられる。

階層構造(ストラタム)

ストラタム内容
0原子時計やGPSなどの、正確な時刻の源(基準時計)
1ストラタム0に直接接続されたNTPサーバ
2ストラタム1から時刻を得るサーバ
…数字が大きいほど、基準時計から遠い(最大15)

上位のサーバに負荷が集中しないように、組織の中にNTPサーバを置き、組織の機器はそこから時刻を得るのが一般的である。

時刻の合わせ方

クライアントとサーバの間で、送信と受信の4つの時刻(T1~T4)を記録し、ネットワークの往復の遅延を差し引いて、時刻のずれを計算する。

往復の遅延 = (T4 − T1) − (T3 − T2)
時刻のずれ = ((T2 − T1) + (T3 − T4)) ÷ 2

T1:クライアントの送信時刻、T2:サーバの受信時刻、T3:サーバの送信時刻、T4:クライアントの受信時刻

NTPを使った増幅型のDDoS攻撃

NTPは、送信元を偽装しやすいUDPを使い、小さな要求に大きな応答を返す機能があったため、DRDoS(リフレクション)攻撃の踏み台に悪用された。

  1. 攻撃者は、送信元IPアドレスを攻撃対象に偽装して、多数のNTPサーバに要求を送る
  2. 悪用されたのは、管理用のmonlistコマンド(直近にアクセスしてきた最大600件のクライアントの一覧を返す機能)
  3. 小さな要求に対して、非常に大きな応答(数百倍)が、攻撃対象に送りつけられる

踏み台にされないための対策

対策内容
monlistを無効にするNTPサーバの設定を変更して、状態確認の機能(monlist)を使えなくする。ソフトウェアを更新する(新しい版では既定で無効)
アクセスの制限時刻の問い合わせに応答する相手を、自組織のネットワークに限定する
送信元の偽装を防ぐISPや組織の出口で、送信元IPアドレスが偽装されたパケットを遮断する(イングレスフィルタリング)

「自ネットワーク外のNTPサーバへの時刻の問い合わせを止める」ことは、自分の時刻同期を止めるだけで、踏み台にされることの防止にはならない。また、「外部からのUDPのアクセスをNTPだけ許可する」設定は、むしろNTPへの要求を受け入れることになる。

SNTP

SNTP(Simple NTP)は、NTPの機能を簡略化したもので、高い精度を必要としないクライアントや組込み機器で使われる。NTPと同じパケットの形式とポート番号を使う。

実際の試験ではここに出る!

この用語が出てくる記事

↑