SSD Nodes Learn 🎉 VPS mulai $5.50/bln
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-13

Cara FreeBSD Menangani Pembaruan Keamanan

Pelajari perbedaan freebsd-update untuk sistem dasar dan pkg audit untuk package. Keduanya memakai feed keamanan terpisah, jadi harus dipantau dan dijalankan.

Cara FreeBSD menangani pembaruan keamanan

FreeBSD menangani pembaruan keamanan dengan dua alat terpisah karena server FreeBSD terdiri atas dua bagian yang terpisah. Sistem dasar, yaitu kernel dan userland yang disertakan dalam rilis, ditambal dengan freebsd-update. Semua yang Anda instal di atasnya adalah package, dan package ditambal dengan pkg. Jalankan salah satunya dan abaikan yang lain, maka setengah dari mesin tetap tidak ditambal, dan tidak ada komponen pada sistem yang akan memberi tahu Anda.

SSD Nodes tidak menyediakan image FreeBSD. Paket kami berjalan di Linux. Tulisan ini tetap tersedia karena pembacanya sama: orang yang mengelola server Ubuntu dan Debian kami juga menjalankan FreeBSD pada firewall atau pada satu mesin yang mereka warisi. Model penambalan terpisah ini sering mengecoh administrator Linux, sehingga bagian inilah yang perlu didokumentasikan. Setiap command, format advisory, dan tanggal dukungan di bawah ini telah diperiksa berdasarkan halaman keamanan FreeBSD dan halaman manual proyek tersebut pada Agustus 2026.

Satu catatan sebelum menjalankan command. FreeBSD tidak memasang sudo dalam sistem dasar. Semua langkah di sini memerlukan root. Gunakan su -, atau instal sudo atau doas dari package terlebih dahulu.

Sistem dasar dan paket adalah dua dunia yang terpisah

Di Ubuntu, apt mengelola seluruh mesin. Kernel, openssl, nginx, dan alat Anda sendiri semuanya hadir sebagai file .deb dari satu alat, dan apt upgrade memindahkan semuanya secara bersamaan.

FreeBSD membagi sistem menjadi dua bagian. Sistem dasar dibangun sebagai satu unit dan diberi versi sebagai satu unit: 15.1-RELEASE-p3 adalah satu nomor yang mencakup kernel, pustaka C, sshd, dan salinan OpenSSL di /usr/lib. Tidak ada satu pun di antaranya yang berasal dari pkg. Semua komponen lainnya berada di bawah /usr/local, hadir sebagai paket biner yang dibangun dari pohon ports, dan memiliki versinya sendiri.

Karena itu, satu mesin dapat memiliki dua salinan OpenSSL: salinan sistem dasar di /usr/lib, yang hanya ditambal oleh freebsd-update, dan salinan paket di /usr/local/lib, yang hanya ditambal oleh pkg. Salinan yang digunakan program bergantung pada salinan yang ditautkan saat program tersebut dibangun, dan perangkat lunak yang diinstal dari paket biasanya ditautkan ke salinan paket. Menambal salah satunya tidak memperbarui salinan lainnya.

Tiga perintah berikut menunjukkan kondisi sistem Anda:

freebsd-version -u
freebsd-version -k
uname -r

freebsd-version -u mencetak tingkat patch userland yang terinstal. freebsd-version -k mencetak tingkat patch kernel yang terinstal, dan freebsd-version(1) menjelaskan secara tegas mengapa nilainya tidak sama dengan uname: "jika kernel baru telah diinstal tetapi sistem belum di-reboot, freebsd-version akan mencetak versi dan tingkat patch kernel baru". uname -r mencetak kernel yang sedang berjalan. Ada juga freebsd-version -r, yang mencetak kernel yang sedang berjalan tetapi "tidak dipengaruhi oleh variabel lingkungan". Hal ini penting di dalam jail, tempat UNAME_r sering diatur ke nilai lain.

Pemberitahuan Keamanan dan Pemberitahuan Errata

