Cara Kemas Kini Keselamatan FreeBSD Dijalankan
Ketahui cara mengemas kini sistem FreeBSD menggunakan freebsd-update dan pkg audit. Anda perlu menguruskan dua alat berasingan untuk menampal sistem asas serta pakej perisian.
Bagaimana FreeBSD mengendalikan kemas kini keselamatan
FreeBSD mengendalikan kemas kini keselamatan menggunakan dua alat yang berasingan, kerana pelayan FreeBSD terdiri daripada dua bahagian yang berbeza. Sistem asas, iaitu kernel dan userland yang disertakan bersama keluaran, ditampal menggunakan freebsd-update. Segala perisian yang anda pasang di atasnya dianggap sebagai pakej, dan pakej ditampal menggunakan pkg. Jika anda menjalankan satu alat tetapi mengabaikan yang lain, separuh daripada mesin anda akan kekal tanpa tampalan, dan tiada apa-apa pada mesin tersebut yang akan memaklumkan anda tentang perkara ini.
SSD Nodes tidak menawarkan imej FreeBSD. Pelan kami menjalankan Linux. Catatan ini disediakan kerana terdapat pertindihan pengguna yang menyeluruh: mereka yang menjalankan pelayan Ubuntu dan Debian kami juga menjalankan FreeBSD pada firewall atau pada mesin yang mereka warisi. Model tampalan berasingan ini merupakan bahagian yang sering mengelirukan pentadbir Linux, jadi ia adalah perkara yang perlu dicatatkan. Setiap arahan, format nasihat dan tarikh sokongan di bawah telah disemak dengan halaman keselamatan FreeBSD serta halaman manual projek tersebut pada Ogos 2026.
Satu nota sebelum menjalankan arahan. FreeBSD tidak memasang sudo dalam sistem asas. Semua arahan di sini memerlukan akses root. Gunakan su -, atau pasang sudo atau doas daripada pakej terlebih dahulu.
Sistem asas dan pakej adalah entiti yang berasingan
Pada Ubuntu, apt menguasai keseluruhan mesin. Kernel, openssl, nginx dan alatan anda sendiri semuanya tiba sebagai fail .deb daripada satu alat, dan apt upgrade menguruskan kesemuanya secara serentak.
FreeBSD membahagikan perkara ini kepada dua bahagian. Sistem asas dibina sebagai satu unit dan diletakkan di bawah satu versi: 15.1-RELEASE-p3 ialah nombor tunggal yang merangkumi kernel, pustaka C, sshd dan salinan OpenSSL dalam /usr/lib. Tiada satu pun daripadanya datang daripada pkg. Segala-galanya berada di bawah /usr/local, tiba sebagai pakej binari yang dibina daripada pokok ports, dan membawa versinya sendiri.
Oleh itu, satu mesin boleh menyimpan dua salinan OpenSSL: salinan asas dalam /usr/lib, yang ditampal hanya oleh freebsd-update, dan salinan pakej dalam /usr/local/lib, yang ditampal hanya oleh pkg. Salinan mana yang digunakan oleh sesuatu program bergantung pada salinan yang dipautkan dengannya, dan perisian yang dipasang daripada pakej biasanya memautkan salinan pakej. Menampal satu bahagian tidak memberi kesan kepada bahagian yang lain.
Tiga arahan memberitahu anda kedudukan sistem anda:
freebsd-version -u
freebsd-version -k
uname -rfreebsd-version -u mencetak tahap tampalan (patch level) bagi userland yang dipasang. freebsd-version -k mencetak tahap tampalan bagi kernel yang dipasang, dan freebsd-version(1) menjelaskan dengan tepat mengapa ia tidak sama dengan uname: "jika kernel baharu telah dipasang tetapi sistem belum lagi but semula, freebsd-version akan mencetak versi dan tahap tampalan kernel baharu tersebut". uname -r mencetak kernel yang sedang berjalan sekarang. Terdapat juga freebsd-version -r, yang mencetak kernel yang sedang berjalan tetapi "tidak terjejas oleh pemboleh ubah persekitaran", yang penting di dalam jail di mana UNAME_r sering ditetapkan kepada nilai lain.
Nasihat Keselamatan dan Notis Errata
Terdapat dua jenis notis yang dikeluarkan oleh Pasukan Keselamatan FreeBSD, dan kedua-duanya membawa maksud yang berbeza.
Nasihat Keselamatan (Security Advisory) merangkumi kerentanan keselamatan dalam sistem asas. Pengecamnya kelihatan seperti FreeBSD-SA-26:55.elf: huruf SA, dua digit tahun, nombor yang meningkat sepanjang tahun tersebut, kemudian komponen yang terjejas. FreeBSD-SA-26:52.if_wg dan FreeBSD-SA-26:50.kqueue kedua-duanya diterbitkan pada 2026-07-29. Senarai penuh terdapat pada halaman nasihat FreeBSD.
Notis Errata merangkumi masalah ketepatan atau kestabilan yang perlu ditolak ke cawangan keluaran, tanpa sebarang impak keselamatan. Bentuknya sama, dengan EN menggantikan SA: FreeBSD-EN-26:19.zfs, FreeBSD-EN-26:18.tzdata. Kemas kini data zon waktu adalah contoh klasik. Tiada sesiapa boleh menyerang anda dengan data zon waktu yang lapuk, namun cap masa anda akan menjadi salah sehingga anda mengambil pembetulan tersebut. Errata disenaraikan pada halaman notis errata FreeBSD.
Kedua-dua jenis notis ditandatangani dengan kunci PGP (pretty good privacy) Pegawai Keselamatan dan diarkibkan di security.FreeBSD.org, serta kedua-duanya dihantar ke mesin anda melalui freebsd-update.
Berikut adalah bahagian yang sering mengelirukan pentadbir Linux. Tiada satu pun daripada jenis notis ini merangkumi pakej. Halaman keselamatan menyatakan perkara ini dengan jelas: masalah dalam FreeBSD Ports Collection "dilindungi secara berasingan dalam dokumen VuXML FreeBSD". Lubang keselamatan jauh dalam pakej nginx tidak akan menerima nombor SA. Jika suapan nasihat adalah satu-satunya perkara yang anda pantau, anda tidak akan mengetahui tentangnya.
Bagaimanakah cara untuk mengetahui tentang kemas kini keselamatan FreeBSD?
Senarai yang perlu disertai ialah freebsd-security-notifications. Senarai ini disederhanakan dan mempunyai trafik yang rendah, serta mengandungi notis nasihat dan errata itu sendiri. Langgan di lists.freebsd.org.
freebsd-announce juga disederhanakan dan mengandungi notis nasihat berserta pengumuman keluaran, jadi ia sesuai jika anda mahukan satu senarai untuk segala-galanya. freebsd-security ialah senarai perbincangan. Ia merupakan bahan bacaan yang berguna, namun ia bukanlah tempat untuk mengetahui bahawa anda perlu melakukan patching.
Semua senarai ini hanya membawa berita mengenai sistem asas. Kerentanan pakej tidak akan dihantar melalui e-mel. Anda perlu mencarinya dengan menjalankan satu arahan.
pkg audit, dan pangkalan data di sebaliknya
VuXML, iaitu Vulnerabilities and Exposures Markup Language, merupakan rekod projek FreeBSD bagi masalah keselamatan dalam ports dan packages. Setiap entri menamakan pakej yang terjejas, julat versi yang terdedah, pengecam CVE (common vulnerabilities and exposures), serta penerangan ringkas. Keseluruhan set ini boleh dilayari di indeks VuXML, yang disusun mengikut pakej, CVE, atau tarikh.
pkg audit ialah alat yang membacanya:
pkg audit -F-F mengambil salinan baharu pangkalan data sebelum melakukan semakan. Gunakannya setiap kali. Tanpa -F, anda memadankan dengan apa jua salinan yang sedia ada pada mesin, yang mungkin sudah lapuk berbulan-bulan, jadi hasil yang bersih tidak membawa sebarang makna. Perintah ini membandingkan setiap versi pakej yang dipasang dengan setiap entri VuXML, mencetak setiap padanan dengan nombor CVE serta pautan ke halaman VuXML, kemudian diakhiri dengan baris kiraan yang memberitahu anda berapa banyak masalah yang ditemui dalam berapa banyak pakej yang dipasang.
Dua lagi flag daripada pkg-audit(8) perlu diketahui. pkg audit -r juga "mencetak pakej yang bergantung pada pakej terdedah dan oleh itu berpotensi terdedah juga", yang merupakan cara anda mengetahui bahawa sesuatu pustaka yang terdedah adalah penting kerana enam perkara yang dipasang memaut kepadanya. pkg audit -R mencetak hasil yang sama sebagai JSON atau format mesin lain, yang merupakan input untuk semakan pemantauan.
Pakej pkg memasang skrip berkala di /usr/local/etc/periodic/security/410.pkg-audit. Ia berjalan sebagai sebahagian daripada semakan keselamatan harian dan menghantar hasil melalui e-mel kepada root. Sahkan ia dihidupkan dengan baris dalam /etc/periodic.conf:
daily_status_security_pkgaudit_enable="YES"E-mel harian itu adalah perkara yang paling hampir dengan tabiat unattended-upgrades pada Ubuntu dalam FreeBSD, dan perbezaannya adalah tujuan utamanya: unattended-upgrades memasang pembaikan semasa anda tidur, manakala pkg audit hanya memberitahu anda bahawa pembaikan diperlukan. pkg audit melaporkan. Ia tidak pernah menampal (patch). Tiada apa-apa pada sistem FreeBSD standard yang memasang kemas kini keselamatan tanpa tindakan anda.
Membaiki pakej yang terdedah kepada kerentanan
pkg update
pkg upgradeTiada poket khusus keselamatan dalam repositori pakej FreeBSD. Ubuntu boleh menarik kemas kini daripada noble-security sahaja dan membiarkan pakej lain pada versi sedia ada. FreeBSD tidak mempunyai fungsi setara, jadi membaiki satu pakej yang terdedah bermakna anda perlu mengambil versi yang ditawarkan oleh repositori pada masa itu, berserta sebarang dependensi yang turut berubah. Rancang penampalan pakej sebagai satu perubahan yang disengajakan, bukan sebagai tugas latar belakang.
Cawangan repositori yang anda gunakan menentukan seberapa cepat sesuatu pembaikan sampai kepada anda. Tetapan lalai ialah cawangan quarterly, yang buku panduan jelaskan sebagai memberikan "pengalaman yang lebih stabil dan boleh diramal" dengan hanya menerima kemas kini bukan ciri baharu. Cawangan latest pula mengambil versi terbaharu bagi segala-galanya. Jadi, apabila pkg audit -F melaporkan sesuatu pakej sebagai terdedah dan pkg upgrade menyatakan tiada tindakan yang perlu diambil, ini bermakna pembaikan tersebut belum sampai ke cawangan anda, dan itulah mekanisme yang menyebabkan kekeliruan tersebut.
Untuk menukar mesin ke cawangan latest, salin fail repositori yang disertakan bersama sistem dan sunting salinan tersebut:
mkdir -p /usr/local/etc/pkg/repos
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.confTukar quarterly kepada latest dalam baris url pada salinan tersebut, kemudian jalankan pkg update -f untuk menarik katalog baharu. Salin fail tersebut daripada menaip nama repositori berdasarkan ingatan: nama di dalam /etc/pkg/FreeBSD.conf ialah nama yang sebenarnya digunakan oleh sistem anda, dan fail di bawah /usr/local/etc/pkg/repos hanya akan mengatasi repositori yang namanya sepadan dengan tepat.
Menggunakan tampalan sistem asas
freebsd-update fetch
freebsd-update installfetch memuat turun tampalan untuk keluaran semasa anda dan mencetak senarai fail yang akan diubah. Apabila tiada tindakan diperlukan, ia akan mencetak No updates needed to update system to 15.1-RELEASE-p3. dan keluar. Apabila terdapat tindakan yang perlu dilakukan, ia akan berakhir dengan arahan untuk menjalankan perintah pemasangan. Tiada apa-apa yang akan digunakan sehingga anda menjalankan freebsd-update install, jadi fetch selamat untuk dijalankan pada bila-bila masa.
freebsd-update(8) menyediakan kemas kini binari untuk versi ALPHA, BETA, RC dan RELEASE, dan bukan untuk PRERELEASE, STABLE atau CURRENT. Jika anda menjejaki stable/15, anda membina daripada sumber, dan alat ini tidak mempunyai apa-apa untuk anda.
Automasikan muat turun dan kekalkan pemasangan secara manual. Baris dalam buku panduan untuk /etc/crontab:
@daily root freebsd-update cronfreebsd-update cron akan menunggu dalam tempoh masa rawak antara 1 hingga 3600 saat, kemudian memuat turun kemas kini seperti yang dilakukan oleh fetch, dan menghantar e-mel kepada root apabila terdapat sesuatu yang menunggu. Tempoh tunggu rawak tersebut bertujuan supaya setiap mesin FreeBSD di internet tidak mengakses cermin kemas kini pada saat yang sama.
Dua perkara dalam output sering mengelirukan pengguna. src component not installed, skipped adalah perkara biasa pada pelayan yang tidak mempunyai pepohon sumber, dan ia bukan satu ralat. Set komponen dikawal oleh baris Components dalam /etc/freebsd-update.conf, dan pilihan yang ada ialah src, world dan kernel.
Jika pemasangan tidak berjalan lancar, freebsd-update rollback akan menyahpasang kemas kini yang paling baru dipasang. Pada root ZFS, anda boleh melakukan tindakan yang lebih baik dengan mengambil persekitaran but (boot environment) terlebih dahulu:
bectl create pre-patch
freebsd-update fetch installJika sistem yang telah ditampal tidak dapat but, pilih persekitaran but lama daripada menu pemuat (loader menu) dan anda akan kembali ke keadaan asal. Laluan keluar tersebut adalah salah satu sebab praktikal untuk menjalankan ZFS sebagai sistem fail root, dan ia hampir tidak menggunakan ruang cakera sehingga kedua-dua persekitaran tersebut menjadi berbeza.
Adakah keluaran FreeBSD saya masih disokong?
Setiap keluaran disokong untuk tempoh masa tetap yang diterbitkan sebagai jadual cawangan pada halaman keselamatan. Setakat Ogos 2026, jadual tersebut menunjukkan:
releng/15.1, iaitu 15.1-RELEASE, sehingga 31 Mac 2027releng/15.0, iaitu 15.0-RELEASE, sehingga 30 September 2026releng/14.4, iaitu 14.4-RELEASE, sehingga 31 Disember 2026stable/15sehingga 31 Disember 2029stable/14sehingga 30 November 2028
Keluaran titik (point releases) mempunyai tempoh sokongan yang singkat. 15.0-RELEASE akan tamat tempoh kira-kira tujuh minggu selepas catatan ini ditulis, kerana 15.1 telah dilancarkan dan menetapkan tempoh tamatnya. Cawangan stabil bertahan selama bertahun-tahun, dan ia merupakan cawangan sumber yang tidak disediakan oleh freebsd-update.
Semak keluaran anda sendiri dengan freebsd-version -u dan bandingkannya dengan jadual tersebut. freebsd-update juga akan memberi amaran kepada anda. Apabila menghampiri tarikh tersebut, fetch akan memaparkan:
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.Apabila tarikh tersebut berlalu, amaran akan menjadi WARNING: FreeBSD 15.0-RELEASE HAS PASSED ITS END-OF-LIFE DATE.. Keluaran yang tidak disokong akan terus berfungsi. Ia akan berhenti menerima nasihat keselamatan, yang bermaksud kerentanan asas seterusnya akan menjadi tanggungjawab anda selama-lamanya.
Proses menaik taraf keluaran adalah dengan freebsd-update -r 15.1-RELEASE upgrade, kemudian freebsd-update install, diikuti dengan but semula, kemudian freebsd-update install buat kali kedua, kemudian pkg-static upgrade -f untuk memasang semula setiap pakej berdasarkan pustaka baharu, dan akhirnya freebsd-update install. Buku panduan menyatakan bahawa mungkin hanya terdapat dua fasa pemasangan dan bukannya tiga, bergantung kepada sama ada terdapat nombor versi pustaka yang dikemas kini. Tetapkan tempoh penyelenggaraan, dan baca panduan penyediaan pelayan FreeBSD 15 sebelum anda bermula.
Reboot, atau adakah memulakan semula servis sudah memadai?
FreeBSD menjawab perkara ini dengan satu perbandingan:
freebsd-version -k
uname -rfreebsd-version -k ialah kernel pada cakera. uname -r ialah kernel dalam memori. Rentetan yang berbeza bermakna kernel baharu telah dipasang dan anda tidak menjalankannya, jadi lakukan reboot. Rentetan yang sepadan bermakna tampalan (patch) tidak menyentuh kernel, dan reboot tidak memberikan sebarang manfaat.
Bagi tampalan userland, mulakan semula apa sahaja yang menggunakan kod yang telah ditampal. Pembaikan pada OpenSSL asas dalam /usr/lib tidak memberi kesan kepada sshd yang bermula tiga minggu lalu dan masih mempunyai pustaka lama yang dipetakan ke dalam ruang alamatnya. Fail pada cakera adalah baharu. Proses yang sedang berjalan pula tidak.
service sshd restartPeraturan yang sama merangkumi pakej. pkg upgrade menggantikan binari pada cakera sementara proses yang sedang berjalan masih membuka fail lama, jadi service nginx restart ialah langkah yang menjadikan pembaikan itu berkesan.
Sistem asas tidak mempunyai setara bagi needrestart dalam Debian, jadi tiada apa-apa yang akan menggesa anda dan tiada senarai yang disimpan. Sama ada anda menjejaki servis mana yang memautkan pustaka yang telah ditampal, atau lakukan reboot selepas sebarang tampalan yang menyentuh pustaka asas. Pada pelayan yang konfigurasinya berada dalam kawalan versi, reboot adalah operasi rutin, dan ia jauh lebih murah daripada mempercayai anda telah menampal sistem sedangkan sebenarnya tidak.
Menampal mesin yang menjalankan jail
Jail berkongsi kernel hos, oleh itu nasihat keselamatan kernel merupakan masalah hos dan setiap jail pada mesin tersebut mewarisinya. Tampal hos dan but semula, maka bahagian kernel selesai untuk kesemuanya. Userland di dalam setiap jail adalah pemasangan berasingan dengan tahap tampalan tersendiri, dan freebsd-version -j <jail> melaporkannya daripada hos. Pakej di dalam jail juga berasingan, dan pkg -j <jail> audit -F mengauditnya tanpa perlu memasuki jail tersebut. Pembahagian antara kernel yang dikongsi dan userland yang berasingan ini adalah perbezaan struktur yang sama yang membentuk bagaimana jail dibandingkan dengan bekas Docker.
Terjemahan Ubuntu
Setiap tabiat FreeBSD mempunyai padanan, jadi anda boleh membawa rutin tersebut ke mana-mana arah.
- Tampalan sistem asas:
freebsd-update fetchkemudianfreebsd-update install. Pada Ubuntu,apt update && apt upgrade, yang merangkumi sistem asas dan segala-galanya sekali gus. - Perisian pihak ketiga:
pkg update && pkg upgradepada FreeBSD. Pada Ubuntu,aptsekali lagi. - Semakan kerentanan yang diketahui:
pkg audit -Fpada FreeBSD. Pada Ubuntu 24.04 arahan yang paling hampir ialahpro security-status, yang memaparkan kemas kini keselamatan untuk pakej yang dipasang termasuk kandungan Expanded Security Maintenance. - Pemasangan automatik:
unattended-upgradespada Ubuntu menggunakan kemas kini keselamatan untuk anda. FreeBSD tidak menyediakan fungsi yang setara, jadifreebsd-update cronmemuat turun dan menghantar e-mel sementara anda memasangnya secara manual. - Suapan nasihat:
freebsd-security-notificationsmembawa item FreeBSD-SA dan FreeBSD-EN.ubuntu-security-announcemembawa Ubuntu Security Notices. - Pangkalan data kerentanan: VuXML untuk port dan pakej FreeBSD. Penjejak CVE Ubuntu untuk pakej Ubuntu.
- Semakan but semula:
freebsd-version -kberbandinguname -rpada FreeBSD. Kehadiran/var/run/reboot-requiredpada Ubuntu. - Tetingkap sokongan: jadual cawangan pada halaman keselamatan FreeBSD. Jadual keluaran dan
pro security-statuspada Ubuntu.
Rutin asas adalah sama pada kedua-dua sistem: melanggan suapan, menjalankan audit mengikut jadual, kemudian memutuskan perkara yang perlu dipasang dan bila untuk memulakan semula. FreeBSD hanya memaksa anda menyatakan separuh kedua secara jelas, kerana ia tidak akan melakukannya untuk anda. Perbandingan yang lebih luas antara Linux dan FreeBSD sebagai platform pelayan merangkumi perkara lain yang berubah apabila anda memindahkan beban kerja antara kedua-duanya.
FAQ
Adakah freebsd-update turut menampal pakej saya?
Tidak. freebsd-update hanya merangkumi sistem asas, iaitu kernel dan userland yang disertakan bersama keluaran tersebut. Perisian yang dipasang di bawah /usr/local datang daripada pakej, dan ia ditampal menggunakan pkg upgrade. Jalankan pkg audit -F untuk mencari pakej terpasang yang mempunyai kerentanan yang diketahui, kerana nasihat keselamatan sistem asas tidak pernah menyebutnya dan senarai mel keselamatan tidak pernah mengumumkannya.
Bagaimanakah saya tahu sama ada kemas kini FreeBSD memerlukan but semula?
Bandingkan freebsd-version -k dengan uname -r. Perintah pertama memaparkan kernel yang dipasang pada cakera, termasuk yang baru ditulis tetapi belum dibotkan. Perintah kedua memaparkan kernel yang sedang berjalan. Rentetan yang berbeza bermakna anda perlu melakukan but semula. Rentetan yang sepadan bermakna tampalan tersebut hanya melibatkan userland, jadi mulakan semula servis yang terjejas, contohnya service sshd restart, kerana proses yang sedang berjalan mengekalkan pustaka lama dalam memori sehingga ia dimulakan semula.
Apakah perbezaan antara Security Advisory dan Errata Notice?
Security Advisory, seperti FreeBSD-SA-26:55.elf, membaiki kerentanan keselamatan dalam sistem asas. Errata Notice, seperti FreeBSD-EN-26:18.tzdata, membaiki masalah ketepatan atau kestabilan yang tidak mempunyai impak keselamatan, seperti data zon waktu yang lapuk. Kedua-duanya menggunakan corak tahun, titik bertindih, nombor urutan, komponen. Kedua-duanya ditandatangani oleh Pegawai Keselamatan dan dihantar melalui freebsd-update, dan tiada satu pun yang merangkumi perisian yang dipasang daripada ports atau pakej.
Adakah terdapat setara unattended-upgrades untuk FreeBSD?
Tiada dalam sistem asas. freebsd-update cron memuat turun tampalan asas yang belum selesai dan menghantar e-mel kepada root, dan ia tidak pernah memasangnya. Skrip berkala yang dipasang oleh pkg menjalankan pkg audit setiap hari dan menghantar hasilnya melalui e-mel, dan ia tidak menaik taraf apa-apa. Pemasangan tanpa pengawasan adalah sesuatu yang perlu anda bina sendiri menggunakan cron job, dan memandangkan naik taraf pakej FreeBSD mengambil versi terbaharu dan bukannya backport keselamatan sahaja, kebanyakan pentadbir membaca e-mel dan memasangnya secara manual.
Bagaimanakah saya menyemak sama ada keluaran FreeBSD saya masih disokong?
Jalankan freebsd-version -u untuk versi userland anda, kemudian bandingkan dengan jadual cawangan yang disokong pada halaman keselamatan FreeBSD. Keluaran titik mempunyai tempoh masa yang singkat: sehingga Ogos 2026, 15.0-RELEASE berakhir pada 30 September 2026 manakala 15.1-RELEASE berjalan sehingga 31 Mac 2027. freebsd-update fetch memberi amaran kepada anda apabila tarikh tersebut semakin hampir, dan sebaik sahaja tarikh tersebut berlalu, ia akan mencetak baris yang menyatakan bahawa keluaran tersebut TELAH MELEPASI TARIKH TAMAT HAYATNYA. Selepas titik itu, tiada lagi nasihat keselamatan yang terpakai untuk anda.