user@linux-tutorials: ~/tutorials/13-linux-security — linux-tutorials

tutorials / linux / chapter-13.md · utf-8 ⬇ download chapter-13.md

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

Linux Security Fundamentals

امنیت یکی از مهم‌ترین بخش‌های مدیریت هر سیستم‌عامل است.

در دنیای واقعی، سیستم‌های لینوکسی معمولاً برای سرویس‌های مهم مانند:

  • سرورها
  • دیتابیس‌ها
  • سرویس‌های ابری
  • زیرساخت‌های سازمانی
  • سیستم‌های شبکه

استفاده می‌شوند.

به همین دلیل، یک کاربر حرفه‌ای لینوکس فقط نباید بداند چگونه سیستم را استفاده کند؛ بلکه باید بتواند از آن محافظت کند.

هدف این فصل، آشنایی با اصول پایه امنیت در لینوکس و یادگیری روش‌های امن‌تر کردن سیستم است.

امنیت در لینوکس چیست؟

امنیت در لینوکس یعنی محافظت از:

  • اطلاعات کاربران
  • فایل‌ها
  • سرویس‌ها
  • منابع سیستم
  • ارتباطات شبکه

در برابر دسترسی‌های غیرمجاز.

مدل امنیتی لینوکس

لینوکس از یک مدل امنیتی مبتنی بر:

  • کاربران
  • گروه‌ها
  • مجوزها
  • مالکیت فایل‌ها

استفاده می‌کند.

هر عملیات در سیستم باید مشخص باشد:

چه کسی؟

چه کاری؟

روی چه چیزی؟

انجام دهد.

User و Security

در لینوکس هر کاربر دارای هویت مشخصی است.

برای هر کاربر:

  • Username
  • UID
  • Group

وجود دارد.

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

user@linux-tutorials: ~/ch-13BASH
whoami

Root User چیست؟

Root قدرتمندترین کاربر سیستم است.

Root می‌تواند:

  • فایل‌های سیستمی را تغییر دهد.
  • کاربران ایجاد کند.
  • نرم‌افزار نصب کند.
  • تنظیمات اصلی را تغییر دهد.

به همین دلیل Root باید با احتیاط استفاده شود.

خطرات استفاده دائمی از Root

استفاده مداوم از Root خطرناک است.

زیرا یک اشتباه کوچک می‌تواند:

  • فایل‌های مهم را حذف کند.
  • سیستم را خراب کند.
  • امنیت سیستم را کاهش دهد.

به همین دلیل بهتر است از کاربر معمولی استفاده شود و فقط در مواقع لازم دسترسی بالا گرفت.

دستور sudo

sudo مخفف:

Super User Do

است.

این دستور اجازه می‌دهد یک کاربر معمولی یک دستور را با سطح دسترسی بالاتر اجرا کند.

مثال:

user@linux-tutorials: ~/ch-13BASH
sudo apt update

Principle of Least Privilege

یکی از اصول مهم امنیت:

Least Privilege

است.

یعنی:

هر کاربر فقط باید به اندازه نیاز خود دسترسی داشته باشد.

مثال:

یک کاربر معمولی نباید دسترسی کامل Root داشته باشد.

مدیریت کاربران

مشاهده کاربران:

user@linux-tutorials: ~/ch-13BASH
cat /etc/passwd

ایجاد کاربر:

user@linux-tutorials: ~/ch-13BASH
sudo useradd username

حذف کاربر:

user@linux-tutorials: ~/ch-13BASH
sudo userdel username

مدیریت گروه‌ها

مشاهده گروه‌ها:

user@linux-tutorials: ~/ch-13BASH
groups

ایجاد گروه:

user@linux-tutorials: ~/ch-13BASH
sudo groupadd groupname

اضافه کردن کاربر به گروه:

user@linux-tutorials: ~/ch-13BASH
sudo usermod -aG groupname username

Permission ها

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

هر فایل سه دسته مجوز دارد:

  • Owner
  • Group
  • Others

انواع Permission