FreeBSD Security Team menerbitkan dua jenis pemberitahuan. Keduanya memiliki arti yang berbeda.

Security Advisory membahas kerentanan keamanan pada sistem dasar. Pengidentifikasinya berbentuk seperti FreeBSD-SA-26:55.elf: huruf SA, tahun dengan dua digit, nomor urut pada tahun tersebut, lalu komponen yang terdampak. FreeBSD-SA-26:52.if_wg dan FreeBSD-SA-26:50.kqueue diterbitkan pada 2026-07-29. Daftar lengkapnya tersedia pada halaman advisori FreeBSD.

Errata Notice membahas masalah kebenaran atau stabilitas yang perlu diterapkan ke cabang rilis, tetapi tidak berdampak pada keamanan. Formatnya sama, dengan EN menggantikan SA: FreeBSD-EN-26:19.zfs, FreeBSD-EN-26:18.tzdata. Pembaruan data zona waktu adalah contoh klasik. Data zona waktu yang sudah usang tidak dapat digunakan untuk menyerang sistem Anda, tetapi cap waktu akan tetap salah sampai Anda menerapkan perbaikannya. Errata tercantum pada halaman pemberitahuan errata FreeBSD.

Kedua jenis pemberitahuan ditandatangani dengan kunci PGP (pretty good privacy) milik Security Officer dan diarsipkan di security.FreeBSD.org. Keduanya dikirimkan ke mesin Anda melalui freebsd-update.

Bagian ini sering mengejutkan admin Linux. Tidak satu pun dari kedua jenis tersebut mencakup package. Halaman keamanan menyatakannya dengan jelas: masalah dalam FreeBSD Ports Collection "dicakup secara terpisah dalam dokumen FreeBSD VuXML". Kerentanan jarak jauh pada package nginx tidak akan pernah memperoleh nomor SA. Jika Anda hanya memantau feed advisori, Anda tidak akan pernah mengetahuinya.

Bagaimana cara mendapatkan informasi tentang pembaruan keamanan FreeBSD?

Daftar yang perlu diikuti adalah freebsd-security-notifications. Daftar ini dimoderasi dan memiliki volume pesan yang rendah. Isinya adalah advisory dan pemberitahuan errata. Berlangganan melalui lists.freebsd.org.

freebsd-announce juga dimoderasi dan memuat advisory bersama pengumuman rilis. Daftar ini sesuai jika Anda menginginkan satu daftar untuk semua informasi. freebsd-security adalah daftar diskusi. Daftar ini berguna untuk dibaca, tetapi bukan tempat untuk mengetahui bahwa Anda perlu memasang patch.

Semua daftar tersebut hanya memuat berita tentang base system. Kerentanan package tidak pernah dikirim melalui email. Untuk menemukannya, jalankan sebuah command.

pkg audit dan basis data di baliknya

VuXML, Vulnerabilities and Exposures Markup Language, adalah catatan proyek FreeBSD tentang masalah keamanan pada ports dan packages. Setiap entri mencantumkan package yang terdampak, rentang versi yang rentan, pengenal CVE (common vulnerabilities and exposures), dan deskripsi singkat. Seluruh kumpulan data dapat ditelusuri di indeks VuXML, yang diurutkan berdasarkan package, CVE, atau tanggal.

pkg audit adalah tool yang membacanya:

pkg audit -F

-F mengambil salinan basis data terbaru sebelum melakukan pemeriksaan. Gunakan setiap kali. Tanpa -F, pemeriksaan dilakukan terhadap salinan yang sudah ada di mesin, yang mungkin telah kedaluwarsa selama berbulan-bulan. Karena itu, hasil bersih tidak berarti apa-apa. Perintah ini membandingkan versi setiap package yang terpasang dengan setiap entri VuXML, menampilkan setiap kecocokan beserta nomor CVE dan tautan ke halaman VuXML, lalu mengakhiri output dengan baris jumlah yang menunjukkan berapa banyak masalah ditemukan pada berapa banyak package yang terpasang.

