NTP(Network Time Protocol)のセキュリティを考慮した設定についてまとめました。
下記資料を参考にしました。
NSA(National Security Agency)の『Guide to the Secure Configuration of Red Hat Enterprise Linux 5』
※目次をクリックすると目次の下部にコンテンツが表示されます。
コンピュータのクロックは必ずしも正確というわけではなく、調整しない状態が続くと時間がずれてしまいます。
・NTPサーバーを使った時間管理によって、絶対的な時間を正確にする事に加えて、ネットワーク内のマシンで時間を一致させる事が出来ます。
複数のマシンが関係した障害が発生した場合のログ解析に役立ちます。
・デフォルトでインストールされているntp以外に、OpenNTPDというソフトウェアもあります。
SNTP(Simple Network Time Protocol)で実装されていて、別途インストールする必要がありますが簡単に設定はできるようです。
1)サービス or クーロン
①サービス
サービスとしてntpdを各ホストで実行する事が可能。
クライアントとして設定すれば、外部からのntpプロトコルによるネットワークアクセスを無視するようにする事も出来ます。
ただしクライアントマシンにネットワークリスナーを追加する事になるので推奨はされていないようです。
②cron
cronを使ってntpdを定期的に実行することが推奨されています。
2)NTPクライアントの設定ファイルのセットアップ
・/etc/ntp.confの設定内容
server [ntpサーバー名 or IPアドレス]
そのほか認証や暗号の設定も出来ます。
3)cronを使ってntpdを実行
・cron設定ファイル
/etc/cron.d/ntpd
・設定例
15 * * * * root /usr/sbin/ntpd -q -u ntp:ntp
※オプションの説明
・-q
時刻設定後すぐにexitする
・-u
特定のユーザーで実行する
はじめて時刻を設定する場合は”-g”オプションをつけて上記コマンドを実行します。
このオプションをつけると時刻が大幅にずれている場合は時刻の設定を行わないようにできます。
・サイト内のNTPサーバーは、ネットワーク内の他のマシンからの時刻取得のリクエストを許可するように設定します。
・NTPサーバーは、自身の時刻をパブリックなタイムサーバなどに接続して取得する必要があります。
・設定ファイルは、/etc/ntp.conf
2)NTPサーバーの自動起動設定
# chkconfig --list ntpd ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off # chkconfig ntpd on
3)NTPサーバーへのデフォルトアクセス設定
①デフォルトでntpdに対するすべてのアクセスを禁止する設定
ntpdはrootで実行され、外部からのネットワークコネクションも受ける事が出来る複雑なソフトウェアなので、許可されていないマシンによるネットワークアクセスに対して保護しなければなりません。
/etc/ntp.confに下記設定を行います。
restrict default ignore
この設定は、サーバー、クライアント、ポリシー設定によって明示的に許可していないすべてのマシンからのすべてのアクセスを拒否するntpdの内部権限を使用しています。
②ntpd4.2.6p5-1での設定内容
restrict default kod nomodify notrap nopeer noquery
・kod
アクセスコントロールリストに”limited”フラグが存在し、パケットが”discard”コマンドで設定されてレート制限を超過した場合は、kiss-o’-death (KoD)を送信する。
・nomodify
サーバーの状態を変更しようとするntpq、ntpdcを拒否する。
・notrap
マッチするホストに適用するmode 6 control message trap serviceを使用しない。
・nopeer
認証されていなければアソシエーションを形成するパケット拒否する。
・noquery
ntpqとntpdcクエリーを拒否する。タイムサービスには影響しない。
4)リモートからの時刻同期の許可設定
/etc/ntp.confで下記のように設定します。
①IPアドレスで指定する場合
restrict サーバーのIP mask 255.255.255.255 nomodify notrap noquery
server サーバーのIP
②DNS名で指定する場合
restrict DNS名 nomodify notrap noquery
server DNS名
または
pool DNS名
③設定例
日本標準時(JST)を使用する場合
restrict ntp.nict.jp nomodify notrap noquery
pool ntp.nict.jp
5)クライアントからのアクセスを許可する設定
①/etc/ntp.confの設定
許可する自ネットワークのネットワークアドレスをmynetip、ネットワークマスクが255.255.255.0(/24)の場合、下記記述を追加します。
restrict mynetip mask 255.255.255.0 nomodify notrap
②iptablesでntpプロトコルの通信を許可
/etc/sysconfig/iptablesに下記設定を追加します。
-A RH-Firewall-1-INPUT -s mynetip/24 -m state –state NEW -p udp –dport 123 -j ACCEPT
又は
-A INPUT -s mynetip/24 -m state –state NEW -p udp –dport 123 -j ACCEPT