SELinux چیست؟

امیرحسین بیگدلو 4 ماه قبل

 

 #  معرفی selinux

"SE" در SELinux مخفف Security-Enhanced است. لینوکس اساسا یک سیستم عامل مانند ویندوز، اندروید و iOS است. با این حال، لینوکس به جای توسعه توسط یک شرکت واحد، همیشه یک پروژه منبع باز بوده است. کد منبع هسته لینوکس برای پروژه های غیر انتفاعی و تجاری به طور رایگان در دسترس توسعه دهندگان است. بر اساس هسته لینوکس، چندین سیستم عامل مبتنی بر لینوکس ایجاد شده است. اینها به عنوان "توزیع" نامیده می شوند و برخی از معروف ترین آنها اوبونتو، دبیان و فدورا هستند.

 

کد هسته لینوکس به طور مداوم توسط شرکت ها، داوطلبان و سازمان های غیر انتفاعی در حال توسعه است. selinux یک برنامه افزودنی از هسته لینوکس است و به عنوان یک ماژول امنیتی مستقل در دسترس است. در سال 2003 به طور رسمی در هسته لینوکس ادغام شد. برخی از توزیع‌های لینوکس SELinux را به صورت استاندارد ارائه می‌کنند، اما اگر به آن نیاز ندارید، می‌توانید به راحتی آن را غیرفعال کنید. SELinux به مدیران کنترل بیشتری بر فرآیندهای اجرا شده بر روی سیستم خود می دهد. هر فرآیندی که ضروری تلقی نمی شود مسدود می شود. این امر خطرات مربوط به آسیب پذیری های امنیتی در برنامه های کاربر را تا حد زیادی کاهش می دهد.

 

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

 

لینوکس تقویت‌شده با امنیت (SELinux) یک معماری امنیتی برای سیستم‌های Linux است که به مدیران اجازه می‌دهد کنترل بیشتری بر روی افرادی که می‌توانند به سیستم دسترسی داشته باشند، داشته باشند. SELinux عمدتا توسط آژانس امنیت ملی ایالات متحده (NSA) و توزیع کننده لینوکس Red Hat توسعه داده شده است. اولین سیستم عامل هایی که به طور کامل از SELinux پشتیبانی کردند، Red Hat Enterprise Linux 4 و توزیع فدورا با حمایت Red Hat بودند. علاوه بر Red Hat و Fedora،  توزیع Gentoo Hardened Linux نیز پشتیبانی نسبتاً جامعی از SELinux ارائه می دهد. کسانی که به دنبال جایگزینی برای SELinux هستند می‌توانند ماژول امنیتی AppArmor را امتحان کنند که عمدتاً توسط توزیع‌هایی مانند openSUSE و پلتفرم‌های مبتنی بر دبیان پشتیبانی می‌شود.

 

دوره پیشنهادی: دوره آموزش لینوکس

 

 #  کنترل دقیق دسترسی به سیستم عامل

معماری امنیتی ویژه SELinux بر اساس اصل کنترل اجباری دسترسی (MAC) است. برخلاف هسته استاندارد لینوکس، SELinux فقط در صورتی اجازه دسترسی به فرآیندها و فایل های سیستم عامل را می دهد که این امر کاملا ضروری باشد. هدف تضمین محرمانه بودن و یکپارچگی داده ها با اجرای یک استراتژی کنترل دسترسی دقیق و سیاست های امنیتی مربوطه است. با SELinux، سیستم عامل و برنامه های کاربر به وضوح از یکدیگر جدا شده اند.

 

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

 

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

 

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

 

مقاله پیشنهادی: کرم کامپیوتری چیست؟

 

 #  selinux چطور دسترسی را محدود میکند؟

راه اندازی استاندارد لینوکس از کنترل دسترسی اختیاری (DAC) استفاده می کند. با این نوع مکانیزم، اگر کاربران و اپلیکیشن ها از امتیازات لازم برخوردار باشند، عموماً دسترسی نامحدودی به داده ها و فرآیندهای سیستم عامل دارند. هنگامی که کنترل دسترسی اجباری(MAC) اجرا می شود، مانند SELinux، یک مدیر از سیاست های امنیتی دقیقاً تعریف شده برای تعریف ویژگی های اضافی استفاده می کند که شرایط و زمینه هایی را تعیین می کند که در آن کاربر ممکن است به فرآیندها یا فایل های سیستم عامل خاصی دسترسی پیدا کند. اگر شرایط یا زمینه‌ها (یعنی ویژگی‌ها) تأیید نشده باشند، دسترسی ممنوع است.

 

به منظور کنترل در SELinux، مدیر برچسب های زیر را اختصاص می دهد:

  • User
  • Role
  • Type
  • Level

 

این برچسب ها را می توان برای هر فرآیند و فایل اختصاص داد و سپس در سیاست های امنیتی تعریف شده ادغام کرد. به عنوان مثال، ممکن است یک برنامه فقط به پوشه هایی که دارای برچسب خاصی هستند دسترسی داشته باشد. فرآیند بررسی سیاست های امنیتی به عنوان اجرای SELinux نامیده می شود.

 

مقاله پیشنهادی: پراکسی معکوس چیست؟

 

 #   مزایا و معایب selinux

SELinux مانع یا از سوء استفاده از حقوق کاربر جلوگیری می کند که ممکن است زمانی رخ دهد که برنامه های کاربر دارای نقص های امنیتی باشند. بنابراین سیستم عامل به خوبی محافظت می شود. توزیع کنندگان لینوکس ماژول SELinux را با بسته های مختلف خط مشی و سیاست های امنیتی مربوطه ارائه می دهند که پیکربندی لایه امنیتی را ساده می کند. مدیران مجاز نیز می توانند سیاست های امنیتی را خودشان تعریف کنند.

 

اگرچه SELinux به مدیران کنترل بیشتری بر فرایندها و سیستم ها می دهد، اما واقعاً به آنها در حل مشکلات کمک نمی کند. هر زمان که SELinux دسترسی را مسدود می کند، یک پیام خطا صادر می کند، اما این پیام ها اغلب بسیار مبهم هستند که عیب یابی را نسبتاً دشوار می کند. SELinux نیز یک ماژول نسبتا پیچیده است. بسیاری از مدیران احساس می‌کنند که برخورد با سیاست‌های امنیتی و تعریف ویژگی‌ها بسیار پیچیده است یا به تلاش بیش از حد نیاز دارد. علاوه بر این، پیاده سازی SELinux می تواند تأثیر منفی کمی بر عملکرد سیستم عامل داشته باشد.

 

مقاله پیشنهادی: چرا مردم نرم‌افزارهای open source میسازند؟

 

 #  نتیجه گیری

SELinux یک ابزار امنیتی بسیار قدرتمند است ، اما اگر می خواهید از آن استفاده کنید ، باید آماده باشید تا کارهای بیشتری انجام دهید. این نرم افزار تنها در صورتی مؤثر خواهد بود که برای پیکربندی صحیح همه چیز وقت بگذارید - اگر فقط تا حدی آن را تنظیم کنید، از مزایای آن بهره نخواهید برد. با این وجود، در محیط های حرفه ای که داده های حساس مدیریت می شوند، استفاده از SELinux به شدت توصیه می شود.

مطالب مشابه



مونگارد