آیا در Ubuntu 24.04 آپدیت خودکار فعال است؟
در Ubuntu 24.04 بسته unattended-upgrades نصب است اما برای فعالسازی باید دستور 20auto-upgrades را اجرا کنید. تنظیم Automatic-Reboot نیز پیشفرض false است.
چرا راهاندازی بهروزرسانیهای امنیتی خودکار ارزشمند است
سروری که وصله (patch) نشده باشد، آسانترین هدف در اینترنت است. بیشتر نفوذها به سرورهای کوچک، پیچیده نیستند؛ آنها در واقع باگهای شناختهشده در بستههای قدیمی هستند که مالک هرگز آنها را بهروزرسانی نکرده است. Ubuntu ابزاری را ارائه میدهد که این شکاف را به صورت خودکار پر میکند: unattended-upgrades بهروزرسانیهای امنیتی را طبق یک برنامه زمانبندی شده و بدون نیاز به ورود شما، بهطور خودکار نصب میکند. این ارزانترین راه برای تامین امنیت در یک VPS است و در Ubuntu تنها با چند دقیقه تنظیمات انجام میشود.
این ابزار به عمد محافظهکارانه طراحی شده است. به صورت پیشفرض، این ابزار فقط بهروزرسانیهای امنیتی را اعمال میکند و نه تمام ارتقای بستهها را؛ زیرا یک وصله امنیتی ریسک پایینی دارد و ارزش انجام بدون بررسی را دارد، در حالی که ارتقای قابلیتها (feature upgrade) میتواند رفتاری را که به آن وابسته بودهاید تغییر دهد. این تنظیم پیشفرض برای اکثر سرورها مناسب است و این راهنما همان تنظیمات را حفظ میکند و تنها موارد کمی که ارزش تغییر دارند را به شما نشان میدهد.
Step 1: Install and enable it
در Ubuntu 24.40، این بسته اغلب موجود است اما همیشه فعال نیست. آن را نصب و فعال کنید:
sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesپرسش dpkg-reconfigure یک سوال ساده بله یا خیر است: آیا باید بهروزرسانیهای پایدار را بهطور خودکار دانلود و نصب کرد؟ پاسخ دهید yes. این کار فایلی را مینویسد که وظیفه روزانه را فعال میکند:
cat /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";خط اول لیست بستهها را به صورت روزانه بهروز میکند؛ خط دوم unattended upgrade را به صورت روزانه اجرا میکند. تنظیم هر دو روی 1 به این معناست که ماشین هر روز، از طریق یک systemd timer، بهروزرسانیهای امنیتی را بررسی و اعمال میکند، بدون اینکه نیاز به اقدام دیگری از سوی شما باشد.
Step 2: Decide what gets applied automatically
سیاست بهروزرسانی در /etc/apt/apt.conf.d/50unattended-upgrades قرار دارد. آن را باز کنید و به بلوک Allowed-Origins در نزدیکی بالا نگاه کنید:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};خطوط -security خطوط مهمی هستند و به صورت پیشفرض فعال هستند. این همان سیاست محافظهکارانه است: ورود بهروزرسانیهای امنیتی، و باقی ماندن بهروزرسانیهای قابلیتهای معمولی برای اینکه خودتان در زمان مناسب آنها را اعمال کنید. شما میتوانید خط منشأ "${distro_id}:${distro_codename}-updates" را برای اعمال خودکار تمام بهروزرسانیها اضافه کنید، اما برای سروری که چیز مهمی را میزبانی میکند، دریافت خودکارِ فقط وصلههای امنیتی، پیشفرض ایمنتری است. مگر اینکه دلیل خاصی برای تغییر آن داشته باشید، آن را همانطور که ارائه شده رها کنید.
Step 3: Handle reboots
برخی بهروزرسانیها، مانند kernel یا یک کتابخانه اصلی، تنها پس از یک reboot اثر کامل خود را میگذارند. unattended-upgrades سرور شما را ریاستارت نمیکند مگر اینکه به آن دستور دهید، به این معنی که یک kernel وصلهشده میتواند بدون استفاده باقی بماند تا زمانی که شما به طور تصادفی سیستم را ریاستارت کنید. تصمیم بگیرید که چگونه میخواهید این مورد را مدیریت کنید و آن را به صورت صریح در 50unattended-upgrades تنظیم کنید:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";این دستور سرور را در ساعت 4 صبح، تنها در صورتی که یک بهروزرسانی به آن نیاز داشته باشد، ریاستارت میکند. در یک VPS تکی که کلاستر برای انتقال سرویس (failover) ندارد، یک ریاستارت کوتاه در اوایل صبح معمولاً معاملهای درست برای بهروز ماندن در اصلاحات kernel است. اگر سرور شما برنامهای را اجرا میکند که هرگز نباید به طور غیرمنتظره ریاستارت شود، قابلیت ریاستارت را خاموش بگذارید و عادت کنید که پس از بررسی /var/run/reboot-required، خودتان سیستم را ریاستارت کنید.
Step 4: Prove it works
منتظر نمانید تا یک روز بگذرد تا بفهمید آیا این وظیفه اجرا میشود یا خیر. یک dry run اجرا کنید که دقیقاً نشان دهد چه چیزی بدون تغییر دادن هیچ چیز، اعمال خواهد شد:
sudo unattended-upgrade --dry-run --debugخروجی لیست بستههایی را که بررسی میکند و منشأ آنها را نشان میدهد، بنابراین میتوانید سیاست کار را در عمل ببینید. پس از اینکه وظیفه واقعی حداقل یک بار اجرا شد، سوابق آن در اینجا است:
cat /var/log/unattended-upgrades/unattended-upgrades.logاین log پاسخ به این سوال است که "آیا سرور من واقعاً خودش را وصله میکند؟" اگر نشان داد که بستههای امنیتی در یک برنامه زمانبندی شده نصب میشوند، یعنی وظیفه در حال اجراست.
Where this fits
بهروزرسانیهای خودکار تنها یکی از لایههای یک سرور مقاومسازی شده (hardened) هستند، نه تمام آن. آنها از باقی ماندن باگهای شناختهشده جلوگیری میکنند، اما در مورد اینکه چه کسی میتواند وارد شود یا چه چیزی در معرض دسترسی است، کاری انجام نمیدهند. آنها را با SSH hardening مبتنی بر کلید، یک UFW firewall با سیاست deny-by-default برای اینکه فقط موارد انتخابی شما در دسترس باشند، و unprivileged service users برای اینکه یک اپلیکیشن هک شده نتواند کل سیستم را در اختیار بگیرد، ترکیب کنید. وصله کردن، حفرههایی را که میشناسید میبندد؛ لایههای دیگر آسیب ناشی از حفرههایی که نمیشناسید را محدود میکنند.
FAQ
Does unattended-upgrades apply every update or only security ones?
به صورت پیشفرض، فقط بهروزرسانیهای امنیتی. بلوک Allowed-Origins در /etc/apt/apt.conf.d/50unattended-upgrades منشأهای -security را فعال میکند و بهروزرسانیهای قابلیتهای معمولی را برای اعمال دستی شما باقی میگذارد. این عمدی است: وصلههای امنیتی ریسک پایینی دارند و ارزش انجام خودکار را دارند، در حالی که ارتقای قابلیتها میتواند رفتار سیستم را تغییر دهد، بنابراین اکثر سرورها باید پیشفرض محافظهکارانه را حفظ کنند.
Will automatic updates reboot my server?
فقط اگر به آنها دستور دهید. Unattended-Upgrade::Automatic-Reboot "true" و یک Automatic-Reboot-Time در تنظیمات (config) قرار دهید، و سرور در آن زمان و تنها زمانی که یک بهروزرسانی نیاز داشته باشد، مانند بعد از یک kernel patch، ریاستارت میشود. اگر خاموش باشد، یک kernel وصلهشده منتظر میماند تا خودتان ریاستارت کنید؛ برای دانستن اینکه آیا بهروزرسانی منتظر اجرا هست، /var/run/reboot-required را چک کنید.
How do I check that automatic updates are actually running?
sudo unattended-upgrade --dry-run --debug را اجرا کنید تا ببینید چه چیزی همین الان بدون تغییر دادن هیچ چیز اعمال میشود، و /var/log/unattended-upgrades/unattended-upgrades.log را برای سوابق اجراهای گذشته بخوانید؛ هر نصب خودکار در /var/log/apt/history.log نیز ثبت میشود. اگر log نشاندهنده نصب بستههای امنیتی در یک برنامه روزانه باشد، timer در حال کار است. اگر dry run عبارت No packages found that can be upgraded unattended را چاپ کند، یا همه چیز بهروز است یا منشأهای مجاز شما برای تطبیق با مخزن امنیتی بسیار محدود هستند.
Is unattended-upgrades enough to keep my server secure?
خیر، اما یک لایه ضروری است. این ابزار از باقی ماندن آسیبپذیریهای شناختهشده بدون وصله جلوگیری میکند که باعث توقف رایجترین نوع نفوذ میشود، اما کنترل دسترسی یا میزان در معرض قرار گرفتن را بر عهده ندارد. آن را با SSH hardening، یک فایروال با سیاست deny-by-default، و کاربران سرویس با حداقل دسترسی (least-privilege) ترکیب کنید تا سروری داشته باشید که واقعاً نفوذ به آن سخت باشد.