SSD Nodes Learn 🎉 VPS از $5.50/ماه
راهنماها Matt Connorتوسط Matt Connor · به‌روزرسانی شده 2026-08-13

مدیریت به‌روزرسانی‌های امنیتی در FreeBSD

سیستم‌عامل FreeBSD از دو ابزار مجزا برای امنیت استفاده می‌کند. برای وصله سیستم پایه از freebsd-update و برای بسته‌های نصب شده از pkg audit استفاده کنید تا سیستم کاملاً امن بماند.

نحوه مدیریت به‌روزرسانی‌های امنیتی در FreeBSD

سیستم‌عامل FreeBSD به‌روزرسانی‌های امنیتی را با استفاده از دو ابزار مجزا مدیریت می‌کند، زیرا یک سرور FreeBSD از دو بخش کاملاً متفاوت تشکیل شده است. سیستم پایه (base system)، شامل هسته (kernel) و ابزارهای کاربری (userland) که همراه با نسخه اصلی منتشر شده‌اند، با استفاده از freebsd-update وصله می‌شوند. هر چیزی که پس از آن روی سیستم نصب کرده‌اید، یک بسته (package) محسوب می‌شود و این بسته‌ها با استفاده از pkg به‌روزرسانی می‌شوند. اگر یکی را اجرا کنید و دیگری را نادیده بگیرید، نیمی از سیستم وصله‌نشده باقی می‌ماند و هیچ هشداری نیز در سیستم دریافت نخواهید کرد.

سرویس SSD Nodes هیچ ایمیجی برای FreeBSD ارائه نمی‌دهد. پلن‌های ما بر پایه Linux هستند. این مطلب به این دلیل اینجا قرار گرفته که هم‌پوشانی مخاطبان کامل است: کسانی که سرورهای Ubuntu و Debian ما را مدیریت می‌کنند، اغلب روی فایروال‌ها یا دستگاه‌های خاصی که در اختیار دارند، از FreeBSD نیز استفاده می‌کنند. مدل وصله‌گذاری دوگانه، بخشی است که مدیران سیستم‌های Linux را به اشتباه می‌اندازد، بنابراین ارزش مستندسازی دارد. تمامی دستورات، فرمت‌های توصیه‌نامه امنیتی و تاریخ‌های پشتیبانی در ادامه، در آگوست 2026 با صفحه امنیتی FreeBSD و صفحات راهنمای (man pages) این پروژه مطابقت داده شده‌اند.

یک نکته پیش از اجرای دستورات: FreeBSD ابزار sudo را به‌صورت پیش‌فرض در سیستم پایه نصب نمی‌کند. تمامی موارد ذکر شده در اینجا نیازمند دسترسی root هستند. از su - استفاده کنید، یا ابتدا sudo یا doas را از طریق بسته‌ها نصب نمایید.

سیستم پایه و بسته‌ها دو دنیای مجزا هستند

در اوبونتو، apt مالک کل دستگاه است. هسته، openssl، nginx و ابزارهای شخصی شما همگی به عنوان فایل‌های .deb از یک ابزار واحد دریافت می‌شوند و apt upgrade همه آن‌ها را با هم جابه‌جا می‌کند.

FreeBSD این ساختار را به دو نیم تقسیم می‌کند. سیستم پایه به عنوان یک واحد ساخته شده و به عنوان یک واحد نسخه‌گذاری می‌شود: 15.1-RELEASE-p3 یک عدد واحد است که هسته، کتابخانه C، sshd و نسخه OpenSSL موجود در /usr/lib را پوشش می‌دهد. هیچ‌کدام از این‌ها از pkg نمی‌آیند. هر چیز دیگری در مسیر /usr/local قرار دارد، به صورت یک بسته باینری که از درخت ports ساخته شده وارد می‌شود و نسخه‌گذاری مخصوص به خود را دارد.