سه نوع مجوز اصلی:

Read:

user@linux-tutorials: ~/ch-13BASH
r

اجازه خواندن

Write:

user@linux-tutorials: ~/ch-13BASH
w

اجازه نوشتن

Execute:

user@linux-tutorials: ~/ch-13BASH
x

اجازه اجرا

مشاهده Permission فایل

دستور:

user@linux-tutorials: ~/ch-13BASH
ls -l

نمونه:

-rwxr-xr--

معنی:

Owner:

user@linux-tutorials: ~/ch-13BASH
rwx

Group:

user@linux-tutorials: ~/ch-13BASH
r-x

Others:

user@linux-tutorials: ~/ch-13BASH
r--

تغییر Permission

با دستور:

user@linux-tutorials: ~/ch-13BASH
chmod

انجام می‌شود.

مثال:

user@linux-tutorials: ~/ch-13BASH
chmod +x script.sh

اجازه اجرا اضافه می‌کند.

تغییر مالک فایل

دستور:

user@linux-tutorials: ~/ch-13BASH
chown

استفاده می‌شود.

مثال:

user@linux-tutorials: ~/ch-13BASH
sudo chown user file.txt

فایل‌های حساس لینوکس

برخی فایل‌ها اهمیت امنیتی زیادی دارند.

passwd

مسیر:

/etc/passwd

اطلاعات کاربران را نگهداری می‌کند.

shadow

مسیر:

/etc/shadow

شامل اطلاعات رمزهای عبور رمزنگاری‌شده است.

دسترسی به این فایل محدود است.

sudoers

مسیر:

/etc/sudoers

مشخص می‌کند چه کسانی اجازه استفاده از sudo دارند.

ویرایش:

user@linux-tutorials: ~/ch-13BASH
sudo visudo

امنیت رمز عبور

یک رمز عبور مناسب باید:

  • طول کافی داشته باشد.
  • قابل حدس نباشد.
  • از ترکیب حروف و اعداد استفاده کند.

تغییر رمز عبور

دستور:

user@linux-tutorials: ~/ch-13BASH
passwd

SSH Security

SSH یکی از مهم‌ترین سرویس‌های لینوکس است.

برای افزایش امنیت SSH:

  • استفاده از SSH Key
  • غیرفعال کردن Root Login
  • تغییر پورت
  • محدود کردن کاربران

غیرفعال کردن Root در SSH

فایل:

/etc/ssh/sshd_config

تنظیم:

PermitRootLogin no

تغییر پورت SSH

پورت پیش‌فرض:

22

مثال تغییر:

Port 2222

بعد از تغییر:

user@linux-tutorials: ~/ch-13BASH
sudo systemctl restart ssh

Firewall چیست؟

Firewall ابزاری برای کنترل ارتباطات شبکه است.

وظیفه:

  • اجازه دادن به ارتباط‌های امن
  • جلوگیری از دسترسی‌های غیرمجاز

UFW

UFW یک Firewall ساده در لینوکس است.

بررسی وضعیت:

user@linux-tutorials: ~/ch-13BASH
sudo ufw status

فعال کردن:

user@linux-tutorials: ~/ch-13BASH
sudo ufw enable

قوانین Firewall

باز کردن SSH:

user@linux-tutorials: ~/ch-13BASH
sudo ufw allow 22

باز کردن HTTP:

user@linux-tutorials: ~/ch-13BASH
sudo ufw allow 80

بستن پورت:

user@linux-tutorials: ~/ch-13BASH
sudo ufw deny 80

مدیریت سرویس‌ها

هر سرویس فعال می‌تواند یک نقطه حمله باشد.

مشاهده سرویس‌ها:

user@linux-tutorials: ~/ch-13BASH
systemctl list-units --type=service

خاموش کردن سرویس غیرضروری

مثال:

user@linux-tutorials: ~/ch-13BASH
sudo systemctl disable service-name

بروزرسانی امنیتی

یکی از ساده‌ترین روش‌های افزایش امنیت:

بروزرسانی سیستم است.

