اصول کنترل دسترسی اجباری با SELinux (نسخه به‌روزشده) پرینت


## 🔐 اصول کنترل دسترسی اجباری با SELinux (نسخه به‌روزشده)

**SELinux** (Security-Enhanced Linux) یک سیستم **کنترل دسترسی اجباری (Mandatory Access Control - MAC)** است که به منظور افزایش امنیت در سیستم‌های لینوکسی طراحی شده است. این سیستم توسط NSA توسعه یافت و در توزیع‌هایی مثل **RHEL, CentOS, Fedora** و مشتقات آن به صورت پیش‌فرض فعال است.

---

## 📌 تفاوت SELinux با مجوزهای سنتی لینوکس

در لینوکس سنتی، مجوزها فقط بین مالک، گروه و دیگران قابل تعریف است. اما با SELinux، **سیاست‌های دقیق‌تری در سطح کاربر، پردازه، پورت و حتی فایل‌ها** اعمال می‌شود که مانع اجرای عملیات‌های غیرمجاز حتی توسط کاربر ریشه (root) می‌شود.

---

## 🧰 حالات عملکرد SELinux

```bash
getenforce
```

### سه حالت عملکرد:

* **Enforcing**: سیاست‌ها اعمال می‌شوند.
* **Permissive**: فقط گزارش (log) تولید می‌شود ولی محدودیتی اعمال نمی‌شود.
* **Disabled**: SELinux غیرفعال است.

برای تغییر حالت به صورت موقت:

```bash
sudo setenforce 0 # Permissive
sudo setenforce 1 # Enforcing
```

---

## 🔎 بررسی وضعیت SELinux

```bash
sestatus
```

---

## 🗂 ساختار برچسب‌های SELinux

هر فایل یا پروسه دارای یک **context** است مثل:

```bash
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
```

برچسب‌ها شامل:

* **user**
* **role**
* **type** ← مهم‌ترین
* **level**

---

## 🛠 دستورات کلیدی SELinux

### 1. **تغییر برچسب فایل‌ها:**

```bash
sudo chcon -t httpd_sys_content_t /var/www/html/index.html
```

### 2. **بازنشانی برچسب‌ها به حالت پیش‌فرض:**

```bash
sudo restorecon -Rv /var/www/html
```

### 3. **مدیریت سیاست‌های Boolean:**

```bash
getsebool -a
setsebool -P httpd_can_network_connect on
```

---

## 📚 رفع مشکلات رایج SELinux

اکثر مواقع SELinux باعث مشکلاتی مانند **اجرا نشدن سرویس‌ها** یا **محدود شدن دسترسی به فایل‌ها** می‌شود. در این مواقع، لاگ SELinux را بررسی کنید:

```bash
sudo ausearch -m avc -ts recent
# یا
sudo journalctl | grep AVC
```

برای پیشنهاد خودکار رفع مشکل:

```bash
sudo sealert -a /var/log/audit/audit.log
```

---

## 🔐 نکات امنیتی مهم

* هرگز SELinux را کاملاً **غیرفعال نکنید**، بلکه آن را در حالت Permissive بگذارید تا مشکلات احتمالی را شناسایی کنید.
* از ابزار **audit2why** و **audit2allow** برای تحلیل لاگ‌ها و ساخت policy استفاده کنید.

---

## ✅ نتیجه‌گیری

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

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت