SELinux چیست

SELinux چیست؟ اس ئی لینوکس مخفف Security Enhanced Linux یک فرایند امنیتی در سیستم‌عامل لینوکس است که به منظور افزایش سطح امنیت در سطوح مختلف سیستم عامل استفاده می‌شود.

Security Enhanced Linux یک معماری امنیتی است که توسط آژانس امنیت ملی ایالات متحده آمریکا (NSA) و Red Hat ایجاد شده است.

این ماژول امنیتی برای اکثر توزیع‌های لینوکس در دسترس است، اما عمدتا در RHEL و Fedora مورد استفاده قرار می گیرد.

اس ئی لینوکس از تکنیک‌های مبتنی بر قوانین دسترسی مؤسساتی (MAC) استفاده می‌کند تا در حد امکان حفاظت و کنترل دسترسی کاربران و برنامه‌ها به منابع سیستم را بهبود بخشد.

MAC نوعی سیستم امنیتی است که به Sysadmins اجازه می‌دهد تا یک سیاست دسترسی امنیتی متمرکز تنظیم کند و مشخص کند که کدام کاربران و فرایندها به منابع خاصی دسترسی دارند.

اس ئی لینوکس، sysadmins را از اپلیکیشن‌هایی که کاربر اجرا می‌کند، متمایز می‌کند. برای مثال، کاربر shell دسترسی کاملی به دایرکتوری home دارد.

با این حال، اگر کاربر یک کلاینت ایمیل را اجرا کند، SELinux مانع دسترسی کلاینت به بخش‌های خاص دایرکتوری home می‌شود.

با استفاده از لایه اضافی امنیتی SELinux، قابلیت‌های نظارتی و محدودکننده‌ای بر روی فعالیت‌های سیستم اعمال می‌شود.

SELinux با ارائه محدودیت‌های دقیق در دسترسی به فایل‌ها، پردازه‌ها، سوکت‌ها و سایر منابع سیستم، اجازه می‌دهد تا محافظت از امنیت و امکانات سیستم تا حد امکان افزایش یابد.

بیشتر بدانید : نصب GoLang در اوبونتو

به عبارت دیگر، اس ئی لینوکس همچون یک حفاظ امنیتی عمل می‌کند که درصورت نقض حقوق دسترسی، اقدام به مسدودسازی و کنترل دسترسی‌های غیرمجاز می‌کند.

با استفاده از SELinux، می‌توانید در مقابل تهدیدات امنیتی مختلف مانند اجرای بدافزارها، نفوذهای ناشناخته و انحرافات امنیتی مقاومت کنید.

هدف اصلی اس ئی لینوکس، ارائه یک لایه اضافی امنیتی قدرتمند است که به کمک تنظیمات دقیق و یک سیاست مشخص برای کنترل دسترسی، امنیت سیستم عامل را به سطحی بالاتر ارتقا دهد.

با این حال، امکانات قدرتمند SELinux و افزایش سطح امنیتی که ارائه می‌دهد به صورت گسترده مورد استفاده در سرورها و سیستم‌هایی قرار می‌گیرد که امنیت سیستم از اهمیت بالایی برخور است.

با نصب و فعال‌سازی اس ئی لینوکس، می‌توانید سیستم‌عامل را در برابر حملات خارجی، برنامه‌های مخرب و سوءاستفاده از ضعف‌های امنیتی محافظت کنید.

در واقع، اس ئی لینوکس از طریق استفاده از مکانیزم‌های مجوزدهی پیشرفته و تحقق داده‌های محافظت شده اجازه می‌دهد تا محدودیت‌های سخت‌افزاری در ارتباط با دسترسی‌ها، فرایندها و فایل‌ها را تنظیم کند و محافظت از سیستم عامل را تقویت کند.

این معماری امنیتی جداسازی امتیازات بین کاربران سیستم و فرآیندها را اعمال می‌کند و مدیران را قادر می‌سازد تا دسترسی به منابع را به طور مؤثرتری مدیریت کنند.

همچنین SELinux با جداسازی سیاست‌های امنیتی و اجرای تصمیمات امنیتی در داخل کرنل، سطح حفاظت را افزایش می‌دهد.

آشنایی با نحوه کار SELinux
آشنایی با نحوه کار SELinux

SELinux چگونه کار می‌کند