بنابراین یک سیستم می‌تواند دو نسخه از OpenSSL را در خود داشته باشد: نسخه پایه در /usr/lib که فقط توسط freebsd-update وصله می‌شود، و نسخه بسته‌ای در /usr/local/lib که فقط توسط pkg وصله می‌شود. اینکه یک برنامه از کدام نسخه استفاده می‌کند به این بستگی دارد که به کدام‌یک لینک شده باشد؛ نرم‌افزارهایی که از طریق بسته‌ها نصب می‌شوند معمولاً به نسخه بسته‌ای لینک می‌شوند. وصله کردن یکی، هیچ تأثیری بر دیگری ندارد.

سه دستور وضعیت فعلی شما را مشخص می‌کنند:

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

دستور freebsd-version -u سطح وصله (patch level) فضای کاربری (userland) نصب‌شده را چاپ می‌کند. دستور freebsd-version -k سطح وصله هسته نصب‌شده را چاپ می‌کند و freebsd-version(1) به صراحت توضیح می‌دهد که چرا این مقدار با uname متفاوت است: «اگر هسته جدیدی نصب شده باشد اما سیستم هنوز reboot نشده باشد، freebsd-version نسخه و سطح وصله هسته جدید را چاپ می‌کند». دستور uname -r هسته‌ای که در حال حاضر در حال اجراست را چاپ می‌کند. همچنین دستور freebsd-version -r وجود دارد که هسته در حال اجرا را چاپ می‌کند اما «تحت تأثیر متغیرهای محیطی قرار نمی‌گیرد»؛ این موضوع در داخل یک jail که UNAME_r اغلب روی مقدار دیگری تنظیم شده، اهمیت دارد.

توصیه‌های امنیتی و اطلاعیه‌های اصلاحیه

تیم امنیتی FreeBSD دو نوع اطلاعیه منتشر می‌کند که معانی متفاوتی دارند.

یک توصیه امنیتی (Security Advisory) به یک آسیب‌پذیری امنیتی در سیستم پایه می‌پردازد. شناسه آن به این صورت است: FreeBSD-SA-26:55.elf؛ شامل حروف SA، دو رقم سال، یک شماره که در طول آن سال افزایش می‌یابد و سپس مؤلفه تحت تأثیر. FreeBSD-SA-26:52.if_wg و FreeBSD-SA-26:50.kqueue هر دو در تاریخ 2026-07-29 منتشر شدند. لیست کامل در صفحه توصیه‌های FreeBSD قرار دارد.

یک اطلاعیه اصلاحیه (Errata Notice) به مشکلات مربوط به صحت عملکرد یا پایداری می‌پردازد که ارزش اعمال روی شاخه انتشار را دارند و تأثیر امنیتی ندارند. ساختار آن مشابه است، با این تفاوت که به جای SA از EN استفاده می‌شود: FreeBSD-EN-26:19.zfs، FreeBSD-EN-26:18.tzdata. به‌روزرسانی داده‌های منطقه زمانی (time zone) نمونه کلاسیک این مورد است. هیچ‌کس نمی‌تواند با داده‌های قدیمی منطقه زمانی به شما حمله کند، اما تا زمانی که اصلاحیه را اعمال نکنید، برچسب‌های زمانی شما نادرست خواهند بود. اصلاحیه‌ها در صفحه اطلاعیه‌های اصلاحیه FreeBSD فهرست شده‌اند.

هر دو نوع اطلاعیه با کلید PGP (حریم خصوصی بسیار خوب) مسئول امنیتی امضا شده و در security.FreeBSD.org آرشیو می‌شوند و هر دو توسط freebsd-update به ماشین شما ارسال می‌گردند.

این بخشی است که مدیران سیستم‌های لینوکس را به اشتباه می‌اندازد: هیچ‌کدام از این دو نوع، بسته‌ها (packages) را پوشش نمی‌دهند. صفحه امنیتی به‌صراحت بیان می‌کند: مشکلات در مجموعه پورت‌های FreeBSD «به‌طور جداگانه در سند VuXML سیستم FreeBSD پوشش داده می‌شوند». یک حفره از راه دور در بسته nginx هرگز شماره SA دریافت نخواهد کرد. اگر تنها منبعی که پایش می‌کنید فید توصیه‌های امنیتی باشد، هرگز از آن مطلع نخواهید شد.

