EndRun エンドラン Tempus LX NTPサーバ FAQ
情報システム営業部TOP-EndRun-Tempus LX- FAQ -お問い合わせ-資料請求フォーム


エンドラン テクノロジーズ

ntp.conf ファイルと restrict によるアクセス制御
JVNVU#96605606 Network Time Protocol daemon (ntpd) に複数の脆弱性 に関して;
および
JPCERT-AT-2014-0001 “JPCERT/CC Alert: ntpd の monlist 機能を使った DDoS 攻撃に関する注意喚起”に関して:

Tempus LXをインターネットに公開していないのであれば,この脆弱性への攻撃やDDoSアタックの心配はありません.
また restrict により mode 6と7のクエリを制限することで,この脆弱性やDDoSアタックを回避できます.

ntp.conf ファイルと restrict によるアクセス制御

注意:ntp.confのエディタによる変更は,同ファイルの書式文法を理解した方のみ行ってください.誤った編集はNTPサーバーとしての機能を損なう結果を招きます.通常の設定は ntpconfig スクリプトが行います.
Sonoma D12とTempus LX と Meridian の持つ ntpデーモンは, http://www.ntp.org から配布されている標準的な ntpd を基にしています.認証機能と共に ntp.conf の restrict行によるアクセス制御も一般的な ntpd と同じ書式で利用できます.このファイルの変更はrootになり次のコマンドで行い, 変更後に再起動を実行することで変更が反映されます.
# cp -p /etc/ntp.conf /boot/etc/ntp.conf # edit /boot/etc/ntp.conf (Sonomaではviも利用できます # vi /boot/etc/ntp.conf) # shutdown -r now
ntp.conf の初期設定は機種により異なり次の通りです.server行とfudge行はクロックドライバの設定ですから絶対に変更しないでください. 初期設定の中で restrict 行は一行のみであり,restrict default nomodify (RFS v2.5以前は restrict default notrust nomodify) となっています.これにより外部のタイムサーバーとの同期と,ntpq と ntpdcによる設定の変更を禁止しています.任意のシステムからの時刻の問い合わせと, ntpq と ntpdc によるクエリは受け付けます.notrust についてはこちらを参照ください


Sonoma の ntp.conf の内容
# Sonoma XXXX NTP Configuration File

# Sonoma RefClock Driver
# These lines must not be removed, even if you are operating as
# a stratum II server!!!
server 127.127.38.0 prefer <= この行は絶対に変更しないでください
fudge  127.127.38.0 flag2 1 <= この行は絶対に変更しないでください

driftfile /boot/drift <= この行は絶対に変更しないでください

# Restrict Control/Query Access and Peering to ALL
restrict default nomodify noquery nopeer <= この行は絶対に変更しないでください

# The following line will Allow queries only from this host.
# If you need to remotely query via ntpq or ntpdc,
# add lines like this for each host you want to allow
# remote queries from.  DO NOT REMOVE this line for
# the localhost.  It must be present for the internal
# status monitoring functionality of the box.
restrict localhost nomodify <= この行は絶対に変更しないでください
restrict 192.168.0.11 <= クエリを許すホストを追記
restrict 2001.268.347::123:123 <= クエリを許すホストを追記

# Authentication
keysdir /etc <= この行は絶対に変更しないでください
keys /etc/ntp.keys <= この行は絶対に変更しないでください
trustedkey 1 2 <= ntp.keysの設定に対応して変更します
# broadcast ff05::101 minpoll 4 ttl 1






Tempus LXの ntp.conf の内容

# Tempus LX/Unison/Meridian CDMA NTP Configuration File
#Local Clock
#server 127.127.1.0
#fudge  127.127.1.0  stratum 10

#Praecis Ce RefClock Driver
server 127.127.38.0 prefer <= この行は絶対に変更しないでください
fudge  127.127.38.0 flag2 1 <= この行は絶対に変更しないでください

driftfile /boot/drift <= この行は絶対に変更しないでください

# Restrict Control Access to ALL
restrict default nomodify noquery <= この行は絶対に変更しないでください

