Upgrade to Pro — share decks privately, control downloads, hide ads and more …

僕らの時間 NTPのいろいろ

Avatar for waki6ra waki6ra
December 16, 2017

 僕らの時間 NTPのいろいろ

九州インフラ交流勉強会(Kixs) Vol.006

Avatar for waki6ra

waki6ra

December 16, 2017
Tweet

Other Decks in Technology

Transcript

  1. Copyright 2017 QTnet All rights reserved. Network Time Protocolとは n

    NTP n コンピュータの時刻を同期する仕組み n おそらくここにいる皆さんが使っているまさに“インフラ“ ! -2- UDP:123 UDP:123 ・・・ UDP:123 Stratum1 Stratum2 Stratum3 UDP:123 UDP:123 ・・・ UDP:123 原⼦時計直結 GPS, TEL-JJY ・・・etc NTP
  2. Copyright 2017 QTnet All rights reserved. draft-ietf-ntp-bcp-05 を読んでみました n Network

    Time Protocol Best Current Practices n https://tools.ietf.org/html/draft-ietf-ntp-bcp-05 -3- n NTPの設定 n 時刻ソースの数と多様性 n Mode6とMode7 n 監視 n pool.ntp.org n うるう秒対応 n NTPのセキュリティ n 事前共通鍵と自動鍵、NTS n 公開情報を最小限にすること n Daemon Restart Attacks対策 n 攻撃検知 n 死の接吻 n ブロードキャストモード n 組み込み機器のNTP n 機器を更新する責任 n NTPサーバの準備 n vendor-subdomain.pool.ntp.org n エニーキャストNTP
  3. Copyright 2017 QTnet All rights reserved. 時刻ソースの数と多様性 by bcp-05 -4-

    n ベスト カレント プラクティス n 時刻ソースは十分な数(精度、冗長性を求めるなら4つ以上) n 異なるベンダ、Stratum0で多様性を高める n (けっこう難しい・・・) 上位NTPサーバ (時刻ソース) NTPクライアント Stratum0
  4. Copyright 2017 QTnet All rights reserved. ちなみに n DNSの仕組みで冗⻑性を⾼められるか (1つのFQDNに複数のIPアドレスを持たせる)

    n 少なくともntpdではあまり有効ではなさそう n FQDNでサーバ指定しても、名前解決は起動時だけ n 利⽤中のNTPサーバが停⽌しても、再度名前解決したり、DNSラウンドロビンで⽰さ れた他IPアドレスに接続を試みたりしない(60分様⼦⾒した結果) n ntpdateならDNSラウンドロビンの恩恵を受けられそうだが、公式サイトでもntpdate はメンテナンスされておらずバグを修正するつもりもない…となっていてオススメで きない -5- 検証 CentOS 6.7 ntpd 4.2.6p5 DNSサーバ NTPクライアント (DNSクライアント) ntp.example.jp のIPアドレスは? 192.0.2.1 192.0.2.2 192.0.2.3
  5. Copyright 2017 QTnet All rights reserved. draft-ietf-ntp-bcp-05 を読んでみました n Network

    Time Protocol Best Current Practices n https://tools.ietf.org/html/draft-ietf-ntp-bcp-05 -6- n NTPの設定 n 時刻ソースの数と多様性 n Mode6とMode7 n 監視 n pool.ntp.org n うるう秒対応 n NTPのセキュリティ n 事前共通鍵と自動鍵、NTS n 公開情報を最小限にすること n Daemon Restart Attacks対策 n 攻撃検知 n 死の接吻 n ブロードキャストモード n 組み込み機器のNTP n 機器を更新する責任 n NTPサーバの準備 n vendor-subdomain.pool.ntp.org n エニーキャストNTP
  6. Copyright 2017 QTnet All rights reserved. Mode6 Mode7 が危ない例 -7-

    NTPサーバ ・・・ ・・・ NTPクライアント群 クライアントはたくさんいるし、 増減もするから 都度設定するのは⾯倒だ そうだ UDP:123は全部通そう UDP:123
  7. Copyright 2017 QTnet All rights reserved. Mode6 Mode7 が危ない例 -8-

    NTPサーバ ・・・ ・・・ NTPクライアント群 and more... クライアントはたくさんいるし、 増減もするから 都度設定するのは⾯倒だ そうだ UDP:123は全部通そう UDP:123 Mode6 Mode7の 制御パケットが通ってしまう
  8. Copyright 2017 QTnet All rights reserved. Mode6 Mode7 を使うときには by

    bcp-05 -9- NTPサーバ ・・・ ・・・ NTPクライアント群 and more... クライアントはたくさんいるし、 増減もするから 都度設定するのは⾯倒だ そうだ UDP:123は全部通そう UDP:123 その代り L7のアクセス制御をしておこう Mode6 Mode7 は受け付けない、認証させる 正しくアクセス制御すれば、 Mode6, Mode7のパケットで NTPの状態を監視可能
  9. Copyright 2017 QTnet All rights reserved. draft-ietf-ntp-bcp-05 を読んでみました n Network

    Time Protocol Best Current Practices n https://tools.ietf.org/html/draft-ietf-ntp-bcp-05 -10- n NTPの設定 n 時刻ソースの数と多様性 n Mode6とMode7 n 監視 n pool.ntp.org n うるう秒対応 n NTPのセキュリティ n 事前共通鍵と自動鍵、NTS n 公開情報を最小限にすること n Daemon Restart Attacks対策 n 攻撃検知 n 死の接吻 n ブロードキャストモード n 組み込み機器のNTP n 機器を更新する責任 n NTPサーバの準備 n vendor-subdomain.pool.ntp.org n エニーキャストNTP
  10. Copyright 2017 QTnet All rights reserved. pool.ntp.orgとは by bcp-05 n

    NTP pool projectが提供する無償の公開NTPサーバ群 n 有志のNTPサーバ管理者がプロジェクトに参加し、時刻を提供する n ほとんどの場合良い時刻が得られるが、その保証はない n 20〜30分に1回監視システムから時刻のチェックが⾏われている n 監視システムと100ms以上のずれがあるとスコアが下がり最終的にプールから外される n [0-3].amazon.pool.ntp.orgのような利⽤ベンダごとのプールや n [0-3].jp.pool.ntp.orgのような地域ごとのプールもある n [0-3].jp.pool.ntp.orgの登録数が2016年末あたりに急増していて不思議 n ただし名前がちがっても、提供される機能、品質に差はない (近いサーバは選ばれるかもしれない GMO様のVPSから試すとGMO様のIPアドレスが多く⾒えた) n 固定IPアドレスとサーバを持っている⼈は参加をご検討ください! -11- うるう秒? JPプールの登録数 http://www.pool.ntp.org/zone/jp より
  11. Copyright 2017 QTnet All rights reserved. draft-ietf-ntp-bcp-05 を読んでみました n Network

    Time Protocol Best Current Practices n https://tools.ietf.org/html/draft-ietf-ntp-bcp-05 -12- n NTPの設定 n 時刻ソースの数と多様性 n Mode6とMode7 n 監視 n pool.ntp.org n うるう秒対応 n NTPのセキュリティ n 事前共通鍵と自動鍵、NTS n 公開情報を最小限にすること n Daemon Restart Attacks対策 n 攻撃検知 n 死の接吻 n ブロードキャストモード n 組み込み機器のNTP n 機器を更新する責任 n NTPサーバの準備 n vendor-subdomain.pool.ntp.org n エニーキャストNTP
  12. Copyright 2017 QTnet All rights reserved. うるう秒とは n 世界時(地球の⾃転に基づく時刻系)とUTC 協定世界時のずれを調整するた

    めに追加(または削除)する1秒 n NTP運⽤者を悩ませる1秒 n うるう秒追加される場合のイメージ(JST) n 不定期に実施される n 最近は2年〜3年毎であることが多いが、この頻度は⾼まっていく可能性が⼤きいらしい n 不定期ではあるが基本的には1⽉1⽇か、7⽉1⽇となる(JSTの場合) n ⽇本を含めうるう秒廃⽌派もいて、2023年までに検討が⾏われる模様 n NTPではLeap Indicatorというフラグをセットすることでこの実施情報が伝え られる n うるう秒無し(00)、追加のうるう秒(01)、削除のうるう秒(10)、状態不明(11) n うるう秒でなくても、例えば同期先を全て失ってしまったNTPサーバはフラグをセットする -13- 普段の始業時間 うるう秒のある始業時間 08:59:59 08:59:59 09:00:00 08:59:60 09:00:01 09:00:00 09:00:02 09:00:01
  13. Copyright 2017 QTnet All rights reserved. なぜうるう秒が怖い? n CPU⾼負荷、カーネルハング、再起動・・・etc n

    不具合を踏んでしまうと⼀⻫にシステムが停⽌する恐れがある n 実施直前に致命的な問題が発表される(ことが多い気がする) n 新しいシステムも安全ではない n 2012年 n うるう秒実施10⽇前、Linux kernel,ntpdの不具合情報が出て焦る n うるう秒実施時、更に想定外の不具合が発⽣しうるう秒が広く知れ渡る n 2017年 n うるう秒実施4⽇前、うるう秒を迎えると再起動するネットワーク機器の不具 合情報 -14- 冗⻑構成! うるう秒!? ムリ!
  14. Copyright 2017 QTnet All rights reserved. QTnetのうるう秒対応 n Leap Indicatorは流さない

    n うるう秒があることを機器に認識させない n Stratum1にSEIKO TimeServer (NTPアプライアンス)を採⽤し、その機能を活⽤ n Gradually adjustモード n いわゆるLeap Smearing n うるう秒(1秒)を分割し、少しずつ配信する n 同サーバの配信する”1秒”は世の中の”1秒より⻑くなる” -15- うるう秒 ・・・ ・・・ う る う 秒 ・・・ ・・・ 普通のうるう秒のイメージ Gradually adjustモードでのうるう秒のイメージ AWSもGoogleもこれ
  15. Copyright 2017 QTnet All rights reserved. うるう秒に関するベストプラクティス by bcp-05 n

    ntpd(4.2.6以上)のうるう秒に関する機能 n うるう秒リストファイル n webから取得可能なリストファイルでうるう秒を認識する機能 n ファイルに設定された有効期限を満了するまでは、 上位NTPサーバから受信したLeap Indicatorは無視 n 絶対にLeap Indicatorを受信したくないなら、 これを使ってクライアント側で対策が可能・・・? n 有効期限を⻑く偽ったファイルを置ければ・・・? n 単純に有効期限だけ改ざんするとファイルハッシュがおかしくなってエラーになりそう n Leap Indicator受けなければ良いというわけでもないけど・・・ n 過半数の同期可能サーバから Leap Indicatorを受け取って、 はじめてうるう秒を受け⼊れる n 予期せぬLeap Indicator(誤配信等)に 対策するためにも時刻ソースは多めが良さそう -16- LI LI
  16. Copyright 2017 QTnet All rights reserved. Leap Smearingに関するベストプラクティス by bcp-05

    n Leap Smearingする際のベストプラクティス n Smearingは2〜24時間かけて実施すると上⼿くいく n 実際の時間(UTC)とは異なる嘘の時間を使⽤することになるので、 法的、コンプライアンス的に問題がないか注意が必要 n Leap Smearingは公開NTPサーバで実施してはならない (MUST NOT)とされているにも関わらず、無視する輩がいる n ただ、どこにMUST NOTと定義されているかは私は確認できませんでした n スレッドを⾒ると、pool.ntp.orgの管理者も NTPサーバ登録者が勝⼿にSmearingすることに困っている模様 (プール内にSmearingと⾮Smearingが混在して時刻精度が落ちてしまう) n Leap Smearingを実施するNTPサーバと、 通常のNTPサーバを同時に参照してはならない n Leap Smearingを実施するサーバを参照するなら、 同じ動きをするサーバだけを参照しなければならない n Leap Smearingにもいろいろある n 上位NTPサーバがどのようにうるう秒を処理するか把握しておきましょう -17- QTnetは 2012年にこれにハマりました
  17. Copyright 2017 QTnet All rights reserved. ちなみに n ⻑い同期間隔の問題 n

    Leap Smearingしても同期間隔が⻑いとそこそこ⼤きなずれ になる n Leap Smearing期間=2時間(7200秒) n 1秒に追加される秒数(分割されたうるう秒) n 1 / 7200 = 0.138888889ミリ秒 n 1024秒間隔(ntpdデフォルト)で参照すると 本来の時間より142ミリ秒ずれることになる n jitter(ゆらぎ)が多くなって同期不可となったり、 stepモードによる強制的な時刻同期が発⽣したりする -18- QTnetは 2012年、2015年 これにハマりました
  18. Copyright 2017 QTnet All rights reserved. draft-ietf-ntp-bcp-05 を読んでみました n Network

    Time Protocol Best Current Practices n https://tools.ietf.org/html/draft-ietf-ntp-bcp-05 -19- n NTPの設定 n 時刻ソースの数と多様性 n Mode6とMode7 n 監視 n pool.ntp.org n うるう秒対応 n NTPのセキュリティ n 事前共通鍵と自動鍵、NTS n 公開情報を最小限にすること n Daemon Restart Attacks対策 n 攻撃検知 n 死の接吻 n ブロードキャストモード n 組み込み機器のNTP n 機器を更新する責任 n NTPサーバの準備 n vendor-subdomain.pool.ntp.org n エニーキャストNTP
  19. Copyright 2017 QTnet All rights reserved. draft-ietf-ntp-bcp-05 を読んでみました n Network

    Time Protocol Best Current Practices n https://tools.ietf.org/html/draft-ietf-ntp-bcp-05 -20- n NTPの設定 n 時刻ソースの数と多様性 n Mode6とMode7 n 監視 n pool.ntp.org n うるう秒対応 n NTPのセキュリティ n 事前共通鍵と自動鍵、NTS n 公開情報を最小限にすること n Daemon Restart Attacks対策 n 攻撃検知 n 死の接吻 n ブロードキャストモード n 組み込み機器のNTP n 機器を更新する責任 n NTPサーバの準備 n vendor-subdomain.pool.ntp.org n エニーキャストNTP
  20. Copyright 2017 QTnet All rights reserved. 今後 n 2018年 n

    新構成でのうるう秒対応の確認、ブラッシュアップ n Stratum1、Stratum2の機種、台数がリプレイスで変化 n ⼀部は2017年も新構成であったが、次回うるう秒では完全に移⾏が終わって いるはず n 2台構成のStratumがでてきたので、動作の確認、勉強が必要 n ベストプラクティスでは2台はよくないとなっているが、 具体的にどんな状況で正しい時刻を選べなくなるのか、 Red Hatも案内している妥協策のtrueオプションはどんな動きになるか -21- Stratum1 NTPアプライアンス Stratum2 汎⽤サーバ Stratum1 NTPアプライアンス Stratum2 汎⽤サーバ Leap Smearing Leap Smearing ・・・ ・・・
  21. Copyright 2017 QTnet All rights reserved. 今後 n 2018年 n

    本当に何もせずにうるう秒を迎えられるようにしたい n 現状の課題 n 2017年の対応⽅法ではSmearing期間中、利⽤できるStratum1が1台だけ n 多様性、冗⻑性の確保のため常時Smearing構成にしておくのは難しく、うるう秒にあ わせて構成変更をしている n Smearing実施箇所をStratum1からStratum2に下ろしたらどうだろう n Smearing機能にしばられずStratum1機器を選定可能 n 公開NTPサービスも参照可能(参照するかどうかはまた別の話) n 汎⽤サーバ(でchronyかntpd)ならStratum1機器より増設も容易 -22- Stratum1 NTPアプライアンス Stratum2 汎⽤サーバ Leap Smearing Stratum1 NTPアプライアンス and Public NTP Stratum2 汎⽤サーバ Leap Smearing ・・・ ・・・ ・・・
  22. Copyright 2017 QTnet All rights reserved. draft-ietf-ntp-bcp-05 を読んでみました n Network

    Time Protocol Best Current Practices n https://tools.ietf.org/html/draft-ietf-ntp-bcp-05 -23- n NTPの設定 n 時刻ソースの数と多様性 n Mode6とMode7 n 監視 n pool.ntp.org n うるう秒対応 n NTPのセキュリティ n 事前共通鍵と自動鍵、NTS n 公開情報を最小限にすること n Daemon Restart Attacks対策 n 攻撃検知 n 死の接吻 n ブロードキャストモード n 組み込み機器のNTP n 機器を更新する責任 n NTPサーバの準備 n vendor-subdomain.pool.ntp.org n エニーキャストNTP
  23. Copyright 2017 QTnet All rights reserved. draft-ietf-ntp-bcp-05 が失効しました n Network

    Time Protocol Best Current Practices n https://tools.ietf.org/html/draft-ietf-ntp-bcp-05 n Expires: December 15, 2017 -24- n ベストカレントプラクティスは参考になります。 加えて⾃分で検証して、新しい情報にアンテナはって、 より良いもの、⾃分の環境でベストなものを 考えていかねば。 n ちなみにbcp-06ではセキュリティ機構として NTSの整備が進んでいることが更新されていました n あと⼀部の読みづらかった英語表現が改善されてました