Jam server yang meleset beberapa detik saja bisa membuat log keamanan tidak bisa dipercaya. Ketika insiden terjadi dan kamu membandingkan log web server, log firewall, dan log aplikasi, semuanya harus bercerita dalam urutan waktu yang sama. Kalau satu server maju dua menit dan satu lagi mundur tiga menit, urutan kejadian jadi kabur dan investigasi berubah menjadi tebak-tebakan. Inilah alasan sinkronisasi waktu NTP Ubuntu bukan sekadar pengaturan kecil, melainkan fondasi keamanan server.
Di Ubuntu, sinkronisasi waktu ditangani oleh layanan NTP. Ubuntu 22.04 dan 24.04 memakai systemd-timesyncd sebagai bawaan, sementara Ubuntu 25.10 ke atas sudah memakai Chrony sebagai layanan waktu bawaan, lengkap dengan dukungan Network Time Security (NTS) yang mengenkripsi pertukaran waktu. Panduan ini memakai Chrony di Ubuntu 24.04 LTS, karena Chrony lebih akurat, lebih cepat menyesuaikan diri setelah koneksi terputus, dan bisa sekaligus menjadi server NTP lokal untuk mesin lain di jaringanmu.
Praktik ini dipersyaratkan oleh kontrol A.8.17 Clock Synchronisation di Annex A ISO/IEC 27001:2022. Inti kontrol ini sederhana dan bisa diringkas dengan kata-kata sendiri: semua jam pada sistem yang memproses informasi di organisasi harus berjalan mengikuti sumber waktu yang sudah disetujui, supaya catatan kejadian dari berbagai sistem bisa dibandingkan dan dipercaya.
Kontrol ini penting karena hampir semua bukti keamanan bergantung pada stempel waktu. Log yang menjadi bahan kontrol A.8.15 (pencatatan kejadian) dan A.8.16 (pemantauan aktivitas) hanya berguna bila jamnya benar. Sertifikat TLS bisa ditolak karena dianggap belum berlaku atau sudah kedaluwarsa, token autentikasi bisa gagal, dan jadwal cron bisa berjalan di waktu yang salah. Auditor biasanya memeriksa bukti seperti berkas konfigurasi layanan waktu, keluaran perintah status sinkronisasi, catatan pemantauan selisih jam dari waktu ke waktu, serta dokumen yang menyebutkan sumber waktu mana yang dipakai dan siapa yang bertanggung jawab bila sinkronisasi gagal.
Untuk konteks Indonesia, praktik yang sama juga selaras dengan Indeks KAMI dari BSSN yang menilai tata kelola keamanan informasi, termasuk pengelolaan log dan pemantauan. Jadi sekalipun kamu belum mengejar sertifikasi, mengatur sinkronisasi waktu dengan benar membuat servermu siap diaudit kapan saja.
Sebelum menginstal apa pun, periksa dulu layanan waktu apa yang sedang berjalan. Hanya boleh ada satu daemon waktu yang mengatur jam sistem, karena dua layanan yang berjalan bersamaan akan saling berebut dan justru membuat jam tidak stabil.
timedatectl status
systemctl is-active chrony systemd-timesyncd
Perintah pertama menampilkan zona waktu, status NTP, dan apakah jam sistem sudah tersinkronisasi. Perintah kedua menunjukkan layanan mana yang aktif. Di Ubuntu 24.04, biasanya systemd-timesyncd yang aktif, sedangkan di Ubuntu 25.10 ke atas Chrony yang aktif. Catat hasilnya sebagai kondisi awal sebelum kamu mengubah apa pun.
Chrony adalah implementasi NTP modern yang dipakai sebagai bawaan oleh banyak distribusi Linux. Versi stabil terbarunya, Chrony 4.8, dirilis pada 27 Agustus 2025 dan membawa perbaikan penanganan sumber yang tidak terjangkau. Instal dengan perintah berikut.
sudo apt update
sudo apt install -y chrony
Saat Chrony terinstal di Ubuntu 22.04 atau 24.04, systemd-timesyncd otomatis dinonaktifkan supaya tidak terjadi konflik. Periksa statusnya setelah instalasi selesai.
sudo systemctl status chrony
sudo systemctl is-enabled chrony
Layanan harus berstatus active dan enabled, yang artinya Chrony berjalan sekarang dan akan berjalan lagi setiap kali server reboot.
Sumber waktu adalah bagian yang paling penting dari konfigurasi ini. Gunakan minimal dua sumber yang berbeda dan bisa dipertanggungjawabkan. Ubuntu sudah menyediakan pool NTP sendiri, dan kamu bisa menambahkan sumber yang mendukung NTS agar pertukaran waktu terotentikasi secara kriptografis.
Buka berkas konfigurasi utama Chrony yang di Ubuntu terletak di /etc/chrony/chrony.conf. Jangan menghapus isi bawaannya; tambahkan atau sesuaikan baris sumber waktunya seperti contoh berikut.
pool 0.ubuntu.pool.ntp.org iburst maxsources 2
pool 1.ubuntu.pool.ntp.org iburst maxsources 2
server time.cloudflare.com iburst nts
driftfile /var/lib/chrony/chrony.drift
makestep 1.0 3
rtcsync
Arti tiap barisnya adalah sebagai berikut. Opsi iburst membuat Chrony mengirim beberapa permintaan sekaligus saat pertama kali berjalan, sehingga sinkronisasi pertama terjadi lebih cepat. Opsi nts mengaktifkan Network Time Security pada server yang mendukungnya. Baris driftfile menyimpan catatan penyimpangan frekuensi jam, supaya setelah reboot Chrony bisa kembali akurat dengan cepat. Baris makestep 1.0 3 mengizinkan Chrony melompatkan jam bila selisihnya lebih dari satu detik, tetapi hanya pada tiga pembaruan pertama setelah layanan dimulai. Baris rtcsync membuat jam perangkat keras ikut diperbarui mengikuti jam sistem.
Jangan mencampur sumber yang memakai leap smearing seperti time.google.com dengan sumber biasa, karena keduanya menghitung detik kabisat dengan cara berbeda dan hasilnya bisa saling bertentangan. Pilih satu pendekatan dan konsistenlah.
Server sebaiknya memakai zona waktu UTC, bukan zona waktu lokal. UTC tidak mengenal daylight saving time, sehingga stempel waktu di log tetap konsisten sepanjang tahun dan mudah dibandingkan dengan log dari server di negara lain.
sudo timedatectl set-timezone UTC
sudo timedatectl set-local-rtc 0
sudo systemctl restart chrony
Perintah kedua memastikan jam perangkat keras (RTC) juga disimpan dalam UTC. Setelah restart, beri Chrony waktu sekitar satu menit untuk melakukan pengukuran awal terhadap sumber waktunya.
Perintah yang dijalankan tanpa galat belum membuktikan apa pun. Buktikan sinkronisasi benar-benar bekerja dengan tiga pemeriksaan berikut.
chronyc tracking
chronyc sources -v
timedatectl status
Pada keluaran chronyc tracking, perhatikan tiga hal. Reference ID harus terisi nama atau alamat sumber waktu yang sedang dipakai. Leap status harus Normal, yang artinya tidak ada peringatan lompatan waktu. System time harus menunjukkan selisih yang sangat kecil, idealnya di bawah satu milidetik pada server yang sehat dan di bawah beberapa milidetik pada VPS biasa.
Pada keluaran chronyc sources -v, setidaknya satu sumber harus bertanda ^* yang menandakan sumber tersebut sedang dipilih sebagai acuan, dan kolom Reach tidak boleh 0. Kolom Reach yang menunjukkan 377 berarti delapan polling terakhir semuanya berhasil dijawab.
Terakhir, timedatectl status harus menampilkan baris System clock synchronized: yes dan NTP service: active. Bila ketiganya lolos, sinkronisasi waktu NTP Ubuntu di servermu sudah berjalan dengan benar.
Langkah ini opsional dan hanya diperlukan bila kamu punya beberapa server atau perangkat di jaringan yang sama dan ingin semuanya memakai satu sumber waktu internal yang konsisten. Tambahkan direktif allow pada konfigurasi Chrony untuk subnet yang boleh mengambil waktu dari server ini.
sudo nano /etc/chrony/conf.d/local-ntp-server.conf
Isi berkas tersebut dengan subnet jaringan lokalmu, misalnya seperti berikut untuk jaringan 192.168.1.0/24.
allow 192.168.1.0/24
Simpan, restart Chrony, lalu buka port NTP di firewall. NTP memakai UDP port 123.
sudo systemctl restart chrony
sudo ufw allow 123/udp
Di sisi klien, arahkan Chrony atau systemd-timesyncd ke alamat IP server lokal ini sebagai sumber waktunya. Batasi direktif allow hanya untuk subnet yang kamu kelola, karena server NTP yang terbuka ke internet bisa disalahgunakan untuk serangan amplifikasi.
Sinkronisasi waktu adalah kontrol yang harus berjalan terus-menerus, bukan sekali pasang lalu dilupakan. Buatlah pemantauan sederhana supaya drift yang membesar ketahuan sebelum menjadi masalah. Perintah berikut bisa dijalankan berkala atau dijadwalkan lewat cron dan hasilnya disimpan sebagai bukti.
chronyc tracking >> /var/log/chrony-tracking.log
journalctl -u chrony --since "7 days ago" | grep -i "system clock" | tail -20
Selain itu, simpan tiga artefak berikut di tempat yang aman. Pertama, salinan berkas konfigurasi Chrony beserta tanggal perubahannya. Kedua, tangkapan keluaran chronyc tracking secara berkala yang menunjukkan selisih jam tetap kecil. Ketiga, catatan singkat yang menyebutkan sumber waktu yang dipakai, penanggung jawabnya, dan apa yang dilakukan bila sinkronisasi gagal. Ketiga artefak ini adalah bukti yang biasanya diminta auditor untuk kontrol A.8.17, dan semuanya bisa kamu hasilkan dari perintah yang sudah ada di panduan ini.
Bila kamu sedang mengeraskan server baru, gabungkan panduan ini dengan langkah mengamankan VPS Ubuntu baru supaya fondasi keamanannya lengkap. Log yang dihasilkan server yang jamnya akurat juga lebih mudah diolah, misalnya dengan mengatur rotasi log Docker agar disk tidak penuh diam-diam.
Untuk satu server dengan kebutuhan biasa, systemd-timesyncd sudah cukup karena ringan dan mudah dipakai. Namun Chrony lebih akurat, lebih cepat pulih setelah koneksi terputus, dan satu-satunya pilihan bila kamu ingin servermu sekaligus melayani waktu untuk mesin lain. Itulah alasan panduan ini memakai Chrony.
Pada VPS yang sehat, selisih di bawah beberapa milidetik adalah kondisi normal. Selisih yang terus membesar hingga puluhan milidetik atau lebih menandakan ada masalah, misalnya sumber waktu tidak terjangkau, firewall memblokir UDP port 123, atau ada layanan waktu lain yang berjalan bersamaan.
Tidak perlu. Sejak Ubuntu 25.10, Chrony sudah terinstal sebagai layanan waktu bawaan. Kamu cukup memeriksa statusnya dengan chronyc tracking dan menyesuaikan sumber waktunya bila perlu.
Artikel ini adalah panduan implementasi teknis yang ditulis secara independen dan bukan merupakan dokumen resmi, afiliasi, atau dukungan dari ISO maupun BSN. Untuk kebutuhan audit formal, selalu mengacu ke dokumen standar ISO/IEC 27001:2022 resmi yang diterbitkan oleh ISO.