NTPに関連するコマンド『ntpq』において、リモートで稼働しているNTPサーバの情報を取得することが出来ると知ったので試してみた。 テスト用のNTPサーバは、CentOSで稼働させ、IPアドレスは「192.168.0.222/24」とする。
まずはNTPサーバの「/etc/ntp.conf」に、以下の内容を追加する。
restrict 192.168.0.0 mask 255.255.255.0
これは、「192.168.0.0/24のネットワークからのアクセスを受け付ける」という意味になる。 また、リモートから操作出来るようにiptablesの停止を行う。
service iptables stop
さて、これでクライアント機からntpqコマンドを用いてNTPサーバの情報が取得できる。 NTPクライアント機で、以下のコマンドを実行し対象のNTPサーバで対話モードを使用し、Peersの情報を参照する。
blacknon@X201:~$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp-a2.nict.go. .NICT. 1 u 1 64 377 7.568 69.194 20.079
blacknon@X201:~$ ntpq 192.168.0.222
ntpq> peers
remote refid st t when poll reach delay offset jitter
==============================================================================
gw1.kohaaloha.c .INIT. 16 - - 1024 0 0.000 0.000 0.000
laika.paina.jp .INIT. 16 - - 1024 0 0.000 0.000 0.000
*ntp-v6.chobi.pa 245.93.165.128 2 u 8 64 377 4.804 0.270 9.542
felixx.tsn.or.j .INIT. 16 - - 1024 0 0.000 0.000 0.000
さて、このアクセスを停止させるにはどうすればいいのか。 先程「/etc/ntp.conf」に追記した一文を、以下に書き換えればいい。
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer noquery
末尾に「nomodify」「notrap」「nopeer」「noquery」というオプションが追加されているのがわかると思う。 これらはフラグと呼ばれており、こちらのページを参照するとわかりやすい。
以下に、このフラグの内容についてだけ抜粋する。
- ignore : 全てのパケットを拒否する。
- noquery : ntpq のクエリー(照会)を無視する
- nomodify : サーバーの状態を変更しようとする ntpq のクエリー(照会)を無視する
- noserve : 時刻同期要求は拒否するが、ntpq のクエリー(照会)は許可する
- notrust : 指定したホストを参照先サーバーとして使用しない
- notrap : trap サービスのためのパケットを拒否する。
構築したいサーバに併せて、上のフラグを組み合わせてあげるといい。