چگونه از به‌روزرسانی‌های امنیتی FreeBSD مطلع شوم؟

لیستی که باید در آن عضو شوید freebsd-security-notifications است. این لیست مدیریت‌شده و کم‌ترافیک است و اطلاعیه‌های امنیتی و اصلاحیه‌ها مستقیماً در آن ارسال می‌شوند. برای عضویت به lists.freebsd.org مراجعه کنید.

freebsd-announce نیز مدیریت‌شده است و علاوه بر اطلاعیه‌های امنیتی، اخبار مربوط به انتشار نسخه‌ها را نیز پوشش می‌دهد؛ بنابراین اگر می‌خواهید همه اخبار را در یک لیست دریافت کنید، این گزینه مناسب است. freebsd-security لیست بحث و گفتگو است. مطالعه آن مفید است، اما منبعی برای اطلاع از نیاز به اعمال وصله‌های امنیتی نیست.

تمام این لیست‌ها فقط اخبار مربوط به سیستم‌عامل پایه را پوشش می‌دهند. آسیب‌پذیری‌های بسته‌های نرم‌افزاری (Packages) هرگز از طریق ایمیل ارسال نمی‌شوند. برای اطلاع از آن‌ها باید یک دستور خاص را اجرا کنید.

ابزار pkg audit و پایگاه داده آن

VuXML یا زبان نشانه‌گذاری آسیب‌پذیری‌ها و افشاگری‌ها، سوابق پروژه FreeBSD از مشکلات امنیتی در پورت‌ها و بسته‌ها است. هر ورودی شامل نام بسته آسیب‌دیده، بازه نسخه‌های آسیب‌پذیر، شناسه‌های CVE (آسیب‌پذیری‌ها و افشاگری‌های رایج) و توضیح مختصری از مشکل است. کل این مجموعه در فهرست VuXML قابل مرور است و بر اساس نام بسته، شناسه CVE یا تاریخ مرتب شده است.

pkg audit ابزاری است که این پایگاه داده را می‌خواند:

pkg audit -F

-F پیش از بررسی، نسخه جدیدی از پایگاه داده را دریافت می‌کند. همیشه از این سوئیچ استفاده کنید. بدون -F، شما در حال مقایسه با نسخه‌ای هستید که از قبل روی سیستم موجود است و ممکن است ماه‌ها قدیمی باشد؛ بنابراین نتیجه «پاک» در این حالت فاقد اعتبار است. این دستور هر نسخه از بسته نصب‌شده را با تمام ورودی‌های VuXML مقایسه می‌کند، هر مورد منطبق را به همراه شماره‌های CVE و لینکی به صفحه VuXML چاپ می‌کند و در نهایت با یک خط خلاصه، تعداد مشکلات یافت‌شده در بسته‌های نصب‌شده را گزارش می‌دهد.

دو سوئیچ دیگر از pkg-audit(8) نیز ارزش دانستن دارند. pkg audit -r همچنین «بسته‌هایی را که به بسته‌های آسیب‌پذیر وابستگی دارند و در نتیجه بالقوه آسیب‌پذیر هستند» چاپ می‌کند؛ این همان روشی است که متوجه می‌شوید یک کتابخانه آسیب‌پذیر اهمیت دارد، زیرا 6 برنامه نصب‌شده به آن وابسته‌اند. pkg audit -R همان نتیجه را در قالب JSON یا سایر فرمت‌های قابل‌فهم برای ماشین چاپ می‌کند که برای تغذیه ابزارهای مانیتورینگ کاربرد دارد.

بسته pkg یک اسکریپت دوره‌ای را در مسیر /usr/local/etc/periodic/security/410.pkg-audit نصب می‌کند. این اسکریپت به عنوان بخشی از بررسی امنیتی روزانه اجرا شده و نتیجه را برای root ایمیل می‌کند. فعال بودن آن را با یک خط در /etc/periodic.conf بررسی کنید:

