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
-
OpenSSH
- レンタルサーバー(VPS)にSSHでログイン
- VPS(レンタル)サーバー上のssh初期設定確認
- SSH接続の仕組み
- OpenSSHの設定ファイル
- OpenSSHの設定をよりセキュアに
- CentOS Stream9のSSH設定(OpenSSH)
- WinSCPを使ってファイル転送
ネットワーク、ポート番号
rpmパッケージ、サービス
パーミッション
ログイン、認証、パスワード、アカウント制御
auditdでシステム監査
ツール
トラブルシューティング
-
ネットワーク、ポート番号
- iptablesを使ってCentOSのファイアウォール設定
- CentOS6のTCPラッパーの概要と設定方法
- nmapでオープンしているポート番号とバージョンを確認
- yumコマンドで最新のパッケージにアップデート
- 更新可能なRPMパッケージのリストをメールで送信する
- CentOSで不要なサービスは起動しないようにする
- RPMパッケージのインテグリティチェック
- cronで使用するファイルのパーミッション設定
- CentOSのumaskの設定
- ユーザーホームディレクトリ内の権限設定をセキュアにする
- CentOSのパスワードファイルのパーミッション設定
- findコマンドでファイル書込権限をいっせいにチェック
- findコマンドでセットユーザ(グループ)IDが不要にセットされていないかチェック
- findコマンドで所有者、グループが存在しないファイルを抽出
- ログイン時などに表示されるシステムバナーを変更するには?
- CentOSのユーザーアカウントのパスワードポリシーを設定
- pam_cracklibモジュールでパスワードポリシーを設定
- pam_unix.soモジュールを使って過去のパスワード再使用を制限する
- システムコンソールでのrootログインを制限する方法
- suコマンドによるrootへのスイッチを制限する
- root権限でのコマンド実行、sudoだと監査ログが取得できる
- デーモン用アカウントなどに対しシェルを使用を無効にする
- パスワード認証を失敗時にアカウントをロックアウトする設定
- rootアカウントのPATH環境変数のセキュリティについて
- NTPのセキュリティを考慮した設定
- セキュリティを考慮してX Windowsを設定または削除する方法
- ファイルの改ざん対策用にTripwireを導入
- CentOSにホスト型侵入検知ソフトAIDE(Advanced Intrusion Detection Environment)を導入
- アイドルのシェルを自動で強制終了させるには?
- CentOSでコアダンプを無効にする方法
- Linuxのbash脆弱性CVE-2014-6271、Shellshockを修整
- CentOSでバッファーオーバーフロー脆弱性に対する防御機能が有効になっているか確認する
yum、rpmパッケージ、サービス
パーミッション
ログイン、認証、パスワード、アカウント制御
ツール
トラブルシューティング