2007/02/14

NTP認証: ブロードキャスト・共通鍵認証篇

NTP認証シリーズの第二回。前回は、共通鍵認証・ユニキャストだったが、今回はユニキャストの代わりにブロードキャスト(broadcast)を使う。認証を行わない場合のブロードキャストの設定については、『NTP broadcast設定』で取り上げた。これに認証を加えようというわけだ。

NTP認証は、ブロードキャスト設定を行ったときにこそ必要になる。なぜなら、broadcastclient設定を行ったクライアントは、認証を有効にしていない場合、ブロードキャストで流れてきたNTPパケットを無条件で信用し、そのパケットを送信したサーバに時刻同期しようとするからだ。悪意のある攻撃者がネットワークに接続した場合、簡単に時刻を混乱させることができる。

サーバ側
共通鍵を生成する部分に関しては、前回と同じ。詳しくは、そちらを参照して欲しい。

設定ファイル/etc/ntp.confについては、前回の設定に加えて、ブロードキャストの設定が必要。ただし、『NTP broadcast設定』で述べた方法と違い、broadcast サーバ名に続けて、key 鍵識別子オプションを指定する。
keys /etc/ntp/keys
trustedkey 10
broadcast 192.168.55.255 key 10
ユニキャストの場合と同様、trustedkeyコマンドで指定した鍵識別子の内一つをbroadcastコマンドのkeyオプションで指定する。

設定を変更したら、ntpdを再起動する。

クライアント側
まず、『NTP broadcast設定』でも指摘したが、ファイアウォール(iptables)が動いている場合は、ntp:udpを許可する必要がある。サーバからのNTPブロードキャストを受け取れるようにするためだ。FC5だと、system-config-networkを使って変更するか、/etc/sysconfig/iptablesを直接編集し、サービスiptablesを再起動する。

次に、共通鍵ファイルを準備する。これは前回とまったく同じ。/etc/ntp/keysに必要な鍵を追加する。

さらに、/etc/ntp.confの中で、broadcastclientコマンドを指定する。
restrict 192.168.55.0 mask 255.255.255.0 nomodify notrap
broadcastclient
これは、『NTP broadcast設定』での設定とまったく同じ。

最後に、この/etc/ntp.confの中で、使用する鍵識別子を指定する。
keys /etc/ntp/keys
trustedkey 10
これは、前回とまったく同じ。

変更したら、ntpdを再起動する。

確認
これも前回と同じで、クライアント側でntpqを起動し、peerコマンドで確認すればよいが、注意を要する点がある。ユニキャストの場合と違い、ntpdを再起動してすぐは、peerコマンドの出力に、NTPサーバのエントリが出力されない。
# service ntpd restart
ntpd を停止中:                                             [  OK  ]
ntpd: 時間サーバと同期中:                                  [  OK  ]
ntpd を起動中:                                             [  OK  ]
# ntpq
ntpq> peer
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
LOCAL(0)        LOCAL(0)        10 l    3   64    1    0.000    0.000   0.001
ntpq>
NTPクライアントは、正しい鍵で認証できるサーバからのNTPブロードキャストを受け取って、しばらく時間を置いてから、ユニキャストでそのサーバと時刻同期を行う。再起動直後は、タイミングにもよるが、まだサーバからのNTPブロードキャストを受け取っていないので、peerコマンドの出力には対応するエントリが出てこない。しばらく時間をおくと、対応するエントリが現れる。
ntpq> peer
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)        LOCAL(0)        10 l   23   64   17    0.000    0.000   0.001
ntpserver.local 213.186.41.134   3 u    3   64   17   10.357    0.814   7.753
ntpq>
さらに時間をおくと、そのサーバと時刻同期できるはずだ。

第一回:『NTP認証: ユニキャスト・共通鍵認証篇
第二回:『NTP認証: ブロードキャスト・共通鍵認証篇
第三回:『NTP認証: ntp-keygenコマンドとX.509証明書
第四回:『NTP認証: ユニキャスト・公開鍵認証篇
第五回:『NTP認証: マルチキャスト・共通鍵認証篇

0 件のコメント: