コンピュータ・システムの時刻を,その場所の標準時に合わせておくことは重要である。システムの時刻を時計代わりにするためではない。システム管理のために必要なのである。時刻は,あるシステムを他のシステムと関連付けるための重要な“基準”となるからだ。今回の記事では,「なぜシステムの時刻を正確にしておかなければならないのか」について考えてみる。

未来からメールが送られてくる

 まず,一般ユーザーの立場で考えてみよう。ユーザーのシステムの時刻が標準時と大幅にずれていたらどういう問題が発生するだろうか。身近な例としては電子メールが考えられる。メールにおいて,送信者のシステムの時刻が大幅にずれていると,受信者に迷惑をかけることになる。

 例えば,送信者のシステムの時刻が大幅に進んでいると,受信者からは未来からメールが送られてきたように見える。逆に大幅に遅れていると,メールを受信時刻でソートしている場合などは,過去のメールに埋もれてしまうことになる。受信者としては,送られたメールの整理に一苦労である。

 このようなことがないように,システムの時刻を正確にしておくことは,メールをやり取りする上でのマナーである。

 メールだけではない。プログラムのコンパイル作業に影響を与える場合もある。例えば,「GNU make」を利用して複数のソース・コードをコンパイルする場合を考える。makeを使えば,前回のコンパイル時以降に変更があったソース・コードだけを再度コンパイルする。

 もし,システムの時刻が大幅に異なる複数のシステムで,同じソース・コードの修正やコンパイル作業を実施している場合には,本来コンパイルされるはずのソース・コードがコンパイルされなかったり,逆にコンパイルする必要のないソース・コードが再コンパイルされたりしてしまう。

時刻は複数のシステムを関連付ける“基準”

 システム管理者にとって,時刻を合わせることはさらに重要なことになる。多くの場合,システム管理者は,ネットワーク内の複数のシステムを関連付けて考える必要性に迫られる。このとき,関連付けの基準となるのは,それぞれのシステムの時刻となる。これらがバラバラではシステム管理はままならない。

 例えば,ネットワーク内でセキュリティ・インシデントが発生したとする。このとき,「インシデントの影響範囲はどの程度か」,「影響の大きさはどの程度か」,「原因は何か」,「最善の対応策は何か」――などを判断するには,複数のシステム(ファイアウオール,IDS,インシデントが発生したサーバー,など)が出力したログを突き合わせて解析しなくてはならない。

 このとき,それぞれのシステムの時刻が合っていなければ,解析は困難なものとなる。「それぞれの“時差”を調べて,その時間をログの時刻に加減すればいい」と考える方がいるかもしれないが,そんな手間をかけるぐらいなら,最初から時刻を合わせておくべきだ。

 時刻の重要性は,自分が管理するネットワークの範囲にとどまらない。例えば,ある組織のネットワークを経由してクラッキングなどを受けた場合には,組織をまたがってのログ解析が必要となる。当然このときも,それぞれのシステムの時刻が関連付けの基準となる。前述のメールの送受信についても同様だが,組織をまたがった基準にするために,時刻は標準時に合わせる必要がある。組織内のシステム同士で時刻を合わせるだけでは不十分なのである。

 複数のシステムから同じファイルを操作する場合にも,時刻が合っていないと問題が発生する。例えば,2つのシステムから,ファイル・サーバー上のあるファイルに変更を加える場合を考える。片方のシステムからそのファイルに変更を加えた後,もう片方のシステムから変更を加えた場合,後者のシステムの時刻が大幅に遅れていると,後者の変更が反映されない場合がありうる。

 ファイル変更を手動で行っている場合にはユーザーが気づくだろうが,処理を自動化させている場合には,ファイルを適切に更新しているつもりでも,実は古いファイルがずっと残っていた――といった事態が起こりかねない。バックアップ処理を自動化させている管理者は,この問題に特に注意する必要がある。

 また,時刻によってパスワードが変化するワンタイム・パスワードを使用している場合にも,時刻合わせは重要となる。認証を行うサーバーと,ユーザーが所持するトークンの時刻がずれていると,適切に認証できなくなってしまうからだ。

NTPで時刻を合わせる

 では次に,システムの時刻を標準時に合わせる方法とその注意点について簡単に説明する。

 時刻を合わせる方法としては,「Network Time Protocol(NTP)」の利用が一般的である。NTPを利用すれば,NTPサーバーからネットワーク経由で現在の正確な時刻を取得できる。NTPは,UNIXだけではなく Windows でも利用できる。Windows上で動作するNTPクライアント・ソフトには,「桜時計」「Tclock」などがある。

 NTPを利用して時刻を合わせる際には,以下の点に注意する必要がある。

(1)ネットワーク内の各マシンには,外部のNTPサーバーを参照させない。ネットワーク内にNTPサーバーを設置し,そのNTPサーバーに外部NTPサーバーを参照させるようにする。ネットワーク内の各マシンは,内部のNTPサーバーを参照する。

(2)ファイアウオールでは,内部のNTPサーバーから外部のNTPサーバーへの通信だけを許可する。

(3)内部のNTPサーバーの設定において,外部のNTPサーバーを複数指定しておく。

 (1)および(2)は,ネットワークや外部のNTPサーバーへ過剰な負荷をかけないためである。(2)はセキュリティ対策でもある。(3)は,ネットワークや外部NTPサーバーの障害対策である。

 外部のNTPサーバーへアクセスできない環境,あるいは組織のポリシーとしてNTPの通信を許可されていない環境においては,「原子時計型NTPサーバー」や「GPS同期型NTPサーバー」といった選択肢がある。これらは,それぞれ「原子時計を内蔵するNTPサーバー」,「Global Positioning System(GPS)衛星からの信号で時刻を合わせるNTPサーバー」――である。


川口 洋 (KAWAGUCHI Hiroshi) hiroshi.kawaguchi@lac.co.jp
株式会社ラックJSOC事業本部


 IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,その週に起きたUNIX関連およびセキュリティ全般のニュースや動向をまとめた週刊コラムです。セキュリティ・ベンダーである「株式会社ラック」のスタッフの方を執筆陣に迎え,専門家の立場から解説していただきます。