28.2. timesync RHEL システムロールを使用した NTP と NTS による時刻同期の設定
クライアントは、Network Time Security (NTS) メカニズムを使用することで、サーバーへの TLS 暗号化接続を確立し、Network Time Protocol (NTP) パケットを認証します。timesync RHEL システムロールを使用して、RHEL NTP クライアントと NTS の設定を自動化できます。
NTS サーバーと非 NTS サーバーを混在させることはできないことに注意してください。混在する構成では、NTS サーバーが信頼され、認証されていない NTP ソースにクライアントがフォールバックしません。これは、サーバーが中間者 (MITM) 攻撃に悪用される可能性があるためです。詳細は、システム上の chrony.conf(5) man ページの authselectmode パラメーターに関する説明を参照してください。
timesync RHEL システムロールは、管理対象ホスト上の指定または検出されたプロバイダーサービスの設定を置き換えます。したがって、設定が Playbook で指定されていない場合、すべての設定が失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
管理対象ノードが
chronydを使用している。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。--- - name: Managing time synchronization hosts: managed-node-01.example.com tasks: - name: Configuring NTP with NTS-enabled servers ansible.builtin.include_role: name: redhat.rhel_system_roles.timesync vars: timesync_ntp_servers: - hostname: ptbtime1.ptb.de nts: yes iburst: yesサンプル Playbook で指定されている設定は次のとおりです。
iburst: yes- 高速な初期同期を可能にします。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.timesync/README.mdファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.ymlこのコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
管理対象ノードが
chronydサービスを実行している場合は、次の手順を実行します。時刻ソースの詳細を表示します。
# ansible managed-node-01.example.com -m command -a 'chronyc sources' MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ptbtime1.ptb.de 1 6 17 55 -13us[ -54us] +/- 12ms ^- ptbtime2.ptb.de 1 6 17 56 -257us[ -297us] +/- 12msNTS が有効なソースの場合、NTP ソースの認証に固有の情報を表示します。
# ansible managed-node-01.example.com -m command -a 'chronyc -N authdata' Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ========================================================================= ptbtime1.ptb.de NTS 1 15 256 229 0 0 8 100 ptbtime2.ptb.de NTS 1 15 256 230 0 0 8 100Cook列に報告される Cookie の数が 0 より大きいことを確認します。
管理対象ノードが
ntpdサービスを実行している場合は、次のように入力します。# ansible managed-node-01.example.com -m command -a 'ntpq -p' remote refid st t when poll reach delay offset jitter ============================================================================== *ptbtime1.ptb.de .PTB. 1 8 2 64 77 23.585 967.902 0.684 -ptbtime2.ptb.de .PTB. 1 8 30 64 78 24.653 993.937 0.765