مدیریت دسترسی در لینوکس یکی از مهمترین جنبههای امنیتی این سیستمعامل متنباز محسوب میشود. لینوکس به دلیل انعطافپذیری بالا، امکانات متعددی را برای کنترل سطح دسترسی کاربران، گروهها و حتی فرآیندها ارائه میدهد. از مدل سنتی مجوزهای مالک، گروه و سایرین (User, Group, Others) گرفته تا سیستمهای پیشرفتهای مانند ACL و SELinux، همه این روشها در کنار هم به مدیران سیستم کمک میکنند تا دسترسیها را بهدقت تنظیم و نظارت کنند. در این مقاله، بهطور کامل و جامع به مدلهای دسترسی، تخصیص مجوزها، کنترل دسترسی مبتنی بر نقش (RBAC)، احراز هویت، امنیت فایل ها و سیاستهای امنیتی در لینوکس خواهیم پرداخت.
با ما در کانفیگ سرور همراه باشید تا یاد بگیریم چگونه با تنظیم مجوزهای دقیق، امنیت سیستم لینوکس را افزایش دهیم و از نفوذهای احتمالی جلوگیری کنیم.
۱. مدلهای دسترسی در لینوکس
لینوکس دسترسیها را در چند لایه مدیریت میکند: مجوزهای سنتی (Traditional Permissions)، مجوزهای پیشرفته (Special Permissions) و سازوکارهای جدیدتر مثل ACL و SELinux.
مدیریت دسترسی در لینوکس: بخش سوم (پایانی)
در دو بخش قبلی این مقاله، به مفاهیم پایهای مدیریت دسترسی در لینوکس، از جمله احراز هویت، کنترل دسترسی شبکهای، مدیریت فایل ها و دایرکتوریها، سیاستهای امنیتی و مانیتورینگ مجوزها پرداختیم. در این بخش پایانی، تمرکز ما بر روی امنیت لینوکس در محیطهای ابری و کانتینرها، اتوماسیون در مدیریت دسترسی، و بهترین روشهای امنیتی در لینوکس خواهد بود. این موضوعات برای مدیران سیستم، متخصصان DevOps و هرکسی که با لینوکس در محیطهای عملیاتی کار میکند، بسیار مهم هستند.
۸. امنیت لینوکس در محیطهای ابری و کانتینری
امروزه بسیاری از سازمانها و شرکتها، از زیرساختهای ابری مانند AWS، Google Cloud و Azure استفاده میکنند و همچنین Docker و Kubernetes را برای مدیریت کانتینرها به کار میگیرند. به همین دلیل، کنترل دسترسی در این محیطها یک چالش بزرگ محسوب میشود.
۸.۱. امنیت دسترسی در لینوکس در محیطهای ابری
زمانی که لینوکس در یک محیط ابری مستقر میشود، باید چندین لایه امنیتی برای حفاظت از دسترسیها پیادهسازی شود.
۸.۱.۱. استفاده از SSH Key به جای رمز عبور
در اکثر محیطهای ابری، استفاده از SSH Key توصیه میشود. برای ایجاد یک کلید SSH و اضافه کردن آن به سرور، مراحل زیر را انجام دهید:
ایجاد کلید SSH در سیستم لوکال:
ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
کپی کردن کلید عمومی به سرور ابری:
ssh-copy-id user@server-ip
غیرفعال کردن ورود با رمز عبور در سرور:
در فایل /etc/ssh/sshd_config مقدار زیر را تغییر دهید:
PasswordAuthentication no
سپس سرویس SSH را ریستارت کنید:
sudo systemctl restart sshd
۸.۱.۲. استفاده از IAM (Identity and Access Management) در محیطهای ابری
اگر از AWS، Azure یا GCP استفاده میکنید، حتماً باید سیاستهای IAM را به درستی تنظیم کنید. برای مثال، در AWS میتوان دسترسی به سرور های EC2 را تنها به کاربران مجاز محدود کرد.
۸.۱.۳. استفاده از فایروالهای ابری
حتماً قوانین Security Group یا Network ACLs را تنظیم کنید تا فقط آیپیهای مجاز بتوانند به سرور های شما متصل شوند.
۸.۲. مدیریت دسترسی در کانتینرها (Docker و Kubernetes)
با گسترش استفاده از Docker و Kubernetes، نیاز به کنترل دسترسی در این محیطها بیش از پیش احساس میشود.
۸.۲.۱. کنترل دسترسی در Docker
اجرای کانتینرها با کاربر غیر روت:
بهصورت پیشفرض، کانتینرهای داکر با root اجرا میشوند که این یک ریسک امنیتی بزرگ است. به جای آن، از یک کاربر غیر روت استفاده کنید.
ایجاد یک کاربر جدید داخل Dockerfile:
RUN groupadd -r myuser && useradd -r -g myuser myuser
USER myuser
محدود کردن دسترسی به داکر با استفاده از گروهها:
sudo usermod -aG docker myuser
۸.۲.۲. کنترل دسترسی در Kubernetes (RBAC)
Kubernetes دارای مدل کنترل دسترسی مبتنی بر نقش (RBAC) است که به شما امکان میدهد دسترسیهای کاربران به منابع مختلف را کنترل کنید.
مثال تعریف یک نقش (Role) در Kubernetes:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: pod-reader
rules:
– apiGroups: [“”]
resources: [“pods”]
verbs: [“get”, “list”, “watch”]
ایجاد یک Binding برای اعمال این نقش به یک کاربر خاص:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-pods
namespace: default
subjects:
– kind: User
name: “john”
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
این پیکربندی تضمین میکند که کاربر “john” فقط اجازه خواندن اطلاعات پادها را دارد و نمیتواند آنها را تغییر دهد.
۹. اتوماسیون در مدیریت دسترسی لینوکس
در محیطهای بزرگ، مدیریت دستی کاربران و مجوزها بسیار زمانبر و پرخطا است. به همین دلیل، استفاده از ابزارهای اتوماسیون مانند Ansible، Puppet و Chef برای مدیریت دسترسیها توصیه میشود.
۹.۱. مدیریت کاربران و گروهها با Ansible
Ansible یکی از ابزارهای محبوب برای مدیریت کاربران و گروهها در سیستمهای لینوکسی است.
نمونه Playbook برای ایجاد کاربر و تنظیم SSH Key:
—
– name: ایجاد کاربر جدید در لینوکس
hosts: all
become: yes
tasks:
– name: ایجاد کاربر جدید
user:
name: devuser
password: “{{ ‘mypassword’ | password_hash(‘sha512’) }}”
shell: /bin/bash
groups: sudo
append: yes
– name: تنظیم SSH Key برای کاربر
authorized_key:
user: devuser
key: “{{ lookup(‘file’, ‘/home/devuser/.ssh/id_rsa.pub’) }}”
اجرای Playbook در سرورها:
ansible-playbook -i inventory.ini setup-users.yml
۱۰. بهترین روشهای امنیتی در مدیریت دسترسی لینوکس
۱۰.۱. اصل کمترین دسترسی (Principle of Least Privilege – POLP)
- کاربران و سرویس ها فقط باید حداقل مجوزهای لازم را داشته باشند.
- هرگز از root برای اجرای سرویس ها استفاده نکنید.
۱۰.۲. فعالسازی لاگینگ و مانیتورینگ امنیتی
- استفاده از ابزارهایی مانند Auditd، Fail2Ban و OSSEC برای نظارت بر دسترسیهای غیرمجاز.
- تنظیم هشدار برای فعالیتهای مشکوک در /var/log/auth.log.
۱۰.۳. بهروزرسانی منظم سیستم
همیشه سیستم و بستههای نرمافزاری را آپدیت کنید:
sudo apt update && sudo apt upgrade -y
در سیستمهای RHEL و CentOS میتوان از dnf یا yum استفاده کرد.
جمعبندی و نتیجهگیری
خلاصه نکات مهم مدیریت دسترسی در لینوکس:
- مفاهیم پایهای مجوزهای لینوکس (chmod، chown، ACL)
- مدیریت کاربران و گروهها در لینوکس
- احراز هویت با PAM، 2FA و LDAP
- کنترل دسترسی شبکهای با SSH، فایروال و VPN
- امنیت در محیطهای ابری و کانتینری (Docker، Kubernetes)
- اتوماسیون مدیریت کاربران و مجوزها با Ansible
- بهترین روشهای امنیتی برای جلوگیری از نفوذ و تهدیدات سایبری