Dua flag lain dari pkg-audit(8) juga perlu diketahui. pkg audit -r juga “menampilkan package yang bergantung pada package rentan dan karena itu mungkin ikut rentan”, sehingga Anda dapat mengetahui bahwa library yang rentan berdampak karena enam hal yang terpasang melakukan link ke library tersebut. pkg audit -R menampilkan hasil yang sama dalam JSON atau format lain yang dapat diproses mesin. Format ini digunakan sebagai input untuk pemeriksaan monitoring.

Package pkg memasang script periodik di /usr/local/etc/periodic/security/410.pkg-audit. Script ini dijalankan sebagai bagian dari pemeriksaan keamanan harian dan mengirimkan hasilnya melalui email kepada root. Pastikan fitur ini aktif dengan menambahkan satu baris di /etc/periodic.conf:

daily_status_security_pkgaudit_enable="YES"

Email harian tersebut adalah hal yang paling mendekati kebiasaan unattended-upgrades di Ubuntu pada FreeBSD. Perbedaannya adalah inti pembahasannya: unattended-upgrades memasang perbaikan saat Anda tidur, sedangkan pkg audit hanya memberi tahu bahwa perbaikan diperlukan. pkg audit hanya membuat laporan. Tool ini tidak pernah menerapkan patch. Pada sistem FreeBSD standar, tidak ada komponen yang memasang pembaruan keamanan tanpa tindakan Anda.

Memperbaiki paket yang rentan

pkg update
pkg upgrade

Tidak ada pocket khusus keamanan di repositori paket FreeBSD. Ubuntu dapat mengambil paket hanya dari noble-security dan membiarkan paket lainnya pada versinya masing-masing. FreeBSD tidak memiliki mekanisme yang setara. Karena itu, memperbaiki satu paket yang rentan berarti menggunakan versi yang saat ini ditawarkan repositori, beserta dependensi apa pun yang ikut diperbarui. Perlakukan patch paket sebagai perubahan, bukan sebagai tugas latar belakang.

Branch repositori yang Anda gunakan menentukan seberapa cepat perbaikan tersedia. Default-nya adalah branch quarterly, yang dijelaskan oleh handbook sebagai branch yang memberikan "pengalaman yang lebih dapat diprediksi dan stabil" dengan hanya menerima pembaruan non-fitur. Branch latest menggunakan versi terbaru dari semua paket. Jadi, ketika pkg audit -F melaporkan sebuah paket sebagai rentan dan pkg upgrade menyatakan tidak ada yang perlu dilakukan, perbaikan tersebut belum masuk ke branch Anda. Mekanisme inilah yang menyebabkan kebingungan tersebut.

Untuk memindahkan mesin ke branch latest, salin file repositori yang disertakan bersama sistem, lalu edit salinannya:

mkdir -p /usr/local/etc/pkg/repos
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf

Ubah quarterly menjadi latest pada baris url di salinan tersebut, lalu jalankan pkg update -f untuk mengambil katalog baru. Salin file tersebut, bukan mengetik nama repositori berdasarkan ingatan. Nama di dalam /etc/pkg/FreeBSD.conf adalah nama yang benar-benar digunakan sistem Anda, sedangkan file di bawah /usr/local/etc/pkg/repos hanya menimpa repositori yang namanya sama persis.

Menerapkan patch sistem dasar

freebsd-update fetch
freebsd-update install

fetch mengunduh patch untuk rilis Anda saat ini dan mencetak daftar file yang akan diubah. Jika tidak ada yang perlu dilakukan, perintah ini mencetak No updates needed to update system to 15.1-RELEASE-p3. lalu keluar. Jika ada yang perlu dilakukan, perintah ini berakhir dengan meminta Anda menjalankan perintah instalasi. Tidak ada perubahan yang diterapkan sebelum Anda menjalankan freebsd-update install, sehingga fetch aman dijalankan kapan saja.

freebsd-update(8) menyediakan pembaruan biner untuk versi ALPHA, BETA, RC, dan RELEASE, tetapi tidak untuk PRERELEASE, STABLE, atau CURRENT. Jika Anda menggunakan stable/15, Anda membangun sistem dari source, sehingga tool ini tidak menyediakan apa pun untuk Anda.