daily_status_security_pkgaudit_enable="YES"

آن ایمیل روزانه نزدیک‌ترین تجربه FreeBSD به عادت unattended-upgrades در اوبونتو است، اما تفاوت در همین نکته نهفته است: unattended-upgrades اصلاحیه را در حالی که خواب هستید نصب می‌کند، اما pkg audit فقط به شما اطلاع می‌دهد که نیاز به اصلاحیه دارید. pkg audit فقط گزارش می‌دهد. این ابزار هرگز پچ نمی‌کند. هیچ‌چیز در یک سیستم استاندارد FreeBSD بدون دخالت شما، به‌روزرسانی امنیتی نصب نمی‌کند.

رفع یک بسته آسیب‌پذیر

pkg update
pkg upgrade

در مخازن بسته‌های FreeBSD، مخزن اختصاصی فقط برای وصله‌های امنیتی وجود ندارد. سیستم‌عامل Ubuntu می‌تواند بسته‌ها را صرفاً از noble-security دریافت کند و سایر بسته‌ها را در وضعیت فعلی باقی بگذارد. FreeBSD چنین قابلیتی ندارد؛ بنابراین، رفع یک بسته آسیب‌پذیر به معنای پذیرش هر نسخه‌ای است که مخزن در حال حاضر ارائه می‌دهد، به همراه تمام وابستگی‌هایی که همراه آن تغییر کرده‌اند. وصله‌کردن بسته‌ها را به عنوان یک تغییر برنامه‌ریزی‌شده در نظر بگیرید، نه یک وظیفه پس‌زمینه.

اینکه در کدام شاخه مخزن قرار دارید، تعیین می‌کند که یک اصلاحیه با چه سرعتی به دست شما می‌رسد. شاخه پیش‌فرض، شاخه quarterly است که دفترچه راهنما آن را به دلیل پذیرش تنها به‌روزرسانی‌های غیرقابلیتی، «تجربه‌ای قابل‌پیش‌بینی‌تر و پایدارتر» توصیف می‌کند. شاخه latest جدیدترین نسخه از همه چیز را دریافت می‌کند. بنابراین، زمانی که pkg audit -F یک بسته را آسیب‌پذیر گزارش می‌کند و pkg upgrade می‌گوید کاری برای انجام دادن وجود ندارد، به این دلیل است که اصلاحیه هنوز به شاخه شما نرسیده است و این همان سازوکاری است که باعث سردرگمی می‌شود.

برای انتقال یک ماشین به شاخه latest، فایل مخزنی که همراه سیستم ارائه شده است را کپی کرده و نسخه کپی‌شده را ویرایش کنید:

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

در فایل کپی‌شده، مقدار quarterly را در خط url به latest تغییر دهید، سپس دستور pkg update -f را اجرا کنید تا کاتالوگ جدید دریافت شود. فایل را کپی کنید و نام مخزن را از حفظ تایپ نکنید: نام موجود در /etc/pkg/FreeBSD.conf همان نامی است که سیستم شما واقعاً استفاده می‌کند و فایلی که در مسیر /usr/local/etc/pkg/repos قرار می‌گیرد، تنها مخزنی را بازنویسی می‌کند که نام آن دقیقاً با فایل مطابقت داشته باشد.

اعمال وصله‌های سیستم پایه

freebsd-update fetch
freebsd-update install

fetch وصله‌ها را برای نسخه فعلی شما دانلود کرده و فهرستی از فایل‌هایی که تغییر خواهند کرد را نمایش می‌دهد. زمانی که کاری برای انجام وجود نداشته باشد، عبارت No updates needed to update system to 15.1-RELEASE-p3. را چاپ کرده و خارج می‌شود. هنگامی که تغییری لازم باشد، در پایان به شما دستور نصب را اعلام می‌کند. تا زمانی که دستور freebsd-update install را اجرا نکنید، هیچ تغییری اعمال نمی‌شود؛ بنابراین اجرای fetch در هر زمانی ایمن است.

