まず、NTPの認証には、共通鍵(symmetric key: 共有鍵・対称鍵)を使う方法と、公開鍵(public key)を使う方法がある。
ntp.conf
の中ではそれぞれ、key
コマンドおよびautokey
コマンドにより指定される。一方、NTPの通信方式にもいくつかの方法がある。ユニキャスト(unicast)でクライアント=サーバ間もしくはピア間で通信する方法が一般的だ。これに加えて、サーバからのブロードキャストでクライアントにサーバの存在を知らせる方法や、マルチキャスト(multicast)を使う方法などがある。
NTPにおける認証は、クライアントがサーバの時刻に同期する、という点だけを捉えれば、クライアントが正しいサーバを確認することを意味する。つまり、悪意のあるサーバから時刻を受け取らないようにするための仕組みであると言える。
サーバが正しく認証を行ったクライアントであることを確認することもできる。しかし、普通に設定すれば、サーバは認証が有効化されていないクライアントに対してもNTP応答を行う。
ウェブページを検索してみると、そもそもNTPの認証に関するページが少ないが、ブロードキャストのときにどのように認証を行えばよいか、また、公開鍵認証でどのように設定すればよいか書いてあるページはさらに少ない。このブログでは、その辺りについても書く予定だ。
なお、認証を行わないユニキャストによる時刻同期ができていることを前提条件とする。また、『NTP broadcast設定』では、「NTPブロードキャストで認証を行わない場合は、ntpdへ渡すオプションに
-A
を付ける」と書いたが、この-A
オプションが指定してあるとNTP認証は正常に動作しない。サーバ側でもクライアント側でもこのオプションを指定していないことを確認する。第一回:『NTP認証: ユニキャスト・共通鍵認証篇』
第二回:『NTP認証: ブロードキャスト・共通鍵認証篇』
第三回:『NTP認証: ntp-keygenコマンドとX.509証明書』
第四回:『NTP認証: ユニキャスト・公開鍵認証篇』
第五回:『NTP認証: マルチキャスト・共通鍵認証篇』
0 件のコメント:
コメントを投稿