📝 سلام! یک مقدمه برای مطلب SELinux می‌نویسم: 🔒 SELinux، یا Security-Enhanced Linux، یک تکنولوژی امنیتی قدرتمند برای سیستم‌های عامل لینوکس است. SELinux به عنوان یک ماژول امنیتی در هسته سیستم عامل عمل می‌کند و به تقویت و افزایش سطح امنیت سیستم کمک می‌کند. 💪 SELinux از تکنیک‌های مبتنی بر قوانین دسترسی مؤسساتی (MAC) استفاده می‌کند تا در حد امکان حفاظت و کنترل دسترسی کاربران و برنامه‌ها به منابع سیستم را بهبود بخشد. با استفاده از لایه اضافی امنیتی SELinux، قابلیت‌های نظارتی و محدودکننده‌ای بر روی فعالیت‌های سیستم اعمال می‌شود. ⚙️ SELinux با ارائه محدودیت‌های دقیق در دسترسی به فایل‌ها، پردازه‌ها، سوکت‌ها و سایر منابع سیستم، اجازه می‌دهد تا محافظت از امنیت و امکانات سیستم تا حد امکان بالا را فراهم کند. به عبارت دیگر، SELinux همچون یک نگهبان امنیتی عمل می‌کند که درصورت نقض حقوق دسترسی، اقدام به مسدودسازی و کنترل دسترسیهای ناخواسته می‌کند. 🚀 با استفاده از SELinux، می‌توانید در مقابل تهدیدات امنیتی مختلف مانند اجرای بدافزارها، نفوذهای ناشناخته و انحرافات امنیتی مقاومت کنید. هدف اصلی SELinux ارائه یک لایه اضافی امنیتی قدرتمند است که به کمک تنظیمات دقیق و یک سیاست مشخص برای کنترل دسترسی، امنیت سیستم عامل را به سطحی بالاتر ارتقا دهد. ❗️توجه داشته باشید که SELinux ممکن است به دلیل پیچیدگی‌هایش در محیط‌های پیکربندی شده نیازمند مطالعه و آموزش مناسب باشد. با این حال، امکانات قدرتمند SELinux و افزایش سطح امنیتی که ارائه می‌دهد، به صورت گسترده مورد استفاده در سرورها و سیستم‌هایی قرار می‌گیرد که امنیت سیستم یک اولویت بالایی در ادامه مطلب SELinux چیست، شما را با نحوه عملکرد آن آشنا خواهیم کرد. پس تا پایان مطلب همراه ما باشید.

اس ئی لینوکس کنترل‌های دسترسی را برای برنامه‌ها، فرایندها و فایل‌های یک سیستم تعریف می‌کند.

این برنامه از سیاست‌های امنیتی که مجموعه‌ای از قوانین هستند، استفاده می‌کند که به SELinux می‌گویند به چه چیزهایی می‌توان یا نمی‌توان دسترسی داشت تا دسترسی مجاز توسط یک سیاست را اجرا کند.

هنگامی که یک برنامه یا فرآیند به عنوان موضوع شناخته می‌شوند، درخواستی برای دسترسی به یک شی، مانند یک فایل، ارائه می‌کند، SELinux با دسترسی vector cache بررسی می‌کند، جایی که مجوزها برای موضوعات و اشیاء ذخیره می‌شوند.

اگر SELinux قادر به تصمیم گیری در مورد دسترسی براساس مجوزهای ذخیره شده نباشد، درخواست را به سرور امنیتی ارسال می‌کند.

سرور امنیتی، زمینه امنیتی فرآیند و فایل را بررسی می‌کند. زمینه امنیتی از پایگاه داده SELinux اعمال می‌‌شود. سپس رد یا تایید می‌شود.

در صورت عدم اجازه، پیغام “adc: unied” در / var / log.mes در دسترس خواهد بود.

نحوه پیکربندی SELinux

پس از پاسخ به این سوال که SELinux چیست، می توانید با کمک چندین روش، SELinux را برای محافظت از سیستم خود پیکربندی کنید. رایج‌ترین آنها خط مشی هدفمند یا امنیت چند سطحی (MLS) هستند.

خط مشی هدفمند گزینه پیش فرض است و طیف وسیعی از فرآیندها، وظایف و خدمات را پوشش می‌دهد. MLS می‌تواند بسیار پیچیده باشد و معمولاً فقط توسط سازمان‌های دولتی استفاده می‌شود.

شما می‌توانید با رجوع به فایل /etc/sysconfig/selinux متوجه شوید که سیستم شما قرار است چه کاری انجام دهد.

این فایل دارای بخشی است که به شما نشان می‌دهد که آیا SELinux در حالت مجاز، اجرا یا غیرفعال است و اینکه قرار است کدام سیاست بارگذاری شود.

سیاست‌های SELinux چیست

SELinux به صورت پیش فرض تمام اپلیکیشن‌ها و کاربران را مسدود می‌کند و تنها اجازه دسترسی به موارد مشخص شده در سیاست‌های امنیتی را می‌دهد.

