|
/etc/ntp.conf ファイルと restrict によるアクセス制御
Tempus LX と Meridian の持つ ntpデーモンは, http://www.ntp.org から配布されている標準的な ntpd を基にしています.認証機能と共に /etc/ntp.conf の restrict行によるアクセス制御も一般的な ntpd と同じ書式で利用できます.
/etc/ntp.conf の初期設定は次の通りです.server行とfudge行はクロックドライバの設定ですから変更しないでください. 初期設定の中で restrict 行は一行のみであり,restrict default nomodify (v2.5以前は restrict default notrust nomodify) となっています.これにより外部のタイムサーバーとの同期と,ntpq と ntpdcによる設定の変更を禁止しています.任意のシステムからの時刻の問い合わせと, ntpq と ntpdc によるクエリは受け付けます.
# 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
# Authentication
keysdir /etc <= autokey に関する追加項目 V2.6以降
keys /etc/ntp.keys
trustedkey 1 2
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 のネットワークからだけはあらゆるリクエストを受け付けるようにするには次のコマンドを使います.
restrict default ignore
restrict 192.168.123.0 mask 255.255.255.0
さらに細かい指定をするには次のような書式を使います.例えば,192.168.123.0/24のネットワーク上のシステムはこのタイムサーバにアクセスできるが,ntpd の動作時の設定を変更はできないようにするには次のコマンドを使います.
restrict default ignore
restrict 192.168.123.0 mask 255.255.255.0 nomodify
noquery キーワードを追加することもあります.キーワード noquery はタイムサーバーの動作時の設定を問い合わせることを制限します. タイムサーバーの状態を問い合わせるだけであれば,さぽど危険なことはありませんから,
例えば, ntpsweep コマンドにより,NTPピアのOSやプロセッサの種類を上位にさかのぼって特定できます.この機能は noquery オプションを使い制限しないかぎり,問い合わせ可能です. OSの情報を隠すためにバージョン情報を改変することができますが,ほとんどのシステム管理者はこの情報を隠蔽していません.これにより,侵入を試みようとするものは容易にOSやバージョンやプラットホームの情報を手に入れてしまいます.
なお,V2.6以降(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
|
クライエント側は次のようなアクセス制御の設定を行います.
# すべてのアクセスを禁止
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以降ではクライエントからの問い合わせにも答えません.
ntpport
これはむしろアクセス制限フラグというより,マッチアルゴリズムを変更するためのものです. これにより,パケットのソースポート番号が 標準のNTP UDPポートである(123)場合にのみ,制限項目が適用されるようになります.
version
現在のNTPバージョンにマッチしないパケットは拒否します.
|