Apa kerugian dari menonaktifkan tinker panic 0 di NTP?

10

Kami terkadang memiliki masalah bahwa server baru memiliki waktu yang salah dalam bios, sehingga waktu dapat dimatikan sebulan.

Ketika Anda menangguhkan VM di VMware dan kemudian membatalkannya, waktunya juga akan mati. Karena NTP tidak disinkronkan setelah offset maksimum, saya mempertimbangkan untuk menggunakan tinker panic 0 di /etc/ntp.conf.

Apa alasannya bahwa ada offset maksimum default 1000 detik yang menyebabkan NTP berhenti menyinkronkan waktu? Kami menggunakan Wayang untuk mengatur NTP, saya mempertimbangkan untuk membuatnya mengatur tinker panic 0 di ntp.conf, jadi NTP akan tetap melakukan sinkronisasi. Apa kerugian dari melakukan ini?

ujjain
sumber

Jawaban:

8

Penyebab tidak disinkronkannya dengan server yang waktunya sangat berbeda didokumentasikan di sini :

5.1.1.4. Apa yang terjadi jika Waktu Referensi berubah?

Idealnya waktu referensi sama di mana-mana di dunia. Setelah disinkronkan, seharusnya tidak ada perubahan yang tidak terduga antara jam sistem operasi dan jam referensi. Oleh karena itu, NTP tidak memiliki metode khusus untuk menangani situasi ini.

Sebaliknya, reaksi ntpd akan bergantung pada offset antara jam lokal dan waktu referensi. Untuk offset kecil ntpd akan menyesuaikan jam lokal seperti biasa; untuk offset kecil dan besar, ntpd akan menolak waktu referensi untuk sementara waktu. Dalam kasus terakhir, jam sistem operasi akan melanjutkan dengan koreksi terakhir yang efektif sementara waktu referensi baru ditolak. Setelah beberapa waktu, offset kecil (secara signifikan kurang dari satu detik) akan mati (disesuaikan perlahan), sedangkan offset yang lebih besar akan menyebabkan jam digerakkan (atur lagi). Offset yang besar ditolak, dan ntpd akan berakhir dengan sendirinya, percaya sesuatu yang sangat aneh pasti telah terjadi.

Dalam konfigurasi NTP saya saat ini, juga dikendalikan oleh puppet, saya memaksakan sinkronisasi dengan server, baik dalam ntp.conffile, menggunakan tinker panic, dan dalam pengaturan daemon ( /etc/sysconfig/ntpd), seperti yang dijelaskan dalam halaman ntpd(8)manual:

-g Biasanya, ntpd keluar dengan pesan ke log sistem jika offset melebihi ambang panik, yaitu 1000 detik secara default. Opsi ini memungkinkan waktu disetel ke nilai apa pun tanpa batasan; Namun, ini bisa terjadi hanya sekali. Jika ambang melebihi setelah itu, ntpd akan keluar dengan pesan ke log sistem. Opsi ini dapat digunakan dengan opsi -q dan -x.

Saya melakukan ini karena saya dapat mempercayai server NTP yang saya sambungkan.

Bagian yang relevan dari modul yang berlaku untuk klien adalah sebagai berikut:

class ntp (
  $foo
  $bar
  ...
  ){

  $my_files = {
    'ntp.conf'      => {
      path    => '/etc/ntp.conf',
      content => template("ntp/ntp.conf.$template.erb"),
      selrole => 'object_r',
      seltype => 'net_conf_t',
      require => Package['ntp'], },
    'ntp-sysconfig' => {
      path    => '/etc/sysconfig/ntpd',
      source  => 'puppet:///modules/ntp/ntp-sysconfig',
      require => Package['ntp'], },
      ...
  }

  $my_files_defaults = {
    ensure   => file,
    owner    => 'root',
    group    => 'root',
    mode     => '0644',
    selrange => 's0',
    selrole  => 'object_r',
    seltype  => 'etc_t',
    seluser  => 'system_u',
  }

  create_resources(file, $my_files, $my_files_defaults)

  exec { 'ntp initial clock set':
    command     => '/usr/sbin/ntpd -g -q -u ntp:ntp',
    refreshonly => true,
    timeout     => '-1',
    subscribe   => File['/etc/ntp.conf'],
  }

}

Dan isi dari file yang direferensikan adalah:

$ cat devops/puppet/modules/ntp/files/ntp-sysconfig
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -a"

dan:

$ cat devops/puppet/modules/ntp/templates/ntp.conf.RedHat.erb
# HEADER: This file was autogenerated by puppet.
# HEADER: While it can still be managed manually, it
# HEADER: is definitely not recommended.
tinker panic 0
<% server.each do |ntpserver| -%>
server <%= ntpserver %> autokey
<% end -%>
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
crypto pw hunter2
crypto randfile /dev/urandom
keysdir /etc/ntp

Bagian hieraitu hilang di sini, tetapi Anda mendapatkan idenya.

dawud
sumber
3

Contoh kasus terburuk adalah serangan pada penerima GPS yang menghadap LAN Anda, ini telah terbukti mungkin dan itulah sebabnya NTP dalam kasus-kasus itu lebih "meninggalkan" daripada menghancurkan apa pun dengan segera. Masalah seperti ini, atau bug perangkat lunak yang tiba-tiba diharapkan pada waktu desain NTP, dan juga keduanya dapat terjadi.

Salah satu mekanisme perlindungan dalam algoritme adalah pendeteksian apa yang mereka sebut pemalsuan , tetapi itu hanya dapat mendeteksi beberapa masalah, terutama jika clock upstream mengirim waktu mundur secara tiba-tiba.

Jika ini hanya tentang "jam salah pada waktu mulai":

  • Anda dapat menggunakan / etc / ntp / step-tickers (di RHEL *, Debian tidak pernah mendapat ide). File langkah-tickers mengambil satu atau lebih server NTP untuk menjalankan ntpdate sebelum memulai ntpd itu sendiri.
  • sebagai alternatif (atau sebagai tambahan) ada opsi -g untuk ntpd , yang memungkinkan offset buruk, tetapi hanya ketika mereka ditemukan di awal.
Florian Heigl
sumber