tutorials / linux / chapter-13.md · utf-8 ⬇ download chapter-13.md
فصل سیزدهم: امنیت لینوکس
Linux Security Fundamentals
امنیت یکی از مهمترین بخشهای مدیریت هر سیستمعامل است.
در دنیای واقعی، سیستمهای لینوکسی معمولاً برای سرویسهای مهم مانند:
- سرورها
- دیتابیسها
- سرویسهای ابری
- زیرساختهای سازمانی
- سیستمهای شبکه
استفاده میشوند.
به همین دلیل، یک کاربر حرفهای لینوکس فقط نباید بداند چگونه سیستم را استفاده کند؛ بلکه باید بتواند از آن محافظت کند.
هدف این فصل، آشنایی با اصول پایه امنیت در لینوکس و یادگیری روشهای امنتر کردن سیستم است.
امنیت در لینوکس چیست؟
امنیت در لینوکس یعنی محافظت از:
- اطلاعات کاربران
- فایلها
- سرویسها
- منابع سیستم
- ارتباطات شبکه
در برابر دسترسیهای غیرمجاز.
مدل امنیتی لینوکس
لینوکس از یک مدل امنیتی مبتنی بر:
- کاربران
- گروهها
- مجوزها
- مالکیت فایلها
استفاده میکند.
هر عملیات در سیستم باید مشخص باشد:
چه کسی؟
چه کاری؟
روی چه چیزی؟
انجام دهد.
User و Security
در لینوکس هر کاربر دارای هویت مشخصی است.
برای هر کاربر:
- Username
- UID
- Group
وجود دارد.
مشاهده کاربر فعلی:
whoami
Root User چیست؟
Root قدرتمندترین کاربر سیستم است.
Root میتواند:
- فایلهای سیستمی را تغییر دهد.
- کاربران ایجاد کند.
- نرمافزار نصب کند.
- تنظیمات اصلی را تغییر دهد.
به همین دلیل Root باید با احتیاط استفاده شود.
خطرات استفاده دائمی از Root
استفاده مداوم از Root خطرناک است.
زیرا یک اشتباه کوچک میتواند:
- فایلهای مهم را حذف کند.
- سیستم را خراب کند.
- امنیت سیستم را کاهش دهد.
به همین دلیل بهتر است از کاربر معمولی استفاده شود و فقط در مواقع لازم دسترسی بالا گرفت.
دستور sudo
sudo مخفف:
Super User Do
است.
این دستور اجازه میدهد یک کاربر معمولی یک دستور را با سطح دسترسی بالاتر اجرا کند.
مثال:
sudo apt update
Principle of Least Privilege
یکی از اصول مهم امنیت:
Least Privilege
است.
یعنی:
هر کاربر فقط باید به اندازه نیاز خود دسترسی داشته باشد.
مثال:
یک کاربر معمولی نباید دسترسی کامل Root داشته باشد.
مدیریت کاربران
مشاهده کاربران:
cat /etc/passwd
ایجاد کاربر:
sudo useradd username
حذف کاربر:
sudo userdel username
مدیریت گروهها
مشاهده گروهها:
groups
ایجاد گروه:
sudo groupadd groupname
اضافه کردن کاربر به گروه:
sudo usermod -aG groupname username
Permission ها
یکی از مهمترین بخشهای امنیت لینوکس، مجوز فایلها است.
هر فایل سه دسته مجوز دارد:
- Owner
- Group
- Others
انواع Permission
سه نوع مجوز اصلی:
Read:
r
اجازه خواندن
Write:
w
اجازه نوشتن
Execute:
x
اجازه اجرا
مشاهده Permission فایل
دستور:
ls -l
نمونه:
-rwxr-xr--
معنی:
Owner:
rwx
Group:
r-x
Others:
r--
تغییر Permission
با دستور:
chmod
انجام میشود.
مثال:
chmod +x script.sh
اجازه اجرا اضافه میکند.
تغییر مالک فایل
دستور:
chown
استفاده میشود.
مثال:
sudo chown user file.txt
فایلهای حساس لینوکس
برخی فایلها اهمیت امنیتی زیادی دارند.
passwd
مسیر:
/etc/passwd
اطلاعات کاربران را نگهداری میکند.
shadow
مسیر:
/etc/shadow
شامل اطلاعات رمزهای عبور رمزنگاریشده است.
دسترسی به این فایل محدود است.
sudoers
مسیر:
/etc/sudoers
مشخص میکند چه کسانی اجازه استفاده از sudo دارند.
ویرایش:
sudo visudo
امنیت رمز عبور
یک رمز عبور مناسب باید:
- طول کافی داشته باشد.
- قابل حدس نباشد.
- از ترکیب حروف و اعداد استفاده کند.
تغییر رمز عبور
دستور:
passwd
SSH Security
SSH یکی از مهمترین سرویسهای لینوکس است.
برای افزایش امنیت SSH:
- استفاده از SSH Key
- غیرفعال کردن Root Login
- تغییر پورت
- محدود کردن کاربران
غیرفعال کردن Root در SSH
فایل:
/etc/ssh/sshd_config
تنظیم:
PermitRootLogin no
تغییر پورت SSH
پورت پیشفرض:
22
مثال تغییر:
Port 2222
بعد از تغییر:
sudo systemctl restart ssh
Firewall چیست؟
Firewall ابزاری برای کنترل ارتباطات شبکه است.
وظیفه:
- اجازه دادن به ارتباطهای امن
- جلوگیری از دسترسیهای غیرمجاز
UFW
UFW یک Firewall ساده در لینوکس است.
بررسی وضعیت:
sudo ufw status
فعال کردن:
sudo ufw enable
قوانین Firewall
باز کردن SSH:
sudo ufw allow 22
باز کردن HTTP:
sudo ufw allow 80
بستن پورت:
sudo ufw deny 80
مدیریت سرویسها
هر سرویس فعال میتواند یک نقطه حمله باشد.
مشاهده سرویسها:
systemctl list-units --type=service
خاموش کردن سرویس غیرضروری
مثال:
sudo systemctl disable service-name
بروزرسانی امنیتی
یکی از سادهترین روشهای افزایش امنیت:
بروزرسانی سیستم است.
Ubuntu:
sudo apt update
sudo apt upgrade
مدیریت Package ها
نرمافزارها باید از منابع معتبر نصب شوند.
بررسی Package:
apt list --installed
حذف:
sudo apt remove package-name
بررسی Log ها
Log ها اطلاعات مهمی درباره اتفاقات سیستم ارائه میدهند.
مشاهده Log سیستم:
journalctl
بررسی ورود کاربران
مشاهده ورودها:
last
بررسی کاربران فعال
دستور:
w
اطلاعات کاربران متصل را نمایش میدهد.
Brute Force چیست؟
Brute Force نوعی حمله است که در آن مهاجم تلاش میکند رمز عبور را با امتحان کردن تعداد زیادی ترکیب پیدا کند.
مثال:
حمله به SSH با هزاران تلاش ورود.
مقابله با Brute Force
روشها:
- استفاده از SSH Key
- محدود کردن Login
- Firewall
- Fail2Ban
Fail2Ban چیست؟
Fail2Ban ابزاری برای جلوگیری از حملات تکراری است.
این ابزار:
- Log ها را بررسی میکند.
- IPهای مشکوک را شناسایی میکند.
- آنها را مسدود میکند.
نصب Fail2Ban
sudo apt install fail2ban
Hash چیست؟
Hash یک خروجی ثابت از اطلاعات است.
برای بررسی تغییر فایلها استفاده میشود.
مثال:
sha256sum file.txt
اگر فایل تغییر کند، Hash تغییر خواهد کرد.
بررسی Integrity فایلها
برای بررسی سلامت فایل:
sha256sum filename
مقایسه Hash قدیمی و جدید نشان میدهد فایل تغییر کرده یا خیر.
Linux Auditing
Auditing یعنی ثبت و بررسی اتفاقات سیستم.
برای بررسی:
- ورود کاربران
- تغییر فایلها
- عملیات حساس
استفاده میشود.
ابزار auditd
نصب:
sudo apt install auditd
وضعیت:
systemctl status auditd
Hardening لینوکس
Hardening یعنی کاهش سطح حمله سیستم.
مراحل مهم:
- حذف سرویسهای غیرضروری
- بروزرسانی سیستم
- تنظیم Firewall
- محدود کردن کاربران
- امن کردن SSH
- بررسی Permissionها
پروژه عملی فصل
Linux Security Hardening
هدف:
امنتر کردن یک سیستم لینوکسی.
مراحل:
بررسی کاربران:
who
بررسی سرویسها:
systemctl list-units --type=service
تنظیم Firewall:
sudo ufw enable
امن کردن SSH:
PermitRootLogin no
بروزرسانی سیستم:
sudo apt update
sudo apt upgrade
تمرینهای فصل سیزدهم
[01]مشاهده کاربر فعلی
whoami
[02]بررسی Permission فایلها
ls -l
[03]ساخت کاربر جدید.
[04]فعال کردن Firewall.
[05]بررسی Log های سیستم.
جمعبندی فصل سیزدهم
در این فصل یاد گرفتیم:
- امنیت لینوکس چیست.
- Root چه خطراتی دارد.
- چگونه کاربران و گروهها را مدیریت کنیم.
- Permission ها چگونه کار میکنند.
- چگونه SSH را امن کنیم.
- چگونه Firewall را مدیریت کنیم.
- چگونه Logها را بررسی کنیم.
- Brute Force چیست.
- Fail2Ban چگونه کار میکند.
- Hardening چیست.
امنیت یک مرحله پایانی نیست؛ بلکه یک فرآیند دائمی است.
یک کاربر حرفهای لینوکس همیشه سیستم خود را بررسی، بروزرسانی و امنتر میکند.