# The following line will Allow queries only from this host.
# If you need to remotely query via ntpq or ntpdc,
# add lines like this for each host you want to allow
# remote queries from.  DO NOT REMOVE this line for
# the localhost.  It must be present for the internal
# status monitoring functionality of the box.
restrict localhost nomodify <= この行は絶対に変更しないでください
restrict 192.168.0.0 mask 255.255.0.0 nomodify <= クエリを許すホスト
restrict 2001:xxx:xxx:: mask ffff:ffff:ffff:: nomodify <= クエリを許すホスト

# Authentication
keysdir /etc         <= autokey に関する追加項目 V2.6以降
keys /etc/ntp.keys <= この行は絶対に変更しないでください
trustedkey 1 2 <= ntp.keysの設定に対応して変更します
ntpq のクエリで得られる情報はありふれたもののように見えますが,侵入を試みる者はその中から,ネットワーク遅延(ネットワーク構成を推定できる)や,ホスト名や,IPアドレスやOSバージョンといった重要な情報を見つけるかもしません.このため,タイムサーバへのアクセスを制限する機能が用意されています.この機能は restrict コマンドとキーワードにより制御されます.これらは /etc/ntp.conf ファイルに定義されており,次の書式を持っています.
restrict IPアドレス [ mask ネットマスク ] [ フラグ ] [ ... ]
ここで,アドレスはすべてドット区切りのIPアドレスとネットマスクです. フラグは制御される機能を表します. 例えば,IPアドレス 192.168.123.123 からの通信を無視させるには,次のアクセス制限を用います.
restrict 192.168.123.123 ignore
restrict コマンドを default キーワードと共に使い,すべての機能へのすべてのIPアドレスからのアクセスを制限する方法がよく使われます.
restrict default ignore
一旦,すべてのアクセスを制限した上で,必要な機能へのアクセスだけを有効にします.キーワードを持たない restrict 文はすべてのアクセスを有効にします.例えば,192.168.123.0/24 と 2001:xxx:xxx::/48のネットワークからだけはあらゆるリクエストを受け付けるようにするには次のコマンドを使います.
restrict default ignore restrict 192.168.123.0 mask 255.255.255.0
restrict 2001:123:123:: mask ffff:ffff:ffff::
さらに細かい指定をするには次のような書式を使います.例えば,192.168.123.0/24と2001:123:123::/48のネットワーク上のシステムはこのタイムサーバにアクセスできるが,ntpd の動作時の設定を変更はできないようにするには次のコマンドを使います.
restrict default ignore restrict 192.168.123.0 mask 255.255.255.0 nomodify restrict 2001:123:123:: mask ffff:ffff:ffff:: nomodify
noquery キーワードを追加することもあります.キーワード noquery はntpqやntpdcコマンドを使いタイムサーバーの動作時の設定を問い合わせることを制限します. タイムサーバーの状態を問い合わせるだけであれば,さぽど危険なことはありませんが,例えば ntpsweep コマンドによりNTPピアのOSやプロセッサの種類を上位にさかのぼって特定することができます.この機能は noquery オプションを使い,問い合わせを制限しないかぎり可能です. OSの情報を隠すためにバージョン情報を改変できますが,ほとんどのシステム管理者はこの情報を隠蔽しません.

なお,Tempus LX V2.6以降,すべてのSonoma(NTP Ver.4.2以降)において notrust は問い合わせに対しても,被問い合わせに対しても有効になっていることに注意してください.

アクセス制御ファイルの例を以下に示します.
# 次の行で,すべてのアクセスを禁止 restrict default ignore # 192.168.123.0/24のネットワーク上のクライエントは,認証が成立するとこのタイムサーバに同期できる. # しかし,それらクライエントはこのサーバの設定を変更できない. # また,それらクライエントにこのサーバが同期することは許可しない. restrict 192.168.123.0 mask 255.255.255.0 notrust nomodify notrap # 192.168.122.0/24のネットワーク上のクライエントは,無条件にこのタイムサーバに同期できる. # しかし,それらクライエントはこのサーバの設定を変更できない. # また,それらクライエントにこのサーバが同期することは許可しない. restrict 192.168.122.0 mask 255.255.255.0 nomodify notrap # IPアドレス 192.168.123.254 のタイムサーバに同期することを許すが,そのシステムが # このタイムサーバに問い合わせを行ったり,設定を変更したりすることは許さない.認証不要. # mask を指定しないと,初期値の mask 255.255.255.255 が適用される. restrict 192.168.123.254 noquery nomodify notrap # ループバックのアクセスは許可する.これも規制することは可能だが,一部の # 管理機能を使えなくすることを意味する. restrict 127.0.0.1