ابزار freebsd-update(8) به‌روزرسانی‌های باینری را برای نسخه‌های ALPHA، BETA، RC و RELEASE ارائه می‌دهد و شامل نسخه‌های PRERELEASE، STABLE یا CURRENT نمی‌شود. اگر از stable/15 استفاده می‌کنید، سیستم را از سورس کامپایل می‌کنید و این ابزار برای شما کاربردی ندارد.

دانلود را خودکار کنید و نصب را به‌صورت دستی انجام دهید. خط مربوط به /etc/crontab در کتابچه راهنما (Handbook) به این صورت است:

@daily                                  root    freebsd-update cron

freebsd-update cron یک زمان تصادفی بین 1 تا 3600 ثانیه صبر می‌کند، سپس به‌روزرسانی‌ها را دقیقاً مشابه fetch دانلود کرده و در صورت وجود موارد آماده برای نصب، به root ایمیل می‌زند. این وقفه تصادفی برای این است که تمام ماشین‌های FreeBSD در اینترنت به‌طور همزمان به سرورهای آینه‌ای (mirrors) به‌روزرسانی متصل نشوند.

دو مورد در خروجی باعث سردرگمی کاربران می‌شود. src component not installed, skipped در سروری که فاقد سورس‌تری (source tree) است، طبیعی بوده و خطا محسوب نمی‌شود. مجموعه مؤلفه‌ها توسط خط Components در فایل /etc/freebsd-update.conf کنترل می‌شود و گزینه‌های موجود عبارتند از src، world و kernel.

اگر نصب با مشکل مواجه شد، freebsd-update rollback آخرین به‌روزرسانی‌های نصب‌شده را حذف می‌کند. در صورتی که از ZFS به عنوان روت استفاده می‌کنید، می‌توانید عملکرد بهتری داشته باشید و ابتدا یک محیط بوت (boot environment) تهیه کنید:

bectl create pre-patch
freebsd-update fetch install

اگر سیستم وصله‌شده بوت نشد، محیط بوت قدیمی را از منوی لودر انتخاب کنید تا به وضعیت اولیه بازگردید. این راهکار خروج، یکی از دلایل عملی برای استفاده از ZFS به عنوان فایل‌سیستم روت است و تا زمانی که دو محیط از هم متمایز نشوند، تقریباً هیچ فضای دیسکی اشغال نمی‌کند.

آیا نسخه FreeBSD من همچنان پشتیبانی می‌شود؟

هر نسخه برای یک بازه زمانی مشخص پشتیبانی می‌شود که در قالب یک جدول شاخه در صفحه امنیت منتشر می‌گردد. تا آگوست 2026، آن جدول به شرح زیر است:

  • releng/15.1، که نسخه 15.1-RELEASE است، تا 31 مارس 2027
  • releng/15.0، که نسخه 15.0-RELEASE است، تا 30 سپتامبر 2026
  • releng/14.4، که نسخه 14.4-RELEASE است، تا 31 دسامبر 2026
  • stable/15 تا 31 دسامبر 2029
  • stable/14 تا 30 نوامبر 2028

نسخه‌های فرعی (Point releases) بازه‌های زمانی کوتاهی دارند. پشتیبانی 15.0-RELEASE حدود هفت هفته پس از نگارش این مطلب به پایان می‌رسد، زیرا نسخه 15.1 منتشر شده و شمارش معکوس آن آغاز شده است. شاخه‌های stable سال‌ها دوام می‌آورند و این‌ها شاخه‌های source هستند که freebsd-update آن‌ها را ارائه نمی‌دهد.

نسخه خود را با freebsd-version -u بررسی کرده و آن را با جدول مقایسه کنید. freebsd-update نیز به شما هشدار می‌دهد. با نزدیک شدن به تاریخ انقضا، fetch این پیام را چاپ می‌کند:

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.