سیاست‌های امنیتی مجموعه‌ای از قوانین هستند که به SELinux آموزش می‌‌دهند که به کدام منبع سیستم دسترسی دارد. این قوانین مجوزها را برای هر کاربر، فرآیند و منبع تعیین می‌کنند.

اس ئی لینوکس هر تصمیم (مسدود کردن یا اجازه دسترسی) را در Vector Cache دسترسی (AVC) ذخیره می‌کند و فرآیند کنترل دسترسی را سرعت می‌بخشد.

وقتی یک فرآیند، دسترسی به یک منبع را درخواست می‌کند، SELinux با AVC مشورت می‌کند تا بررسی کند که آیا تصمیمی برای آن درخواست گرفته شده است یا خیر.

اگر بله، فورا درخواست را رد می‌کند و در زمان و منابع صرفه جویی می‌کند. در غیر این صورت، SELinux با قوانین سیاست مشورت می‌کند و تصمیم می‌گیرد.

یکی از ویژگی‌های حیاتی Security Enhanced Linux، توانایی تعیین مجوزهای مختلف برای فرآیندهای مختلف است.

برای مثال، یک ادمین خط‌مشی را تنظیم می‌کند که به فرآیند وب سرور اجازه خواندن و نوشتن در ریشه سند را می‌دهد، اما فرآیندهای دیگر را مسدود می‌کند.

به عنوان مثال، یک sysadmin خط‌مشی را تنظیم می‌کند که به وب سرور اجازه می‌دهد فقط تحت شرایط خاصی، به عنوان مثال، زمانی که درخواست از یک آدرس IP قابل اعتماد می‌آید، در روت بخواند و بنویسد.

همچنین، SELinux از کنترل‌های دسترسی مبتنی بر متن پشتیبانی می‌کند. به عنوان مثال، یک sysadmin سیاستی را تنظیم می‌کند که به وب سرور اجازه می‌دهد فقط تحت شرایط خاصی، یعنی زمانی که درخواست از یک آدرس IP قابل اعتماد می‌آید، در root بخواند و بنویسد.

آشنایی با حالت‌های SELinux
آشنایی با حالت‌های SELinux

حالت‌های SELinux چیست

یکی از ویژگی‌های کلیدی SELinux توانایی کار در حالت‌های مختلف است که به sysadminها اجازه می‌دهد تا امنیت سیستم را به خوبی تنظیم کند. سه حالت اصلی SELinux وجود دارد.

حالت Enforcing

در این حالت، SELinux سیاست‌های کنترل دسترسی تنظیم شده توسط sysadmin را اعمال می‌کند و به کاربران اجازه لغو را نمی‌دهد.

اگر کاربر یا فرآیندی تلاش کند به منبعی که توسط سیاست‌ها مجاز نیست دسترسی پیدا کند، SELinux درخواست را رد و تصمیم را در AVC ثبت می‌کند.

حالت Permissive

در این حالت، SELinux خط‌مشی‌ها را اجرا نمی‌کند، اما رویدادها را زمانی که کاربر یا فرآیند تلاش می‌کند به منبعی که توسط خط‌مشی‌ها مسدود شده است دسترسی پیدا کند، ثبت می‌کند.

این امر به sysadminها امکان می‌دهد تا سیستم را از نظر مسائل امنیتی بالقوه نظارت کنند و هر گونه تغییر خط مشی لازم را قبل از مجوز دادن به حالت اجرا انجام دهند.

حالت Disabled

در این حالت، SELinux سیاست‌های کنترل دسترسی را اعمال نمی‌کند. این حالت برای تست یا اشکال زدایی مفید است.

نحوه پیکربندی SELinux

لینوکس دارای خط‌مشی‌های امنیتی SELinux از پیش نصب‌شده است که پیکربندی را ساده می‌کند. علاوه بر این، به مدیران اجازه می‌دهد تا سیاست‌های امنیتی خود را تعریف کنند.

راه‌های مختلفی برای پیکربندی SELinux وجود دارد، چه به صورت دائمی و چه در طول جلسه جاری، در ادامه مطلب SELinux چیست، به بررسی هریک خواهیم پرداخت.

پیکربندی دائمی SELinux

برای تنظیم یک پیکربندی SELinux که پس از راه‌اندازی مجدد تنظیم نمی‌شود، فایل /etc/selinux/config را ویرایش کنید. این فایل شامل گزینه‌های پیکربندی SELinux، از جمله حالتی است که SELinux باید در آن کار کند.

برای تنظیم حالت enforcing، مجاز یا غیرفعال، متغیر SELINUX را متناسب با آن تغییر دهید. به عنوان مثال، برای تنظیم SELinux به حالت enforcing، مراحل زیر را دنبال کنید.