Otomatiskan pengunduhan, tetapi jalankan instalasi secara manual. Baris pada handbook untuk /etc/crontab:

@daily                                  root    freebsd-update cron

freebsd-update cron menunggu selama waktu acak antara 1 hingga 3600 detik, kemudian mengunduh pembaruan seperti yang dilakukan fetch, dan mengirim email kepada root jika ada pembaruan yang menunggu. Waktu tunggu acak ini mencegah semua mesin FreeBSD di Internet mengakses mirror pembaruan pada detik yang sama.

Ada dua hal dalam output yang sering membingungkan. src component not installed, skipped adalah hal normal pada server yang tidak memiliki source tree dan bukan merupakan error. Kumpulan komponen dikendalikan oleh baris Components dalam /etc/freebsd-update.conf, dan pilihannya adalah src, world, dan kernel.

Jika instalasi gagal, freebsd-update rollback menghapus pembaruan yang terakhir diinstal. Pada root ZFS, Anda dapat menggunakan cara yang lebih baik dengan membuat boot environment terlebih dahulu:

bectl create pre-patch
freebsd-update fetch install

Jika sistem yang telah diberi patch tidak dapat melakukan boot, pilih boot environment lama dari menu loader. Anda akan kembali ke kondisi semula. Opsi pemulihan ini merupakan salah satu alasan praktis untuk menggunakan ZFS sebagai sistem file root, dan hampir tidak memerlukan ruang disk tambahan sampai kedua environment tersebut berbeda.

Apakah rilis FreeBSD saya masih didukung?

Setiap rilis didukung selama jangka waktu tertentu. Jadwalnya diterbitkan sebagai tabel branch pada halaman keamanan. Per Agustus 2026, tabel tersebut berisi:

  • releng/15.1, yaitu 15.1-RELEASE, hingga 31 Maret 2027
  • releng/15.0, yaitu 15.0-RELEASE, hingga 30 September 2026
  • releng/14.4, yaitu 14.4-RELEASE, hingga 31 Desember 2026
  • stable/15 hingga 31 Desember 2029
  • stable/14 hingga 30 November 2028

Point release memiliki periode dukungan yang singkat. 15.0-RELEASE berakhir sekitar tujuh minggu setelah tulisan ini dibuat karena 15.1 telah dirilis dan menetapkan batas waktunya. Branch stable bertahan selama bertahun-tahun dan merupakan branch source yang tidak disediakan oleh freebsd-update.

Periksa sistem Anda dengan freebsd-version -u, lalu bandingkan hasilnya dengan tabel tersebut. freebsd-update juga memberikan peringatan. Saat tanggal akhir dukungan mendekat, fetch menampilkan:

WARNING: FreeBSD 15.0-RELEASE is approaching its End-of-Life date.
It is strongly recommended that you upgrade to a newer
release within the next 2 months.

Setelah tanggal tersebut terlewati, peringatan berubah menjadi WARNING: FreeBSD 15.0-RELEASE HAS PASSED ITS END-OF-LIFE DATE.. Rilis yang tidak didukung tetap dapat digunakan. Namun, rilis tersebut tidak lagi menerima advisory keamanan. Artinya, kerentanan berikutnya pada base system menjadi tanggung jawab Anda selamanya.

Untuk berpindah ke rilis yang lebih baru, jalankan freebsd-update -r 15.1-RELEASE upgrade, lalu freebsd-update install, kemudian reboot. Setelah itu, jalankan freebsd-update install sekali lagi, lalu pkg-static upgrade -f untuk menginstal ulang setiap package agar menggunakan library baru, kemudian jalankan freebsd-update install untuk terakhir kalinya. Handbook mencatat bahwa proses instalasi mungkin hanya terdiri dari dua fase, bukan tiga, bergantung pada apakah nomor versi library berubah. Jadwalkan maintenance window, lalu baca panduan penyiapan server FreeBSD 15 sebelum memulai.

Mulai ulang, atau cukup me-restart service?

FreeBSD menjawabnya dengan satu perbandingan:

freebsd-version -k
uname -r

freebsd-version -k adalah kernel pada disk. uname -r adalah kernel di memori. String yang berbeda berarti kernel baru telah diinstal, tetapi belum digunakan, sehingga Anda harus melakukan reboot. String yang sama berarti patch tidak mengubah kernel, sehingga reboot tidak memberikan manfaat.

Untuk patch pada userland, restart semua proses yang menggunakan kode yang telah diperbarui. Perbaikan pada OpenSSL dasar di /usr/lib tidak berpengaruh pada sshd yang dimulai tiga minggu lalu dan masih memetakan library lama ke dalam ruang alamatnya. File pada disk sudah baru. Proses yang sedang berjalan belum menggunakan file tersebut.

service sshd restart

Aturan yang sama berlaku untuk package. pkg upgrade mengganti binary pada disk, sedangkan proses yang sedang berjalan masih membuka binary lama. Karena itu, service nginx restart adalah langkah yang membuat perbaikan tersebut benar-benar berlaku.

Base system tidak memiliki padanan needrestart milik Debian. Karena itu, tidak ada prompt dan tidak ada daftar yang dikelola secara otomatis. Anda harus melacak service yang menautkan setiap library yang telah di-patch, atau melakukan reboot setelah patch apa pun yang menyentuh base library. Pada server dengan konfigurasi yang disimpan dalam version control, reboot adalah operasi rutin dan jauh lebih murah daripada mengira sistem sudah di-patch padahal belum.

Menambal mesin yang menjalankan jail

Jail menggunakan kernel host yang sama. Karena itu, advisori kernel merupakan masalah pada host, dan semua jail di mesin tersebut mewarisinya. Terapkan patch pada host lalu reboot. Setelah itu, pembaruan pada sisi kernel selesai untuk semua jail. Userland di dalam setiap jail merupakan instalasi terpisah dengan tingkat patch masing-masing, dan freebsd-version -j <jail> melaporkannya dari host. Paket di dalam jail juga terpisah, dan pkg -j <jail> audit -F mengauditnya tanpa perlu masuk ke jail. Pemisahan antara kernel bersama dan userland terpisah ini merupakan perbedaan struktural yang sama dengan yang membentuk perbandingan jail dengan container Docker.

Terjemahan Ubuntu

Setiap kebiasaan di FreeBSD memiliki padanan di Ubuntu. Karena itu, Anda dapat menjalankan prosedur yang sama di kedua arah.

  • Patch sistem dasar: freebsd-update fetch lalu freebsd-update install. Di Ubuntu, gunakan apt update && apt upgrade, yang mencakup sistem dasar dan semua komponen lainnya sekaligus.
  • Perangkat lunak pihak ketiga: pkg update && pkg upgrade di FreeBSD. Di Ubuntu, gunakan apt lagi.
  • Pemeriksaan kerentanan yang diketahui: pkg audit -F di FreeBSD. Di Ubuntu 24.04, perintah terdekatnya adalah pro security-status, yang menampilkan pembaruan keamanan untuk paket terpasang, termasuk konten Expanded Security Maintenance.
  • Instalasi otomatis: unattended-upgrades di Ubuntu menerapkan pembaruan keamanan untuk Anda. FreeBSD tidak menyediakan fitur yang setara. Karena itu, freebsd-update cron mengunduh dan mengirim email laporan, sementara Anda memasang pembaruan secara manual.
  • Umpan advisori: freebsd-security-notifications memuat item FreeBSD-SA dan FreeBSD-EN. ubuntu-security-announce memuat Ubuntu Security Notices.
  • Basis data kerentanan: VuXML untuk port dan paket FreeBSD. Gunakan pelacak CVE Ubuntu untuk paket Ubuntu.
  • Pemeriksaan kebutuhan reboot: freebsd-version -k terhadap uname -r di FreeBSD. Di Ubuntu, periksa keberadaan /var/run/reboot-required.
  • Periode dukungan: tabel branch pada halaman keamanan FreeBSD. Di Ubuntu, gunakan jadwal rilis dan pro security-status.

Prosedur dasarnya sama pada kedua sistem: berlangganan umpan, jalankan audit sesuai jadwal, lalu tentukan pembaruan yang akan dipasang dan waktu untuk melakukan restart. FreeBSD mengharuskan Anda menyatakan langkah kedua secara eksplisit karena sistem tersebut tidak akan melakukannya untuk Anda. Perbandingan Linux dan FreeBSD yang lebih luas sebagai platform server membahas perubahan lain saat Anda memindahkan workload di antara keduanya.

FAQ

Apakah freebsd-update juga menambal package saya?

Tidak. freebsd-update hanya mencakup base system, yaitu kernel dan userland yang disertakan dalam release tersebut. Software yang diinstal di bawah /usr/local berasal dari package dan ditambal dengan pkg upgrade. Jalankan pkg audit -F untuk mengetahui package yang terinstal dan memiliki kerentanan yang diketahui, karena advisory untuk base system tidak pernah menyebutkannya dan mailing list keamanan tidak pernah mengumumkannya.

Bagaimana cara mengetahui apakah update FreeBSD memerlukan reboot?

Bandingkan freebsd-version -k dengan uname -r. Perintah pertama menampilkan kernel yang terinstal di disk, termasuk kernel yang baru ditulis tetapi belum digunakan untuk boot. Perintah kedua menampilkan kernel yang sedang berjalan. String yang berbeda berarti Anda perlu melakukan reboot. String yang sama berarti patch hanya memperbarui userland, jadi restart service yang terdampak, misalnya service sshd restart, karena proses yang sedang berjalan tetap memetakan library lama sampai proses tersebut direstart.

Apa perbedaan antara Security Advisory dan Errata Notice?

Security Advisory, seperti FreeBSD-SA-26:55.elf, memperbaiki kerentanan keamanan pada base system. Errata Notice, seperti FreeBSD-EN-26:18.tzdata, memperbaiki masalah kebenaran atau stabilitas yang tidak berdampak pada keamanan, seperti data zona waktu yang sudah kedaluwarsa. Keduanya menggunakan pola tahun, titik dua, nomor urut, komponen. Keduanya ditandatangani oleh Security Officer dan dikirim melalui freebsd-update, serta tidak mencakup software yang diinstal dari ports atau package.

Apakah FreeBSD memiliki padanan unattended-upgrades?

Tidak dalam base system. freebsd-update cron mengunduh patch base system yang tertunda dan mengirim email kepada root, tetapi tidak pernah menginstalnya. Script periodic yang diinstal oleh pkg menjalankan pkg audit setiap hari dan mengirimkan hasilnya melalui email, tetapi tidak pernah melakukan upgrade apa pun. Instalasi tanpa pengawasan harus Anda buat sendiri dengan cron job. Karena upgrade package FreeBSD mengambil versi terbaru, bukan backport yang hanya berisi perbaikan keamanan, sebagian besar administrator membaca email tersebut lalu melakukan instalasi secara manual.

Bagaimana cara memeriksa apakah release FreeBSD saya masih didukung?

Jalankan freebsd-version -u untuk melihat versi userland, lalu bandingkan dengan tabel branch yang didukung pada halaman keamanan FreeBSD. Point release memiliki masa dukungan yang singkat: per Agustus 2026, 15.0-RELEASE berakhir pada 30 September 2026, sedangkan 15.1-RELEASE berlanjut hingga 31 Maret 2027. freebsd-update fetch memperingatkan Anda saat tanggal tersebut mendekat. Setelah tanggal itu terlewati, perintah tersebut menampilkan baris yang menyatakan bahwa release tersebut HAS PASSED ITS END-OF-LIFE DATE. Setelah itu, tidak ada advisory lebih lanjut yang berlaku untuk Anda.

#freebsd#security#patching#advisories#pkg