ntpdの設定

サーバーの設定をする上でsshdの次に大切なものが時刻同期です。

時刻同期の必要性

時刻同期はセキュリティ上で必要なことです。

インターネットは機器が接続されている世界です。攻撃を受けた際、あるいは、踏み台などにされた際にはそれらの痕跡が各機器にログなどとして残ります。実際に事件が起きた際にはそういったログの提出を求められることもあります。その時に時刻が同期されていないとログを辿ることが難しくなってしまいます。

そういった時の備えとして、常にサーバーの時刻は同期しておくようにしましょう。

NTP

一昔前までは正確に時刻を同期する方法が確立されておらず、それぞれの機器はそれぞれで時間を設定していたものです。しかし、今では据置き型の時計は電波時計、携帯電話やスマホはGPSで時刻を同期するようになりました。

そんな中でサーバーには古くから時刻を同期するためのNTP(Network Time Protocol)があります。正確な時刻を提供するサーバーをNTPサーバー。それに合わせて時刻を同期するクライアントをNTPクライアントと呼びます。

NTPサーバーは原子時計や水晶発振子といった正確に時刻を知ることができるデバイスと同期してます。こういったサーバーを特にstratum 1と呼びます(stratum 0は原子時計や水晶発振子などです)。また、DNSにおけるキャッシュサーバーのように、そういったデバイスと同期したNTPサーバーと同期して、ネットワーク内でリファレンスとなる時刻を提供するサーバも存在します。こちらはstratum 2、3、…となります。

さて、VPSでは基本的にはNTPクライアントだけがあればいいのですが、定期的にNTPクライアントを使って時刻を同期するよりも、自分だけが参照できるNTPサーバーを立ち上げて、上位のNTPサーバーにぶら下げる方が一般的です。

NTPサーバー

FreeBSDで使うことができるNTPサーバーには以下があります。

  • ntpd
  • OpenNTPD
  • chrony

OpenNTPDはOpenBSDのプロジェクトが開発したNTPサーバーです。前に紹介したportsから入れることができます。

chronyはLinuxでよく使われているNTPサーバーです。

どれを入れてもいいのですが、FreeBSDにはntpdが標準で入っていますので今回はこれを使うことにします。

ntpdの設定

実はさくらのVPSでFreeBSDサーバーを作成した場合は、既にntpdの設定が行われています(自分の場合はそうでした)。

具体的には /etc/rc.conf に以下の記述があれば有効になっています。

ntpd_enable="YES"

sysrcコマンドでも確認できます。

% sysrc -e ntpd_enable
ntpd_enable="YES"

続いて ntp.conf の中身を確認しましょう。

(省略)
#
# The option `iburst' is used for faster initial synchronization.
#
server ntp1.sakura.ad.jp iburst
(省略)

この server の部分に上位となるNTPサーバーを指定します。日本で公開されているNTPサーバーには以下のようなものがあります。

これ以外にも各VPSサービスやプロバイダーが公開している場合がありますので、サーバーからネットワーク的に近いものを選びましょう。今回はさくらインターネットが公開しているNTPサーバーを指定しました。

ntpdの起動

FreeBSDにおけるサービス(デーモン)の起動スクリプトは /etc/rc.d/XXXX (OS標準の場合)か /usr/local/etc/rc.d/XXXX (portsから入れた場合)にあります。

Linuxでいうところの /etc/init.d に近いと思います。なおLinuxの systemctl に相当するコマンドは service になります。

今回は ntpd を起動するので以下のコマンドを実行します。

% sudo /etc/rc.d/ntpd start
Starting ntpd.

service を使う場合は以下のコマンドになります。

% sudo service ntpd start
Starting ntpd.

また、同期しているかどうかは ntpq コマンドで確認できます。

% ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*2001:e42:0:1:21 43.162.219.88    2 u  344 1024  377   16.745   -0.121   0.183

VPSの場合はないとは思いますが、あまりにサーバーの時刻がNTPサーバーの時刻と離れていて ntpd で同期できない場合があります。そういう場合は ntpdate コマンドを使って、一度手動で時刻を同期してみてください。なお、このコマンドは既に ntpd が起動しているとエラーになります。一度止めてから実行してください。

% sudo /etc/rc.d/ntpd stop
% ntpdate ntp1.sakura.ad.jp
% sudo /etc/rc.d/ntpd start

参考

hideishi

艦好きをこじらせたダメ社会人。毎日楽しくbashとphpとjsと、最近はluaも書いています。三年振りにUKから帰国。新米指揮官@ドルフロ。TRPGではFEARゲーが好き。

コメントする