معرفی
در این آموزش، بهترین روش ها را برای به روز نگه داشتن سرورهای اوبونتو 20.04 خود بررسی خواهید کرد. درست مانند تقویت امنیت شبکه، گامهای زیادی وجود دارد که میتوانید برای اطمینان از اینکه سرورهایتان بدون مداخله در آینده به کار امن خود ادامه میدهند، انجام دهید.
تعدادی ابزار و پیکربندی وجود دارد که میتوانید آنها را برای اکثر سرورهای اوبونتو، فراتر از آنچه که به طور خودکار برای شما پیکربندی شده است، اعمال کنید. اگر مدیریت سرور خود را انجام میدهید، وصله دستی همه محیطهایتان میتواند بسیار مخرب و مستعد خطا باشد.
این آموزش شامل موارد زیر خواهد بود: آزمایش راهاندازی مجدد برازنده به دنبال بهترین شیوهها برای مدیریت برنامه، برای به حداقل رساندن هرگونه عوارض ناشی از بهروزرسانیهای تعمیر و نگهداری، پیکربندی بهروزرسانیهای خودکار برای اکثر بستهها و کتابخانههای در حال اجرا بر روی دستگاه شما وصله هسته زنده، و سایر بهترین روشها در مورد بهروزرسانیهای هسته
پیش نیازها
یک سرور اوبونتو 20.04 و یک کاربر غیر ریشه با امتیازات sudo.
مرحله 1 – پیروی از بهترین روش ها برای مدیریت برنامه
بخش اساسی پیکربندی سرور برای ارتقای خودکار اطمینان از اینکه همه برنامههای در حال اجرا بر روی سرور قادر به راهاندازی صحیح پس از توقف برنامهریزی نشده یا راهاندازی مجدد هستند، است. مدیران بسته لینوکس طوری طراحی شدهاند که بدون اختلال در پسزمینه اجرا شوند تا تعمیر و نگهداری لازم با هزینههای اضافی همراه نباشد. با وجود این، یکی از رایجترین دلایل برای نداشتن یک استراتژی بهروزرسانی خوب، نگرانی در مورد نحوه رفتار سرور شما پس از راهاندازی مجدد است.
در صورت امکان، برنامه های موجود در پشته شما باید توسط سیستم init سرور شما مدیریت شود، که در اکثر توزیع های لینوکس مدرن از جمله اوبونتو سیستمی است. Systemd دستور systemctl را برای تعامل با سرویس های در حال اجرا و راه اندازی مجدد خودکار آنها در صورت نیاز ارائه می دهد. تقریباً تمام نرم افزارهایی که از طریق مدیریت بسته شما نصب می شوند و برای اجرا در پس زمینه طراحی می شوند، باید به طور خودکار یک سرویس systemd و یک فایل واحد پیکربندی را به عنوان بهترین روش ارائه دهند.
هنگام اجرای نرم افزار خود، یا نرم افزار مستقر شده از مخازن Git، ایده بدی نیست که فایل های واحد خود را برای ادغام با systemd بنویسید. به عنوان یک جایگزین سبک، ممکن است ترجیح دهید از ابزاری مانند سرپرست استفاده کنید. همچنین میتوانید از زمانبندی cron سیستم خود با دستور reboot@ استفاده کنید.
پس از اینکه پیکربندی در جای خود قرار گرفت، مطمئن شوید که آن را از طریق راه اندازی مجدد تست کنید. میتوانید با اجرای sudo shutdown now -r راهاندازی مجدد کنید، که فرآیندهای در حال اجرا شما را کاملاً متوقف میکند و بلافاصله راهاندازی مجدد میشود. همچنین میتوانید بهجای زمان کنونی، زمان را به hh:mm یا چند دقیقه از هماکنون تعیین کنید تا در آینده راهاندازی مجدد را برنامهریزی کنید. استقرار تولید معمولاً پس از قطعی های برنامه ریزی نشده نیازی به توجه شما ندارد و همه سرویس ها و نقاط پایانی لازم باید به طور خودکار بازیابی شوند.
اکنون که مطمئن شدهاید محیط شما با راهاندازی مجدد تعمیر و نگهداری مشکلی نخواهد داشت، در مرحله بعد، نحوه برنامهریزی بهروزرسانیهای خودکار را خواهید آموخت.
مرحله 2 – پیکربندی ارتقاءهای بدون نظارت
مدیر بسته اوبونتو، apt، دارای یک گردش کار کاملاً ثابت برای انجام یک ارتقاء کامل سیستم است. ابتدا، آپدیت apt را اجرا میکنید تا لیست بستههای خود را بهروزرسانی کنید، و سپس، apt upgrade را بدون مشخص کردن بستهای اجرا میکنید تا هر بسته در سیستم را ارتقا دهید. اگر با بستههای شخص ثالث تداخل نسخه داشته باشید یا اگر عمداً برخی از بستهها را ارتقا ندادهاید، این گردش کار ممکن است کمی متفاوت باشد، اما دستورات اصلی یکسان هستند.
اوبونتو یک ابزار منحصر به فرد به نام ارتقاهای بدون نظارت را به منظور بازیابی و نصب خودکار وصله های امنیتی و سایر ارتقاءهای ضروری برای سرور شما فراهم می کند. اکثر سرورهای اوبونتو با این ابزار به صورت خودکار نصب و پیکربندی می شوند، اما می توانید آن را با دستورات apt زیر نصب کنید:
sudo apt update
sudo apt install unattended-upgrades
پس از نصب، می توانید بررسی کنید که آیا سرویس ارتقاء بدون نظارت با استفاده از systemctl اجرا می شود:
sudo systemctl status unattended-upgrades.service
پیکربندی پیشفرض بهروزرسانیهای بدون نظارت بهطور خودکار رفع اشکال و بهروزرسانیهای امنیتی را برای اکثر بستههای موجود در مخازن اوبونتو بازیابی میکند. با این حال، اگر از نسخههای قدیمیتر برخی بستهها برای جلوگیری از تغییرات بالادستی استفاده میکنید، یا اگر سرور شما علاوه بر اوبونتو از مخازن بسته شخص ثالث استفاده میکند، میتوانید سرویس ارتقاء بدون نظارت را پیکربندی کنید.
پیکربندی آن در /etc/apt/apt.conf.d/50unattended-upgrades ذخیره می شود. این فایل را با استفاده از nano یا ویرایشگر متن مورد علاقه خود باز کنید:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
فایل به خوبی حاشیه نویسی شده است، و می توانید خطوط بسیاری از نظرات کد (با //) را ببینید که عملکرد آن را توضیح می دهند. اولین بلوک پیکربندی، بستههایی را که بهطور خودکار بهروزرسانی میشوند، بررسی میکند و با الگوی نامهای مخزن بسته اوبونتو مطابقت دارد. فایلهای موجود در مخزن هسته و مخزن -security به طور پیشفرض بهروزرسانی میشوند، اما خطوط حاوی مخازن -updates، -proposed و -backports بهطور پیشفرض نظر داده میشوند.
این مخازن بهطور پیشفرض غیرفعال هستند، زیرا به احتمال زیاد حاوی تغییرات قطعی در بستههای نصبشده شما هستند. برای اینکه به صورت دستی آنها را برای ارتقای بدون نظارت فعال کنید، می توانید نمادهای // نظر را از این خطوط حذف کنید.
در پایین تر از فایل، تعدادی گزینه با ضامن تنظیمات درست / نادرست وجود دارد. به عنوان مثال، پس از نصب بسته هایی که برای اعمال نیاز به راه اندازی مجدد دارند، یک جابجایی برای راه اندازی مجدد خودکار وجود دارد. می توانید این گزینه را با حذف علامت // و تغییر false به true فعال کنید. با این حال، انجام این کار باعث می شود سرور شما در فواصل غیرقابل پیش بینی از دسترس خارج شود. اگر این گزینه را فعال کردید، مطمئن شوید که برنامهها یا کاربران شما میتوانند خرابی را تحمل کنند.
پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. اگر از nano استفاده می کنید، Ctrl+X را فشار دهید، سپس وقتی از شما خواسته شد، Y و سپس Enter را فشار دهید.
اگر تغییراتی در پیکربندی ایجاد کردید، سرویس ارتقاهای بدون نظارت را مجدداً بارگیری کنید تا اعمال شود:
sudo systemctl reload unattended-upgrades.service
اکنون باید راهحلهایی برای اطمینان از دریافت بهروزرسانیهای امنیتی ضروری همه بستههای روی سرور بدون هیچ گونه مداخله اضافی داشته باشید. در مرحله آخر، یاد خواهید گرفت که چگونه هسته خود را به روز نگه دارید، و چگونه می توانید راه اندازی مجدد سرور را در مواقع ضروری مدیریت کنید.
مرحله 3 – به روز رسانی و LivePatching هسته
کمتر از بسته های دیگر، باید هسته سیستم خود را به روز کنید. هسته لینوکس شامل (تقریبا) تمام درایورهای سخت افزاری در حال اجرا است و مسئول بیشتر تعاملات سطح پایین سیستم است. بهروزرسانیهای هسته معمولاً فقط در صورتی ضروری هستند که آسیبپذیری با مشخصات بالایی برای رفع آن وجود داشته باشد، اگر نیاز به استفاده از یک ویژگی عمومی جدید هسته دارید، یا اگر هسته شما آنقدر قدیمی شده است که خطر انباشته شدن باگها و آسیبپذیریها وجود دارد. شما ممکن است آگاه نباشید
هیچ روش جهانی برای زمان بندی خودکار به روز رسانی هسته لینوکس وجود ندارد. این به این دلیل است که بهروزرسانیهای هسته از گذشته نیازمند راهاندازی مجدد کامل سیستم بودهاند و زمانبندی راهاندازی مجدد بدون ایجاد فرضیاتی در مورد محیط شما غیرممکن است. انتظار میرود که بسیاری از سرورها تا حد امکان در دسترس بودن 24 ساعته و 7 روز هفته را ارائه دهند و راهاندازی مجدد میتواند مدت زمان نامعلومی طول بکشد یا نیاز به مداخله دستی داشته باشد.
اگر میخواهید مدتی از کار افتادگی را تحمل کنید، بهروزرسانی هستهتان ساده است: بهروزرسانیهای apt بدون نظارت را میتوان برای نصب و آمادهسازی هستههای جدید به همراه بستههای دیگر پیکربندی کرد و پس از راهاندازی مجدد، سرور شما باید بهطور خودکار از هسته جدید استفاده کند. اکثر استقرارهای تولید به پیچیدگی بیشتری در مورد راه اندازی مجدد مانند این نیاز دارند تا از در دسترس بودن سرویس اطمینان حاصل شود. به عنوان مثال، شما ممکن است از یک متعادل کننده بار برای هدایت خودکار ترافیک به سرورهایی استفاده کنید که می توانند عملکردهای یکسانی را در یک استقرار مقیاس افقی ارائه دهند، در حالی که آنها به صورت جداگانه به ترتیب راه اندازی مجدد می شوند، تا از هرگونه خرابی قابل مشاهده جلوگیری شود.
فعال کردن Livepatch برای اطمینان از Uptime سرور در طول به روز رسانی هسته
برای جلوگیری از خرابی در هنگام ارتقای هسته، می توانید از ویژگی هسته لینوکس به نام وصله زنده استفاده کنید. این ویژگی امکان پیاده سازی به روز رسانی هسته را بدون راه اندازی مجدد می دهد. دو نگهدارنده اصلی برای وصلههای زنده هسته وجود دارد: Canonical، که سرویس Livepatch خود را برای اوبونتو ارائه میکند، و KernelCare که اوبونتو را علاوه بر سایر توزیعهای اصلی لینوکس پشتیبانی میکند. هر دو برای استفاده نیاز به ثبت نام دارند و فقط سرویس Canonical برای استفاده فردی رایگان است.
می توانید برای یک کلید Livepatch در https://auth.livepatch.canonical.com/ ثبت نام کنید. پس از ثبت نام، می توانید بسته snap canonical-livepatch را نصب کنید. Snap یکی دیگر از مدیریت بسته های اوبونتو است که در کنار apt اجرا می شود.
sudo snap install canonical-livepatch
میتوانید با استفاده از کلید وبسایت آنها، با فرمان یک خطی، canonical-livepatch را فعال کنید:
sudo canonical-livepatch enable your-key
خروجی باید حاوی پیام Successfully enabled device باشد. این سرویس باید از این پس بدون هیچ گونه مداخله دیگری در پس زمینه اجرا شود و می توانید وضعیت آن را با استفاده از وضعیت canonical-livepatch بررسی کنید:
sudo canonical-livepatch status
شما اکنون بهروزرسانیهای خودکار هسته را برای سرور خود پیکربندی کردهاید، به این معنی که دیگر نیازی به راهاندازی مجدد برای حفظ یک محیط امن و بهروز نیست.
نتیجه
در این آموزش، چندین استراتژی را برای به روز نگه داشتن سرورهای اوبونتو به طور خودکار بررسی کردید. همچنین برخی از تفاوت های ظریف مخازن بسته، به روز رسانی هسته و مدیریت راه اندازی مجدد سرور را یاد گرفتید. همه اینها اصول مهم DevOps و کار با سرورها به طور گسترده تر هستند و تقریباً تمام پیکربندی های تولید بر اساس این مفاهیم اصلی هستند.
https://vpsgol.net/product/vps-germany/
https://vpsgol.net/product/vps-usa/
https://vpsgol.net/product/vps-france/
https://vpsgol.net/product/vps-canada/
https://vpsgol.net/product/vps-poland/
https://vpsgol.net/product/vps-netherlands/
https://vpsgol.net/product/vps-england/