پس از گذشتن از تاریخ، هشدار به WARNING: FreeBSD 15.0-RELEASE HAS PASSED ITS END-OF-LIFE DATE. تغییر می‌کند. یک نسخه پشتیبانی‌نشده همچنان کار می‌کند. اما دریافت توصیه‌های امنیتی متوقف می‌شود، به این معنی که آسیب‌پذیری بعدی سیستم، برای همیشه با شما باقی خواهد ماند.

ارتقای نسخه شامل freebsd-update -r 15.1-RELEASE upgrade، سپس freebsd-update install، سپس یک reboot، سپس اجرای مجدد freebsd-update install، سپس pkg-static upgrade -f برای نصب مجدد تمام بسته‌ها بر اساس کتابخانه‌های جدید، و در نهایت یک freebsd-update install است. در کتابچه راهنما ذکر شده که بسته به اینکه آیا شماره نسخه کتابخانه‌ای تغییر کرده باشد یا خیر، ممکن است تنها دو مرحله نصب به جای سه مرحله وجود داشته باشد. یک بازه زمانی برای نگهداری رزرو کنید و پیش از شروع، راهنمای راه‌اندازی سرور FreeBSD 15 را مطالعه کنید.

راه‌اندازی مجدد (Reboot) یا آیا راه‌اندازی مجدد سرویس کافی است؟

FreeBSD به این پرسش با یک مقایسه پاسخ می‌دهد:

freebsd-version -k
uname -r

freebsd-version -k هسته موجود روی دیسک است. uname -r هسته‌ای است که در حافظه بارگذاری شده است. تفاوت در این رشته‌ها به این معناست که هسته جدیدی نصب شده و شما در حال اجرای آن نیستید، بنابراین سیستم را reboot کنید. یکسان بودن رشته‌ها به این معناست که وصله (patch) تغییری در هسته ایجاد نکرده و reboot کردن هیچ فایده‌ای ندارد.

برای وصله‌های فضای کاربری (userland)، هر سرویسی که از کد وصله‌شده استفاده می‌کند را راه‌اندازی مجدد کنید. اصلاح کتابخانه OpenSSL پایه در /usr/lib، هیچ تأثیری بر sshd که از سه هفته پیش اجرا شده و همچنان کتابخانه قدیمی را در فضای آدرس خود نگه‌داشته است، ندارد. فایل روی دیسک جدید است، اما پردازش در حال اجرا خیر.

service sshd restart

همین قاعده برای بسته‌ها نیز صدق می‌کند. pkg upgrade فایل باینری روی دیسک را جایگزین می‌کند در حالی که پردازش در حال اجرا همچنان نسخه قدیمی را باز نگه‌داشته است، بنابراین service nginx restart گامی است که اصلاح را عملیاتی می‌کند.

سیستم پایه معادل needrestart در دبیان را ندارد، بنابراین هیچ پیامی به شما داده نمی‌شود و لیستی هم نگهداری نمی‌شود. یا باید ردگیری کنید که کدام سرویس‌ها به کدام کتابخانه وصله‌شده لینک شده‌اند، یا پس از هر وصله‌ای که کتابخانه‌های پایه را تغییر می‌دهد، سیستم را reboot کنید. در سروری که پیکربندی آن در سیستم کنترل نسخه قرار دارد، reboot یک عملیات روتین است و هزینه آن بسیار کمتر از این است که تصور کنید سیستم وصله شده است در حالی که چنین نیست.

وصله‌کردن ماشینی که از jailها استفاده می‌کند

یک jail از هسته (kernel) میزبان استفاده می‌کند، بنابراین یک هشدار امنیتی مربوط به هسته، مشکلی برای میزبان محسوب می‌شود و تمام jailهای موجود روی آن سیستم نیز تحت تأثیر قرار می‌گیرند. میزبان را وصله کرده و آن را reboot کنید تا تغییرات هسته برای همه اعمال شود. فضای کاربری (userland) درون هر jail یک نصب جداگانه با سطح وصله مخصوص به خود است و freebsd-version -j <jail> وضعیت آن را از سمت میزبان گزارش می‌دهد. بسته‌های نرم‌افزاری درون هر jail نیز مجزا هستند و pkg -j <jail> audit -F بدون نیاز به ورود به داخل jail، آن‌ها را بازرسی (audit) می‌کند. این تفکیک بین هسته مشترک و فضای کاربری مجزا، همان تفاوت ساختاری است که نحوه مقایسه jailها با کانتینرهای Docker را شکل می‌دهد.

