Membangun disiplin keamanan sistem melalui siklus hidup patch yang terencana: melacak CVE, memprioritaskan kerentanan, menjalankan patch di maintenance window, dan memverifikasi hasilnya

Setelah episode 16 mengoptimalkan performa, sekarang kita membahas aspek yang sering bertabrakan dengan stabilitas: patch management. Server yang tidak pernah di-update adalah bom waktu — kerentanan yang diketahui publik bisa dieksploitasi begitu saja. Tapi server yang di-patch tanpa perencanaan juga berbahaya: update yang gagal atau merusak aplikasi bisa menumbangkan layanan.
Mengapa episode ini penting? Karena patch management adalah disiplin keseimbangan: keamanan vs ketersediaan. System Engineer yang baik bukan yang paling sering meng-update, melainkan yang paling terencana — tahu apa yang dipatch, mengapa, kapan, dan bagaimana memverifikasi. Episode ini membangun siklus hidup patch yang lengkap, dari pelacakan CVE sampai maintenance window.
CVE (Common Vulnerabilities and Exposures) adalah identifikasi publik untuk kerentanan. Skor keparahannya dinilai lewat CVSS (0-10). Sumber informasi yang wajib diikuti:
Cek kerentanan paket yang terinstall di sistem:
# Debian/Ubuntu
ubuntu-security-status
# RHEL/Rocky
dnf updateinfo list
# Opsi CLI umum (jika diinstall)
trivy image ghcr.io/corp/app-web:1.4.2
trivy fs /srv/appTidak semua CVE sama. Matriks prioritas sederhana:
| CVSS | Dampak ke Sistem Kita | Tindakan |
|---|---|---|
| 9.0-10.0 | Komponen yang terpapar internet | Segera (hari ini) |
| 7.0-8.9 | Komponen internal/kritis | Dalam 7 hari |
| 4.0-6.9 | Dampak rendah, terbatas | Dalam 30 hari |
| 0.0-3.9 | Informasional | Di jadwal rutin |
Kuncinya konteks: CVE kritis di komponen yang tidak terinstall = tidak relevan. CVE rendah di komponen yang terpapar publik tanpa mitigasi = tetap harus segera ditangani.
Important
Aturan emas sebelum patch: backup dan snapshot dulu. Patch terburuk yang bisa terjadi adalah yang merusak sistem — dan tanpa snapshot, kalian tidak punya cara cepat untuk kembali. Di cloud: aws ec2 create-snapshot; di VM: snapshot hypervisor. Ini sejalan dengan prinsip rollback dari episode 14.
Jangan pernah langsung patch produksi. Siklus yang benar:
Maintenance window adalah jendela waktu yang disepakati untuk perubahan sistem. Kapan yang baik?
Eksekusi patch di Debian/Ubuntu dan RHEL/Rocky:
# Debian/Ubuntu
sudo apt update
sudo apt upgrade -y
sudo reboot # jika ada kernel update
# RHEL/Rocky
sudo dnf update -y
sudo rebootPatch selesai bukan akhir. Verifikasi:
# 1. Sistem berjalan normal
uptime && systemctl is-system-running
# 2. Kernel terbaru benar-benar aktif
uname -r
# 3. Service inti tetap hidup
systemctl list-units --type=service --state=failed
# 4. Uji aplikasi
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/healthzPerhatikan: setelah apt upgrade, kernel baru hanya aktif setelah reboot. Jangan berasumsi kernel sudah berubah hanya karena paket ter-update.
Untuk patch keamanan otomatis, Debian/Ubuntu menyediakan unattended-upgrades:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgradesUnattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}${distro_codename}-updates";
};
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";Prinsipnya: otomatiskan patch keamanan, tetapi kelola update besar (minor/major) melalui maintenance window manual yang terencana.
Untuk K8s, patch dikelola per lapisan:
kubectl drain (episode 15), upgrade sistem, uncordon.rollout (episode 15).Jejak audit patch diperlukan untuk compliance (episode 20). Simpan:
# Daftar paket yang bisa di-update (untuk laporan bulanan)
apt list --upgradableInti yang harus dibawa pulang:
maintenance window yang jelas, dan verifikasi (uname -r, failed units).unattended-upgrades; update besar manual dan terencana.Di episode 18 selanjutnya kita mengeraskan sistem yang sudah aman: system hardening — CIS benchmarks, SELinux/AppArmor, dan minimal install. Sampai jumpa di episode 18!