یک لایه دفاعی فراتر از مجوز فایل
مجوزهای معمول لینوکس (owner/group/other) بهعنوان کنترل دسترسی اختیاری (DAC) شناخته میشوند: صاحب فایل تصمیم میگیرد چه کسی به آن دسترسی داشته باشد. مشکل این مدل این است که اگر یک برنامه (مثلاً یک وبسرور) با آسیبپذیری امنیتی نفوذ شود، مهاجم به همه چیزی که آن کاربر مجاز به دسترسی است، دسترسی پیدا میکند. کنترل دسترسی اجباری (MAC) یک لایه دفاعی اضافه است که حتی اگر یک برنامه نفوذ شود، محدودیتهای سختگیرانهای روی کارهایی که میتواند انجام دهد اعمال میکند.
دو پیادهسازی رایج MAC در لینوکس عبارتاند از SELinux (پیشفرض در RHEL/CentOS/Fedora) و AppArmor (پیشفرض در Ubuntu). هرکدام رویکرد متفاوتی دارند: SELinux بر پایه برچسبگذاری (labeling) هر فایل و فرایند کار میکند، در حالی که AppArmor بر پایه مسیر فایل و پروفایلهای سادهتر است.
› بررسی وضعیت SELinux
sestatus
getenforce
› تغییر موقت به حالت permissive (فقط ثبت لاگ، بدون مسدودسازی)
sudo setenforce 0
› بررسی وضعیت AppArmor
sudo aa-status
› اجرای یک پروفایل AppArmor در حالت complain (فقط هشدار)
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx
یک اشتباه رایج، غیرفعال کردن کامل SELinux یا AppArmor بهجای فهمیدن و رفع مشکل است. اگر سرویسی با
«Permission denied» عجیب مواجه شد در حالی که مجوزهای فایل درست است، اولین جای بررسی باید لاگ SELinux
(audit.log) باشد، نه غیرفعال کردن کل لایه امنیتی.