ترجمه به Ubuntu

هر عادت در FreeBSD معادل خود را دارد، بنابراین می‌توانید روال کاری را در هر دو جهت حفظ کنید.

  • وصله‌های سیستم پایه: freebsd-update fetch و سپس freebsd-update install. در Ubuntu، دستور apt update && apt upgrade وجود دارد که سیستم پایه و سایر موارد را به‌طور هم‌زمان پوشش می‌دهد.
  • نرم‌افزارهای شخص ثالث: pkg update && pkg upgrade در FreeBSD. در Ubuntu، مجدداً از apt استفاده می‌شود.
  • بررسی آسیب‌پذیری‌های شناخته‌شده: pkg audit -F در FreeBSD. در Ubuntu 24.04 نزدیک‌ترین دستور pro security-status است که به‌روزرسانی‌های امنیتی بسته‌های نصب‌شده، از جمله محتوای Expanded Security Maintenance را نمایش می‌دهد.
  • نصب خودکار: unattended-upgrades در Ubuntu به‌روزرسانی‌های امنیتی را برای شما اعمال می‌کند. FreeBSD معادل مستقیمی برای این کار ندارد، بنابراین freebsd-update cron فایل‌ها را دانلود و ایمیل می‌کند در حالی که شما نصب را به‌صورت دستی انجام می‌دهید.
  • فید توصیه‌نامه‌ها: freebsd-security-notifications موارد FreeBSD-SA و FreeBSD-EN را ارائه می‌دهد. ubuntu-security-announce شامل Ubuntu Security Notices است.
  • پایگاه داده آسیب‌پذیری‌ها: VuXML برای پورت‌ها و بسته‌های FreeBSD. ردیاب CVE اوبونتو برای بسته‌های Ubuntu.
  • بررسی نیاز به راه‌اندازی مجدد: freebsd-version -k در مقابل uname -r در FreeBSD. وجود فایل /var/run/reboot-required در Ubuntu.
  • بازه پشتیبانی: جدول شاخه‌ها در صفحه امنیتی FreeBSD. برنامه انتشار و pro security-status در Ubuntu.

روال زیربنایی در هر دو سیستم یکسان است: در فید مشترک شوید، ممیزی را طبق زمان‌بندی اجرا کنید، سپس تصمیم بگیرید چه چیزی را در چه زمانی نصب و چه زمانی سیستم را راه‌اندازی مجدد کنید. FreeBSD فقط شما را وادار می‌کند بخش دوم را به‌صورت صریح انجام دهید، زیرا این کار را برای شما انجام نمی‌دهد. مقایسه جامع‌تر Linux و FreeBSD به عنوان پلتفرم سرور به بررسی سایر تغییراتی می‌پردازد که هنگام انتقال بار کاری بین این دو سیستم رخ می‌دهد.

FAQ

آیا freebsd-update بسته‌های نرم‌افزاری من را هم وصله می‌کند؟

خیر. freebsd-update فقط سیستم‌عامل پایه، یعنی هسته و ابزارهای کاربری (userland) که همراه با نسخه منتشر شده‌اند را پوشش می‌دهد. نرم‌افزارهایی که تحت /usr/local نصب می‌شوند از طریق بسته‌ها (packages) مدیریت شده و با pkg upgrade وصله می‌شوند. دستور pkg audit -F را اجرا کنید تا متوجه شوید کدام‌یک از بسته‌های نصب‌شده دارای آسیب‌پذیری‌های شناخته‌شده هستند؛ زیرا توصیه‌های امنیتی سیستم پایه هرگز به آن‌ها اشاره نمی‌کنند و لیست‌های پستی امنیتی نیز آن‌ها را اعلام نمی‌کنند.