Ubuntu:

user@linux-tutorials: ~/ch-13BASH
sudo apt update

sudo apt upgrade

مدیریت Package ها

نرم‌افزارها باید از منابع معتبر نصب شوند.

بررسی Package:

user@linux-tutorials: ~/ch-13BASH
apt list --installed

حذف:

user@linux-tutorials: ~/ch-13BASH
sudo apt remove package-name

بررسی Log ها

Log ها اطلاعات مهمی درباره اتفاقات سیستم ارائه می‌دهند.

مشاهده Log سیستم:

user@linux-tutorials: ~/ch-13BASH
journalctl

بررسی ورود کاربران

مشاهده ورودها:

user@linux-tutorials: ~/ch-13BASH
last

بررسی کاربران فعال

دستور:

user@linux-tutorials: ~/ch-13BASH
w

اطلاعات کاربران متصل را نمایش می‌دهد.

Brute Force چیست؟

Brute Force نوعی حمله است که در آن مهاجم تلاش می‌کند رمز عبور را با امتحان کردن تعداد زیادی ترکیب پیدا کند.

مثال:

حمله به SSH با هزاران تلاش ورود.

مقابله با Brute Force

روش‌ها:

  • استفاده از SSH Key
  • محدود کردن Login
  • Firewall
  • Fail2Ban

Fail2Ban چیست؟

Fail2Ban ابزاری برای جلوگیری از حملات تکراری است.

این ابزار:

  • Log ها را بررسی می‌کند.
  • IPهای مشکوک را شناسایی می‌کند.
  • آن‌ها را مسدود می‌کند.

نصب Fail2Ban

user@linux-tutorials: ~/ch-13BASH
sudo apt install fail2ban

Hash چیست؟

Hash یک خروجی ثابت از اطلاعات است.

برای بررسی تغییر فایل‌ها استفاده می‌شود.

مثال:

user@linux-tutorials: ~/ch-13BASH
sha256sum file.txt

اگر فایل تغییر کند، Hash تغییر خواهد کرد.

بررسی Integrity فایل‌ها

برای بررسی سلامت فایل:

user@linux-tutorials: ~/ch-13BASH
sha256sum filename

مقایسه Hash قدیمی و جدید نشان می‌دهد فایل تغییر کرده یا خیر.

Linux Auditing

Auditing یعنی ثبت و بررسی اتفاقات سیستم.

برای بررسی:

  • ورود کاربران
  • تغییر فایل‌ها
  • عملیات حساس

استفاده می‌شود.

ابزار auditd

نصب:

user@linux-tutorials: ~/ch-13BASH
sudo apt install auditd

وضعیت:

user@linux-tutorials: ~/ch-13BASH
systemctl status auditd

Hardening لینوکس

Hardening یعنی کاهش سطح حمله سیستم.

مراحل مهم:

  • حذف سرویس‌های غیرضروری
  • بروزرسانی سیستم
  • تنظیم Firewall
  • محدود کردن کاربران
  • امن کردن SSH
  • بررسی Permissionها

پروژه عملی فصل

Linux Security Hardening

هدف:

امن‌تر کردن یک سیستم لینوکسی.

مراحل:

بررسی کاربران:

user@linux-tutorials: ~/ch-13BASH
who

بررسی سرویس‌ها:

user@linux-tutorials: ~/ch-13BASH
systemctl list-units --type=service

تنظیم Firewall:

user@linux-tutorials: ~/ch-13BASH
sudo ufw enable

امن کردن SSH:

PermitRootLogin no

بروزرسانی سیستم:

user@linux-tutorials: ~/ch-13BASH
sudo apt update

sudo apt upgrade

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

[01]مشاهده کاربر فعلی

user@linux-tutorials: ~/ch-13BASH
whoami

[02]بررسی Permission فایل‌ها

user@linux-tutorials: ~/ch-13BASH
ls -l

[03]ساخت کاربر جدید.

[04]فعال کردن Firewall.

[05]بررسی Log های سیستم.

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

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

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

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

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