NTP (1)
NTPサーバおよびクライアントに関するスレ
リンクなどは>>2以降で >>458-459
500ppm = 0.05% だから無理だろうね そういやJJYで合わせてる時計に異常が出てるという話があるけど
影響出てる人いる? 何故かmfeedのIPv4とIPv6で時間がズレてるw NTP って UDP だけど、ソースアドレスを詐称されたパケットが(偽)サーバから
やってきたらデタラメな時刻に変更されちゃうの?
いちおう公開鍵認証のしくみもあるみたいだけど、mfeed とか nict とかでは
使えないから意味ないよね? 認証なしでもある程度は防げたりとかしないの?
ソースアドレスを詐称されると完全に防ぐのは無理だろうな。
試しにNICTと同期した時のパケットをキャプチャしてみたけど、
一応NTPサーバの応答電文中に「Reference Clock ID」なる
フィールドがあって、このフィールドにASCII4文字でNICTと
書いてある。でもいくらでも詐称できそうだ。
不安ならntpdateを定周期で実行し、ntpdateの起動前後にUDP123
をブロックするiptablesルールを上げ下げするとか。これで攻撃が
成功するのはntpddateが実行されているごく短時間だけになる。
またはデータセンターとかで予算もあるならGPS衛星や電波時計を
タイムソースに使うNTP専用サーバーマシンもある。
GPSベースのNTPタイムソースはUSB接続のGPSアンテナとLinux
用ドライバのソースとC言語の知識があれば個人で作ることも不可能
ではない。「USB GPS」で検索するとデバイス自体は5000円位で手に
入るようだ。 ズレてる時計は嘘時計として撥ねる機能があるから、詐称されたパケットを飲まされたくなかったら
少なくとも2つか3つのサーバの時刻を参照していればいいんじゃないの? DNSでやってるみたいなsource port randomizationってNTPでも使えないかしら。
そうすれば、16bitの乱数を一致させなきゃ嘘時刻を注入できない。
問い合わせのソースポートが123じゃなきゃダメなんてルールはないよね?
ダメならNAPTの裏にいるホストからNTPが使えないし。
man ntp.confしてみたら、restrict ... ntpportと設定することで
123以外からのパケットを蹴れるんだな……。
port randomizationすると、サーバの設定によってはダメってことか。
一定以上ずれてたらずれ過ぎってことで修正されなくなるでしょ。 なるほど、ちょっとだけズレた時刻を何度も繰り返し注入しつづければいいんだ。
でも嘘時刻を流し込むことで「同期を外させる」攻撃はできるってことか ソースIPアドレスの詐称って簡単にできるモノなの? UDP なら簡単。
ただし、まともな ISP では詐称パケットがネットワークをまたいで
よそに出ていかないようなフィルタをかけてることが多い。
バレずにやるのは非常に難しいと思うけどね。
時刻を取得する相手をすべて把握してその相手へのリクエストが行われたあとに
その相手のレスポンスよりも先に嘘時刻を叩き込むということをすべての相手に対して行う。
しかもその嘘時刻は嘘時刻と認識されないギリギリのズレでなければならない。
とか。地味過ぎる。 仮に少しずつ時刻をずらす攻撃が成功したとして
攻撃側のメリットって何があるんだろう
時刻が飛ばないんだから、ログを誤魔化すには至らないよな
時間制限物を引き延ばすにしても誤差レベルでしかないし。 この前経路か何かの問題でmfeedのIPv6のサーバーのディレイが大きくなってて
そのサーバが100msくらいズレた時刻を返してるように見えてたけど、
そのレベルでもう嘘時計扱いになってたよ?
だから少なくともそれ以下にずれた嘘時刻を256秒とか512秒とか1024秒ごとに
ターゲットに喰わせないといけない。
ほんと手間の割に得られるものが少ないよね? しいて言えばKerberos5認証みたいに端末とサーバーの時刻が大きくずれると
認証できないメカニズムを破綻させることくらいだろうな。たしかKerberos5は15分
以上のずれがあると暗号がかみ合わずに認証失敗する仕様だったろ?
たとえばWindowsのActiveDirectory認証とかで認証サーバーにうその時刻を教え
込むと、あわよくばドメインの機能を停止させられるかもしれない。 時刻をずらすのを狙うよりも
ntpd自体の脆弱性を狙うほうが現実的だろうな ちょっと話はそれるのですが、nictが配信している時刻は日本標準時間。
その他サーバだと大抵は世界標準時。この2つの実質的な違いは、うるう
秒の丸めタイミングだけという理解で正しいですか? >>478
全部間違ってる。
NTPサーバはJSTでもUTCでもなくてNTP時間を配信している。
うるう秒は全世界同時に挿入/削除される。 NTP Timeはプロトコル上の時刻表現方法に過ぎなくて、実体はUTCそのものでしょ
NTP Timeという時刻系が運用されてるわけじゃない
ちなみにNICTのNTPサーバは JSTを生成する原子時計を時刻源と
しているから、JSTを配信していると言っても間違いではないと思う WindowsってUnix系のOSみたくミリ秒のオーダーって合わせてくれないの?
複数台のパソコンの時計のばらつきが N x 10ms になってるように見える
>>481
JST-0900の変則時刻を配信してるってこと?
JSTを配信してたら、他のタイムサーバと混ぜられないでしょ >>486
NTPの配信時刻にはタイムゾーンは無い。つまり世界協定時ベースの時刻なんだけど、
やっぱりうるう秒の丸めとかのように日本の暦としてあえて世界協定時を外している部分
の扱いが他のNTPサーバと違うんじゃないか? >>481,487
>JSTを生成する原子時計を時刻源
NICTの原子時計はUTCを作ってる
http://jjy.nict.go.jp/mission/page2.html
UTCがベースだからうるう秒の挿入タイミングが違うなんてこともない NICTが作ってるUTC/TAIと称するものは、あくまでもNICTが所有している
原子時計を計測して決めたUTC/TAIであって本当のUTC/TAIではない。本当の
UTC/TAIは、各国の機関が作ったTAIの加重平均から最終的に求められる。
一方、日本標準時というのは、UTC(本物)+9 ではなく、UTC(NICT)+9という
ことになっている。UTC(本物)とUTC(NICT)の差は 10ns未満になるように調整
されているとはいえ、誰が決定したかという観点では違う。
NICT NTPサーバは、UTC(NICT)を配信しているが、それを機械的に+9すれば
直ちに正確な日本標準時が得られるので(NTPによる誤差は除く)、JSTを配信
していると言っても過言ではないという理屈。実際NICT自身も日本標準時を
配信していると言ってる。
http://www2.nict.go.jp/w/w114/tsp/PubNtp/index.html >>490
ここまで厳密な話をすると、UTC(本物)もUTC(NICT)も(UTC(GPS)も)、
差は0ではないので、うるう秒の挿入タイミングも完全に同時ではない
ことになる。 定義はそうだけど、NTPのソースとして見る場合には
UTC(本物)=UTC(NICT)と考えて差支えないのでは。
ちなみにUTC(本物)ってNICTのような機関向け以外にも配信されてるの? 「UTC(本物)の配信」というのはありえなくて、UTC(各国機関)を一定期間毎に
集計して事後でUTC(本物)が決定されている
このへんにデータがある:http://www.bipm.org/jsp/en/TimeFtp.jsp >491
他の人も言っているけどもし 10ns レベルの話を気にしているのなら
NW経由ではなんの意味もない違いだし、それどころかPC内部でも
意味を持たないズレというか「観念上の違い」以外の何者でもないよね? >>495
観念上の違いというと具体的にそれらを決定しているNICTやBIPMの人に
さすがに失礼かもしれないが、NTPで使う限り問題となる違いはない
というのはその通り。
>>490は「NICTがNTPで配ってるのはJSTではない!」という的外れな
指摘に対してのコメントのつもり。時刻の決定方法や誤差を無視すれば、
UTCもJSTもUNIX TimeもNTP Timeも機械的に相互変換可能なのだから、
NTPがどれを配ってるなんて議論自体が無意味になってくる。 そういうことを気にするわりに時刻の修正は時間の連続性を失う方法を使ってるんだろ?
ntpdateとか桜時計(爆)とかw 普通のパソコンの時刻のズレは、まともなOSならば、
時刻のズレを一気に縮めて修正するのではなくて、
NTPを基準にし、じわりじわりと加速するか減速させて、
時間の連続性を維持しようとプログラミングされている。
鯖ならDB上での時間の扱いの不都合を埋め合わせするため。 けどWindowsってUNIX系のadjtime見たいなAPIが無かったんじゃね?
そもそもUNIX系と違ってWindowsはソフトウエアクロックを持ってないから
HW側がadjtime相当の機能を搭載しない限りクロックの加減速なんて
不可能な気がする。 ドザではないけど、この時を刻む正確さの課題は、商取引上、重要なので
もしも今の最新OSの機能としてなければ、次期OSから搭載するんでないの? >>497
まさにそれを使ってるんだけど、実際どうしたらいいのかな。
NTPだと、1分に1秒狂うような時計は修正できないし
それに対応したNTPソフトがあるならぜひ乗り換えたい。 MS純正標準装備のW32Timeサービスをw32tmコマンドを使って設定することで
クロックのオフセットみたいな機能が働くという噂。 XPまでならW32timeのレジストリにあるLastClockRateでも一応確認できる
Vista以降ならw32tmコマンドでもクロックレートを表示できる >>496
NTPタイムスタンプは正のうるう秒とその直後の秒を区別できない。
だから「UTCもJSTもUNIX TimeもNTP Timeも機械的に相互変換可能」
というのは間違い。 時間に依存しない関数ではNTP TimeとUTCの1対1対応は無理というだけで、
NTP Timeの進みとLIを認識できる関数ならNTP TimeからUTCへの機械的変換は可能。
時刻扱うシステムが、時間依存しない関数しか使えないという仮定はさすがに
無理があるだろう。 >>507
うるう秒だと仮定すると0.5秒進んでいて
うるう秒じゃないと仮定すると0.5秒遅れている
なんて場合はどうする? 0.5秒の遅延が命取りなサービスの時計は自分で作る NTPにはうるう秒による暦上の秒の追加/削除が実施された前後に、その事実を
示すためのフラグフィールドがあるんだそうな。
このフィールドを見てうるう秒補正が実施された直後だったら1秒前後のズレを
正当な時差とみなす実装が可能だそうだ。 でも leap indicator が LEAP_NOWARNING だったとしても
receive timestamp がうるう秒じゃないとは限らないし、
逆に LEAP_ADDSECOND だったとしても transmit timestamp が
うるう秒だとは限らないよね? よくわかんが、NTP使うとUTCの配信ができないと言ってるのか 同じか否かよりどのくらい違うかに視点を置いて考えるのが良い
と思うな。いうまでもなくここでNTPや世界協定時のあるべき論を
論じても不毛なわけで。
俺の身の回りに1秒のずれがそれほど致命的になるシステムは
無いから、実世界の暦と1秒以内の精度が保ててシステムクロック
のスキップが発生しないのなら万事OK。 micro-sec が気になる人は IEEE1588 PTP でも使ってくれたまへ うるう秒が挿入されるのって日本時間だと
ちょうど会社が動き始める時間だからなあ。
12月末とか休日なら大した問題はないだろうけど、平日に実施されると
金融系は何かしらの影響がありそうな気が。
うちの会社で使っているGPSソースのNTPは
2年ほど前の年末にうるう秒があったとき23:59:59が2回入った。
本当ならGPSはうるう秒配信できるんだよね・・・? まさかNTPをうるう秒を考慮するようにビルドしてないとか?w >>512
要するに試験の答案ならば>>481は0点。 ntpq -pの出力が、ときどきringのサーバのところだけ文字化けするんだけど、なんでだろう。
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp01.so-net.ne 211.10.62.120 2 u 97 256 377 6.003 4.062 2.310
ring.yamanashi. .^?^?^A^A. 16 u 13 1024 0 0.000 0.000 0.000
+ntp1.jst.mfeed. 210.173.160.56 2 u 52 1024 17 8.875 7.471 5.726
>>520
あそこは日本語使ってるからよく化ける。 ttp://akizukidenshi.com/catalog/g/gK-04705/
これ用のドリャイバってある? >>522
普通にあるだろ。どうみてもただのUSB-シリアルだべ。 そこのドライバではなく以前の電波時計と同じ叩き方で使えるかどうかの部分。 ntp.conf で、
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
って書いておくと、以前は >>520 みたいにサーバが 3 行分出てきていたのに、
今は、
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp-b2.nict.go. .NICT. 1 u 1 64 17 5.365 -174.61 1102.89
って 1 行しか出てこない。なぜ? >>526ラウンドロビンをしてその途中で同じ名前を他の誰かが引かないことを前提とした書き方で
その名前を3回引いてる最中に他の誰かがその名前を引いたとかそもそもラウンドロビンしてないとかで
うまく引けないことがあるからやめるべき。 ntp.nict.jpの中のホスト名(ntp-b2とかntp-a3とか)は
正式には公表されてないし、変更される可能性もあるから、
個別のホスト名で3台指定するわけにもいかないんだよな。
ましてIPアドレス決め打ちにはできないし。 server行に引けたアドレス全部を指定する-aオプション新設すべきだよな。 そうそう。オプションで欲しいw
>>529
変更される可能性もあるけど、ここ数年変更されてないw >>531
IX系とか呼ばれていた 210.171.226.40 のホスト(ホスト名逆引き不可)が、
ntp.nict.jpのラウンドロビンから外されるという「変更」が
半年ほど前にあったばかりだぞ。 あ、それが増えても修正してなくて減ったときにはそのままスルーだったから忘れてたw 一度 public NTP として宣言した IP address は
二度と他の目的には使えないんだと思ってるけど 仕様として使えないわけではなく、
IP アドレス指定のまま放置されてるホストが大量にあると
うかつに他の用途に使うと混乱を招くってことでしょ。
そもそもそこらじゅうから多量の NTP query が
来ちゃうようなアドレスで他のサービスをやったって
無駄に回線の帯域を食うだけだし
福岡大やmfeedくらいになって初めて問題になるような事を心配してどうするんだ publicじゃなくて社内のprivate LANの話だが、
シスコのルーターでNTPサーバが動いているのを
どっかで聞きつけて勝手に指定した連中がいたらしい。
あるときネットワーク機器変更してNTPの機能無くなったとき、
「時刻合わないぞ何やってんだ!」怒鳴り込んできたやついたわ。
「社内ネットワークのマニュアルには以前からNTPは○○を指定しろ、
って書いていただろ」って叩き返したが。 >>542
俺とか勤怠表毎日書くのが面倒なので、Windowsのイベントログで後から出社、退社時刻を拾う
ようなのをよくやるんだ。それとヒマな日はatコマンドで定時ぴったりにマシン止めたりして遊ぶ
んだが一部マシンはシャットダウン開始時にでかいビープがなる。だから定時の館内放送と
シャットダウン時刻がずれるのはとても困る。 公式にアナウンスしていない機能でも、
バカなユーザに依存されると面倒だから、
なるべく機能は止めておこうね、という教訓でわ ちなみに俺はNTPごときで苦情を言ったことなんかないぞ。
ただちょっと恥ずかしかっただけだ。 あの日まで、セシウムで真っ先に連想するのは
NICTの原子時計だったなあ 原子時計まで汚染されてしまったか。
これからはセシウムの入っていない原子時計を西日本か海外から輸入しないとな。 汚染ってw
その放出してるものを正確な時刻の測定に使ってるんじゃ?w セシウム入り原子時計は担当者がプレゼン用にふざけ心で試作した物ですが、
手違いで製品として23個だけ出荷されてしまいました。 >>551
違うよ。
原子時計のセシウムは、セシウム133で、安定セシウム(放射性ではない)。
だから、「放出してるもの」は無い。(セシウム137とかと混同すな)
安定セシウム133とは別に(電子回路で)マイクロ波を発振し、
それを安定セシウム133に共鳴させて正確な周波数を得る。 アンドロイドのntpアプリ又は時刻調整ってどうなっていますか?
>>554
スマホは何もしなくても時間はズレないから、NTPの出番はないのでは? >>554はアンドロイドと言ってるのに、なぜスマホ限定の話に? ただでもらった光iフレームにはGPSなど搭載されていない。