lockdown در لینوکس چیست؟ و چه کاربردی دارد
پس از سالها بررسی و بحث و بازنویسی کد، لینوس توروالدز ویژگی امنیتی جدید هستهی لینوکس بهنام «قفلکردن» (lockdown) را تأیید کرد.
بهزودی، ویژگی جدید لینوکس بهعنوان ماژول امنیتی لینوکس (Linux Security Module) یا LSM بههمراه نسخهی جدید هستهی لینوکس ۵.۴ عرضه خواهد شد؛ بااینحال، این ویژگی بهصورت پیشفرض خاموش خواهد بود و استفاده از آن بهدلیل خطرهای احتمالی مانند ازکارافتادن سیستم اختیاری خواهد بود.
بستن حساب روت (Root)
کارایی اصلی این ویژگی جدید تقویت شکاف بین فرایندهای کاربر و کد هسته است که با منع دسترسی به کدهای کرنل حتی برای حساب روت اتفاق میافتد. حساب روت بهصورت پیشفرض تاکنون بهشکلی طراحی شده است که اجازه دسترسی به کدهای هسته را داشته باشد. هنگام فعالسازی ویژگی «قفلکن» دسترسی به بعضی از کاراییهای هسته محدود خواهد شد. این عمل باعث خواهد شد درصورت وجود حساب غیرایمن Root، از آسیبرساندن به دیگر بخشهای سیستمعامل جلوگیری شود.
متیو گرت، یکی از مهندسان ارشد گوگل است که ساخت این ویژگی را چندین سال قبل پیشنهاد کرده بود. وی گفته است:
ماژول قفلکن به این منظور ساخته شده است که به هسته اجازه دهد هنگام فرایند راهاندازی سیستم قفل شود.
لینوس توروالدز، خالق هستهی لینوکس و کسی که چند روز قبل روی این ویژگی جدید مُهر تأیید زده، معتقد است:
هنگام فعالبودن ویژگی جدید کارایی قسمتهای مختلف هسته محدود خواهد شد.
این ویژگی اجازهی اجرای کد دلخواه را محدود خواهد کرد که فرایندهای کاربران عادی آن را تهیه کرده است. مسدودکردن فرایندها برای نوشتن یا خواندن در مسیرهای /dev/mem و /dev/kmem حافظه، مسدودکردن دسترسی برای بازکردن مسیر /dev/port برای جلوگیری از دسترسی به دادههای خام شبکه، اجبار برای کلیدگذاری ماژولهای کرنل و… شامل ویژگی جدید خواهد بود. میتوانید جزئیات بیشتر را از اینجا مطالعه کنید.
دو حالت مختلف قفلکن
ماژول جدید ارائهشده میتواند دو حالت مختلف بهنامهای «مستقل» و «محرمانه» را برای انجام فرایند قفلکردن هستهی سیستم پشتیبانی کند. هرکدام از این حالتها، منحصربهفرد خواهند بود و دسترسی به قسمتهای مختلف از فرایندهای کرنل را محدود خواهند کرد.
تراولدس دربارهی جزئیات بیشتر گفت:
اگر در حالت مستقل قرار گیرد، ویژگیهایی غیرفعال خواهد شد که به کاربران داده شده بود تا هسته را ویرایش کنند. اگر در حالت محرمانه قرار گیرد، ویژگیهای هسته نیز غیرفعال خواهد شد که به کاربران اجازه میدهد اطلاعات محرمانه را از هستهی سیستم استخراج کنند.
درصورت لزوم، میتوان حالت ققلکن دیگری روی ماژول قفلکن ارائهشده قرار داد؛ ولی این کار نیازمند استفاده از پچهای خارجی خواهد بود.
حضور دیرهنگام
شروع کار روی ویژگی قفلکن هسته در اوایل سال ۲۰۱۰ آغاز شد که پیشگام آن مهندس فعلی گوگل، متیو گرت است. ایدهی اصلی شکلگیری ویژگی قفلکن این بود که مکانیزمی امنیتی روی هسته قرار گیرد که کاربران با مجوز دسترسی بالا، توانایی دسترسی و دستکاری کد هسته را نداشته باشند.
در گذشته، حتی اگر مکانیزم راهاندازی امنی برای سیستم لینوکس بهکار گرفته میشد، بااینحال بازهم راههایی برای سوءاستفاده وجود داشت که بدافزارها بتوانند به درایورها و حساب ریشه و حساب کاربری ویژه با سطح دسترسی بالا رخنه کنند و بتوانند کد کرنل را دستکاری کنند تا به بوت پایدار و جای پای ثابت روی سیستم آلودهشده دست یابند.
در سالهای گذشته، بسیاری از متخصصان امنیتی درخواست کردند هستهی لینوکس باید از روشی قدرتمند برای محدودکردن حساب ریشه پشتیبانی کند و امنیت هستهی لینوکس را ارتقا بخشد.
مخالف اصلی این کار شخصی نبود جز خود تراولد؛ کسی که در ابتدا و روزهای اول یکی از منتقدان سرسخت این ویژگی بود. در نتیجهی این مخالفت، بسیاری از توزیعهای لینوکس، مانند ردهت (Red Hat)، توسعهی پچهای هستهی لینوکس خود را برای ایجاد ویژگی قفلکن روی هستهی اصلی لینوکس شروع کردند. بااینحال، هر دو طرف ماجرا بالاخره توانستند در سال ۲۰۱۸ بهتوافق برسند و روند کار روی ویژگی قفلکن امسال پیش رفت تا به سرانجام رسید.
تراولدز چند روز گذشته در پستی گفت:
بسیاری از توزیعهای اصلی سالها است که انواع مختلفی از مجموعه پچهای مشابه را همراه دارند. برنامههایی که به دسترسی سطح پایین به سختافزار نیاز دارند یا به کرنل متکی هستند، ممکن است از کار بیفتند؛ بنابراین این ویژگی نباید بدون ارزیابی مناسب فعال شود.
ناگفته نماند خبر تأیید ماژول قفلکن هستهی لینوکس با استقبال درخور توجه جامعهی لینوکس و امنیت سایبری مواجه شده است.
قابلیت Lockdown در لینوکس چیست؟
این قابلیت جدید در اصل به صورت قدرتمند فرآیندها و کدهای کرنل را از هم جدا میکند و این کار را با استفاده از محدود کردن هر گونه ارتباط و تعامل بین اکانتهای روت و کد کرنل انجام میدهد.
به گفته لینوس توروالدز، زمانی که قابلیت Lockdown را فعال کنید، برخی از عملکردهای کرنل، حتی برای کاربران روت هم محدود میشود. بنابراین به خطر انداختن سیستم عامل، حتی با وجود در خطر بودن اکانت روت، باز هم سخت خواهد بود.
متیو گارت، یکی از مهندسان گوگل که سالها پیش قابلیت lockdown را مطرح کرده بود، درباره این قابلیت چنین توضیح داده است:
ماژول Lockdown به کرنل امکان میدهد که به سرعت در فرآیند بوت، قفل شود.
قابلیت Lockdown لینوکس چه محدودیتهایی ایجاد میکند؟
به واسطه Lockdown، کاربردها و قابلیتهایی از کرنل که باعث اجرای کدهای دلخواه، آن هم از سمت فضای کاربر میشود، مسدود میشوند. از جمله این محدودیتها میتوانیم به موارد زیر اشاره کنیم:
مسدود کردن فرآیندها از خواندن و نوشتن در مسیر dev/mem and /dev/kmem/
- محدودیت دسترسی برای باز کردن /dev/port
- جلوگیری از دسترسی به پورت خام
- اجرای امضای ماژولهای هسته
- و…
زیر ماژولهای Lockdown و ویژگی هر یک
ماژول جدید Lockdown، خود از دو ماژول دیگر به نامهای integrity و confidentiality تشکیل شده است که هر یک محدودیتهای متفاوتی را بر روی کرنل اعمال میکنند. محدودیتهایی که هر یک اعمال میکنند به صورت زیر است:
- Integrity: قابلیتهای کرنل که به فضای کاربری اجازه دستکاری آن را میدهند غیر فعال میشوند.
- confidentiality: میتوان قابلیتهای کرنل که امکان استخراج اطلاعات محرمانه فضای کاربری را فراهم میکنند را غیر فعال کرد.
البته امکان اضافه کردن گزینههای دیگری به LockDown هم هست اما برای اعمال این تغییرات، به اضافه کردن وصلههای خارجی نیاز دارید.