فایل پیکربندی SELinux را در یک ویرایشگر متن انتخابی خود باز کنید. این آموزش از Vim استفاده می‌کند. برای آشنایی با این ویرایشگر، شما را به خواندن مطلب نصب و استفاده از ویرایشگر Vim در لینوکس سرور، دعوت می‌نماییم.

sudo vim /etc/selinux/config
بازکردن فایل پیکربندی SELinux
بازکردن فایل پیکربندی SELinux

متغیر Security Enhanced Linux را به صورت زیر تنظیم کنید.

SELINUX=permissive
نحوه تنظیم SELINUX
نحوه تنظیم SELINUX

فایل را ذخیره کرده و از آن خارج شوید و سپس سیستم را مجدد راه اندازی کنید.

در نهایت، با اجرای دستور زیر تغییرات را بررسی کنید.

sudo sestatus
بررسی تغییرات
بررسی تغییرات

دستور sestatus نشان می‌دهد که حالت فعلی Security Enhanced Linux مجاز است و تغییر در فایل پیکربندی را تأیید می‌کند.

پیکربندی موقت SELinux

SELinux دستوراتی را برای تنظیم پیکربندی فقط برای جلسه جاری ارائه می دهد. پس از شروع مجدد session، تنظیمات به تنظیمات موجود در فایل پیکربندی بازنشانی می‌شود.

دستور setenforce حالت اجرا را روشن (با متغیر ۱) یا خاموش (با متغیر ۰) می‌کند. برای فعال کردن حالت اجرا، دستور زیر را اجرا کنید.

sudo setenforce 1

این دستور هیچ خروجی ارائه نمی‌دهد. با استفاده از Sestatus یا getenforce نتیجه را تایید کنید.

برای بررسی اینکه آیا SELinux در حالت اعمال با sestatus است یا خیر، دستور زیر را اجرا کنید.

sudo sestatus
بررسی SELinux
بررسی SELinux

خروجی نشان می‌دهد که حالت current در حال اجرا است، در حالی که متغیر فایل پیکربندی هنوز permissive است. راه‌اندازی مجدد ترمینال، حالت current را به حالت getenforce برمی‌گرداند.

روش دیگر، برای بررسی حالت current با دستور getenforce است.

sudo getenforce
بررسی حالت current
بررسی حالت current

تفاوت Linux در مقابل SELinux

SELinux و Linux دو موجودیت مجزا هستند. لینوکس یک سیستم عامل است و SELinux یک ماژول امنیتی است که بخشی از هسته لینوکس است.

تفاوت راه اندازی استاندارد لینوکس و SELinux هدف آنها است.

لینوکس به عنوان یک سیستم عامل، منابع سخت افزاری و نرم افزاری را مدیریت می‌کند و پایه و اساس توسعه نرم افزار را فراهم می‌کند.

از سوی دیگر، SELinux یک جزء امنیتی است که از لینوکس در برابر نرم افزارهای مخرب و دسترسی غیرمجاز محافظت می‌کند.

اجرای کنترل دسترسی در تنظیمات استاندارد لینوکس، کاربران و برنامه‌ها تا زمانی که از امتیازات لازم برخوردار باشند، دسترسی نامحدودی به سیستم دارند.

مکانیسم Discretionary Access Control (DAC) است. با این حال، SELinux متفاوت عمل می‌کند.Security-Enhanced Linux به مدیران اجازه می‌دهد تا مجوزها را برای هر کاربر، فرآیند و منبع موجود در سیستم مشخص کنند.

Security Enhanced Linux هرگونه تلاش برای دسترسی غیرمجاز را مسدود می‌کند، در حالی که sysadminها از سیاست‌های امنیتی برای تعیین اینکه کاربر به فرآیندها یا فایل‌های سیستم عامل خاص دسترسی دارد، استفاده می‌کند.

جمع بندی

SELinux یک مکانیزم کنترل دسترسی قدرتمند است که به کمک آن می‌توان بخش‌های مختلف سیستم عامل را محدود کرده و امنیت آن‌ها را بهبود بخشید. SELinux نقش مهمی در امنیت سیستم عامل لینوکس دارد و قابلیت‌هایی مانند کنترل بیشتری بر دسترسی‌ها، تمایز بین پروسه‌ها، ایزوله‌سازی منابع و جلوگیری از حملات مخرب را فراهم می‌کند. با استفاده از SELinux، می‌توان بهبود امنیت سیستم خود را ارتقاء داده و خطرات امنیتی را کاهش داد.

پس از مطالعه این مقاله، بامفهوم Security Enhanced Linux آشنا شده و می‌توانید یک پیکربندی امنیتی ساده را تنظیم کنید.

اشتراک‌گذاری

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *