TDCTF Academy Logo TDCTF ACADEMY

NTP (Network Time Protocol)

Pentingnya Sinkronisasi Waktu

Sinkronisasi waktu yang akurat adalah aspek yang sering diabaikan namun sangat krusial dalam operasi jaringan. Beberapa alasan mengapa sinkronisasi waktu sangat penting:

  1. Logging dan audit keamanan - Waktu yang konsisten di seluruh perangkat memungkinkan analis keamanan merekonstruksi kronologi serangan secara akurat.
  2. Autentikasi dan protokol keamanan - Protokol seperti Kerberos, SSL/TLS, dan OTP (One-Time Password) sangat bergantung pada perbedaan waktu yang minimal antara klien dan server.
  3. Database terdistribusi - Replikasi database (misal MySQL, PostgreSQL) menggunakan timestamp untuk menentukan urutan transaksi.
  4. File system dan caching - Sistem seperti NFS dan make/build tools menggunakan timestamps untuk menentukan file mana yang perlu diperbarui.
  5. Job scheduling dan cron - Tugas terjadwal akan salah waktu jika jam server tidak akurat.

Stratifikasi NTP (Stratum 0 - 15)

NTP menggunakan sistem stratifikasi (stratum) untuk menunjukkan tingkat keakuratan sumber waktu:

  • Stratum 0: Perangkat keras jam atomik atau radio/GPS time receiver. Tidak terhubung langsung ke jaringan.
  • Stratum 1: Server yang terhubung langsung ke sumber Stratum 0. Paling akurat di jaringan, biasanya memiliki offset kurang dari 1 milidetik.
  • Stratum 2: Server yang menyinkronkan waktu dari satu atau lebih server Stratum 1.
  • Stratum 3: Server yang menyinkronkan dari Stratum 2, dan seterusnya.
  • Stratum 15: Tingkat terendah yang masih dianggap sinkron.
  • Stratum 16: Menandakan bahwa server tidak sinkron (unsynchronized).

Semakin rendah angka stratum, semakin akurat sumber waktunya. Dalam praktiknya, sebagian besar organisasi menggunakan server Stratum 2 atau 3 sebagai referensi internal.

Cara Kerja NTP

NTP bekerja dengan mengukur round-trip delay (RTT) dan offset waktu antara klien dan server melalui serangkaian timestamp:

  1. Klien mengirim paket NTP berisi timestamp saat pengiriman (T1).
  2. Server menerima paket dan mencatat waktu kedatangan (T2), lalu mengirim balasan berisi T2 dan waktu pengiriman balasan (T3).
  3. Klien mencatat waktu kedatangan balasan (T4).
  4. Klien menghitung:
    • Delay = (T4 - T1) - (T3 - T2)
    • Offset = ((T2 - T1) + (T3 - T4)) / 2

NTP tidak mengatur jam secara instan - ia menyesuaikan waktu secara bertahap melalui clock discipline algorithm yang dapat mempercepat atau memperlambat jam sistem hingga mencapai sinkronisasi. Ini menghindari lompatan waktu (time jump) yang dapat mengganggu aplikasi.

Implementasi: chrony vs ntpd

ntpd (Network Time Protocol Daemon)

Implementasi NTP klasik dari NTP Project. Stabil, matang, dan diandalkan di lingkungan enterprise. Menggunakan algoritma clock discipline yang cenderung konservatif - membutuhkan waktu lebih lama untuk mencapai sinkronisasi, tetapi sangat stabil setelahnya.

chrony

Implementasi NTP modern yang dirancang sebagai pengganti ntpd. Chrony unggul dalam:

  • Sinkronisasi lebih cepat - chrony dapat mencapai akurasi dalam hitungan detik hingga menit, bukan jam.
  • Kinerja lebih baik di jaringan tidak stabil - chrony menangani latensi dan packet loss dengan lebih baik.
  • Dukungan untuk sleep/wake cycles - ideal untuk laptop dan mesin virtual yang sering dalam mode tidur.
  • Konsumsi memori lebih rendah.

Dokumentasi dan praktik di lapangan menunjukkan chrony diaktifkan secara default di distribusi Linux modern seperti Fedora, RHEL 8+, Ubuntu (mulai versi tertentu), dan CentOS 8+.

Konfigurasi Client NTP

Menggunakan chrony

File /etc/chrony/chrony.conf:

# Pool of NTP servers
pool 0.id.pool.ntp.org iburst
pool 1.id.pool.ntp.org iburst

# Allow NTP client from local network
allow 192.168.1.0/24

# Statistik
driftfile /var/lib/chrony/chrony.drift

# Menyinkronkan hardware clock
rtcsync

Menggunakan ntpd

File /etc/ntp.conf:

# Public NTP servers
server 0.id.pool.ntp.org iburst
server 1.id.pool.ntp.org iburst

# Restrict untuk keamanan
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Drift file
driftfile /var/lib/ntp/ntp.drift

Konfigurasi Server NTP Lokal

Untuk organisasi yang menjalankan server NTP internal (Stratum 2/3), pastikan server:

  1. Tersambung ke beberapa server upstream (disarankan minimal 4) dari pool.ntp.org.
  2. Mengizinkan akses dari subnet internal dengan direktif allow (chrony) atau restrict (ntpd).
  3. Mengaktifkan hardware timestamping jika NIC mendukung.

Setelah konfigurasi selesai, mulai layanan:

systemctl start chrony # untuk chrony
systemctl start ntp # untuk ntpd

Verifikasi status sinkronisasi:

chronyc sources -v # chrony: menampilkan daftar sumber
chronyc tracking # chrony: detail offset dan delay
ntpq -p # ntpd: polling peers

NTP yang dikonfigurasi dengan benar akan menjaga offset waktu di bawah 50 milidetik untuk klien lokal - akurasi yang memadai untuk hampir semua kebutuhan operasional.

PADA HALAMAN INI