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:
- Logging dan audit keamanan - Waktu yang konsisten di seluruh perangkat memungkinkan analis keamanan merekonstruksi kronologi serangan secara akurat.
- 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.
- Database terdistribusi - Replikasi database (misal MySQL, PostgreSQL) menggunakan timestamp untuk menentukan urutan transaksi.
- File system dan caching - Sistem seperti NFS dan make/build tools menggunakan timestamps untuk menentukan file mana yang perlu diperbarui.
- 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:
- Klien mengirim paket NTP berisi timestamp saat pengiriman (T1).
- Server menerima paket dan mencatat waktu kedatangan (T2), lalu mengirim balasan berisi T2 dan waktu pengiriman balasan (T3).
- Klien mencatat waktu kedatangan balasan (T4).
- 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:
- Tersambung ke beberapa server upstream (disarankan minimal 4) dari pool.ntp.org.
- Mengizinkan akses dari subnet internal dengan direktif
allow(chrony) ataurestrict(ntpd). - 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.