サーバーの設定をする上で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サーバーには以下のようなものがあります。
- ntp.ncit.jp (情報通信研究機構)
- ntp.jst.mfeed.ad.jp (インターネットマルチフィード株式会社)
これ以外にも各VPSサービスやプロバイダーが公開している場合がありますので、サーバーからネットワーク的に近いものを選びましょう。今回はさくらインターネットが公開しているNTPサーバーを指定しました。
- ntp1.sakura.ad.jp (さくらのクラウド)
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
参考
- FreeBSD Handbook, Clock Synchronization with NTP
https://docs.freebsd.org/en/books/handbook/network-servers/#network-ntp - 情報通信研究機構, 日本標準時(JST)グループ
https://jjy.nict.go.jp/tsp/PubNtp/index.html - インターネットマルチフィード株式会社, 時刻情報提供サービス for Public
https://www.mfeed.ad.jp/ntp/overview.html - さくらのクラウド, 時刻の同期
https://manual.sakura.ad.jp/cloud/support/ntp.html