# فصل سیزدهم: امنیت لینوکس

## 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

---

# تمرین‌های فصل سیزدهم

## تمرین اول

مشاهده کاربر فعلی:

    whoami


## تمرین دوم

بررسی Permission فایل‌ها:

    ls -l


## تمرین سوم

ساخت کاربر جدید.


## تمرین چهارم

فعال کردن Firewall.


## تمرین پنجم

بررسی Log های سیستم.

---

# جمع‌بندی فصل سیزدهم

در این فصل یاد گرفتیم:

- امنیت لینوکس چیست.
- Root چه خطراتی دارد.
- چگونه کاربران و گروه‌ها را مدیریت کنیم.
- Permission ها چگونه کار می‌کنند.
- چگونه SSH را امن کنیم.
- چگونه Firewall را مدیریت کنیم.
- چگونه Logها را بررسی کنیم.
- Brute Force چیست.
- Fail2Ban چگونه کار می‌کند.
- Hardening چیست.

امنیت یک مرحله پایانی نیست؛ بلکه یک فرآیند دائمی است.

یک کاربر حرفه‌ای لینوکس همیشه سیستم خود را بررسی، بروزرسانی و امن‌تر می‌کند.