NTPクライエント側は次のようなアクセス制御の設定を行います.
# すべてのアクセスを禁止 restrict default ignore # 上記タイムサーバ 192.168.123.1 への同期を許可する.しかし,このクライエントシステムへの # ntpd と ntpdc による問い合わせと設定変更は許可しない. restrict 192.168.123.1 noquery nomodify notrap # ループバックインターフェースからのすべてのアクセスは許可する. # これも規制することは可能だが,一部の管理機能を使えなくすることを意味する. restrict 127.0.0.1
適切な restrict 行により,NTPサーバーのセキュリティーを向上させることができます.しかし,NTPのようなUDPプロトコル上のサービスは,なりすまし攻撃に弱いことを忘れないで下さい.restrict 行によるアクセス制限は必ずしも絶対的に有効なものではありえません.アクセス制限の機能を認証機能と組み合わせて使うことにより,はじめてNTPのセキュリティーを格段に向上させることができます.




以下のフラグが用意されています.

ignore
指定したホストからのすべてのパケットを拒否( ntpq と ntpdc からのクエリを含む).
kod
アクセス違反が起きたときにこのフラグがセットされていると, kiss-o'-death (KoD) パケットが送られます. KoD パケットは一秒に一回以上送られることはありません.
limited
discard コマンドに指定された最低値にパケットスペーシングが違反したときにサービスを拒否します.クライエントの履歴は ntpd のモニタ機能により保持されます.よって,limitedフラグのついたrestriction行があるかぎりモニタ機能はアクティブになります.
lowpriotrap
マッチするホストによりセットされたトラップは低優先順位であると宣言します.サーバーが保持できるトラップの数は限られています(現在値は3),それ以上のトラップ要求についてはサービスを拒否します.このフラグにより,優先度の低いトラップは通常の優先度のトラップで上書きできるように割り当てアルゴリズムを変更できます.
nomodify
指定したホストからの ntpq と ntpdc からのサーバーの状態の変更要求パケット(NTPモードの 6 および 7 パケット)を拒否します.情報を提供するだけのクエリは受け付けます.
noquery
ntpq と ntpdc からのクエリ(NTPモード 6 および 7 パケット)をすべて拒否します.クライエントからの時刻の問い合わせには影響を与えません.
nopeer
指定したホストをpeerとして扱いません.
noserve
指定したホストからの ntpq と ntpdc のクエリ以外のパケット(NTPモード 6 および 7 パケット)を拒否します.結果としてこのホストへの時刻配信を行いません.
notrap
マッチングホストにモード6の制御メッセージトラップサービスを提供することを拒否します.トラップサービスは ntpdq 制御メッセージプロトコルの一部であり,"trap client"と呼ばれる,リモートのイベントロガープログラムが使うことために用意されています.
notrust
暗号認証されない限り,指定したホストを時刻同期のためのサーバとして扱わず,またV2.6以降ではクライエントからの問い合わせにも答えません.
( RFS v2.6 以降に採用された ntpd Ver 4.2 以降と,それ以前のRFSが持つ ntpd Ver 4.1 では notrust の意味が異なります
ntpd Ver 4.1 以前 notrust は "このホストなりサブネットは信用するな" の意味です.
ntpd Ver 4.2 以降 notrust は "暗号化認証されていないすべてのNTPパケットを無視しろ"です.これによりリモートなタイムサーバはこのクライエント側タイムサーバと認証を取ろうとします. )

ntpport
これはむしろアクセス制限フラグというより,マッチアルゴリズムを変更するためのものです. これにより,パケットのソースポート番号が 標準のNTP UDPポートである(123)場合にのみ,制限項目が適用されるようになります.
version
現在のNTPバージョンにマッチしないパケットは拒否します.
株式会社 昌新 技術部