چگونه بفهمم که یک به‌روزرسانی FreeBSD نیاز به راه‌اندازی مجدد (reboot) دارد؟

خروجی freebsd-version -k را با uname -r مقایسه کنید. دستور اول هسته نصب‌شده روی دیسک را نمایش می‌دهد، از جمله هسته‌ای که به‌تازگی نوشته شده اما هنوز بوت نشده است. دستور دوم هسته‌ای که در حال اجراست را نشان می‌دهد. تفاوت این دو رشته به این معناست که نیاز به راه‌اندازی مجدد دارید. اگر رشته‌ها یکسان باشند، وصله فقط مربوط به فضای کاربری (userland) بوده است؛ بنابراین کافی است سرویس‌های تحت تأثیر را دوباره راه‌اندازی کنید (مثلاً با service sshd restart)، زیرا پردازش‌های در حال اجرا تا زمانی که دوباره شروع نشوند، کتابخانه‌های قدیمی را در حافظه نگه می‌دارند.

تفاوت بین Security Advisory و Errata Notice چیست؟

یک Security Advisory، مانند FreeBSD-SA-26:55.elf، یک آسیب‌پذیری امنیتی در سیستم پایه را برطرف می‌کند. یک Errata Notice، مانند FreeBSD-EN-26:18.tzdata، مشکلات مربوط به صحت عملکرد یا پایداری را که تأثیر امنیتی ندارند (مانند داده‌های قدیمی منطقه زمانی) اصلاح می‌کند. هر دو از الگوی سال، دونقطه، شماره ترتیب و نام مؤلفه استفاده می‌کنند. هر دو توسط مسئول امنیتی (Security Officer) امضا شده و توسط freebsd-update توزیع می‌شوند و هیچ‌کدام نرم‌افزارهای نصب‌شده از طریق ports یا packages را پوشش نمی‌دهند.

آیا معادل unattended-upgrades برای FreeBSD وجود دارد؟

در سیستم پایه خیر. freebsd-update cron وصله‌های معلق سیستم پایه را دانلود کرده و به root ایمیل می‌زند، اما هرگز آن‌ها را نصب نمی‌کند. اسکریپت دوره‌ای که pkg نصب می‌کند، روزانه pkg audit را اجرا کرده و نتیجه را ایمیل می‌کند، اما هیچ‌چیزی را ارتقا نمی‌دهد. نصب خودکار چیزی است که باید خودتان با یک cron job پیاده‌سازی کنید. از آنجا که ارتقای بسته‌ها در FreeBSD به‌جای backport کردن فقط موارد امنیتی، آخرین نسخه موجود را دریافت می‌کند، اکثر مدیران سیستم ایمیل‌ها را مطالعه کرده و به‌صورت دستی اقدام به نصب می‌کنند.

چگونه بررسی کنم که نسخه FreeBSD من هنوز پشتیبانی می‌شود؟

دستور freebsd-version -u را برای مشاهده نسخه userland خود اجرا کنید و سپس آن را با جدول شاخه‌های پشتیبانی‌شده در صفحه امنیتی FreeBSD مقایسه کنید. نسخه‌های اصلی (Point releases) بازه زمانی کوتاهی دارند: تا اوت 2026، پشتیبانی 15.0-RELEASE در 30 سپتامبر 2026 به پایان می‌رسد، در حالی که 15.1-RELEASE تا 31 مارس 2027 پشتیبانی می‌شود. freebsd-update fetch با نزدیک شدن به این تاریخ به شما هشدار می‌دهد و پس از گذشت آن، خطی را چاپ می‌کند که نشان می‌دهد نسخه شما به پایان عمر خود (END-OF-LIFE) رسیده است. پس از آن تاریخ، دیگر هیچ توصیه‌نامه امنیتی شامل حال شما نخواهد شد.

#freebsd#security#patching#advisories#pkg