فهرست مطالب
اهمیت امنیت در لینوکس
وقتی لینوکس رو انتخاب میکنید، یکی از مزایاش آزادی عمل و متنباز بودنشه؛ شما میتونید هر بخشی رو که بخواید ببینید، تغییر بدید یا ارتقا بدید. اما همین آزادی اگر مدیریت نشه، محل نفوذ هکرها میشه. امنیت یعنی هم محافظت از دادهها، هم جلوگیری از نفوذ، هم اطمینان از پایداری سیستم. امنیت وقتی درست اجرا بشه، مثل داربستی محکم دور ساختمان میمونه — دیده نمیشه اما اگر نباشه آوارها شروع میشن.
نکته اول: استفاده از رمز عبور قوی
چه ترکیبی رمز عبور را قوی میکند؟
- حداقل ۱۲ تا ۱۶ کاراکتر، ترکیبی از حروف بزرگ، حروف کوچک، عددها و نمادها
- اجتناب از استفاده از کلمات معمول، نام، تاریخ تولد، یا کلمات دیکشنری
- استفاده از عبارات رمز (passphrases) — ترکیب چند کلمه تصادفی که برای شما معنی دار باشن (مثلاً “قهوه_کتاب_باران_صدا!”)
مدیریت رمز عبور و تغییر دورهای
- از ابزار مدیریت پسورد استفاده کن: مثلاً KeePassXC، Bitwarden
- هر حساب مهم مثل «root»، «sudo»، سرویسها مهم رو رمز عبور جداگانه داشته باش
- تغییر رمز عبور هر چند ماه یکبار مخصوصاً اگر شک به دسترسی وجود داره
نکته دوم: غیرفعال کردن ورود مستقیم با کاربر root
چرا ورود مستقیم با root خطرناک است؟
کاربر root دسترسی کامل و بدون محدودیت داره. اگر هکر بتونه مستقیم وارد این حساب بشه، تقریباً کنترل کل سیستم دستشه. هیچ حد و مرزی. برای همین باید ورود مستقیم با root رو از راه SSH ببندی.
چگونه PermitRootLogin را غیرفعال کنیم؟
- فایل /etc/ssh/sshd_config رو ویرایش کن
- دنبال خط
PermitRootLogin
باش و مقدارش رو بذار رویno
- اگر خط نیست، اضافهش کن:
PermitRootLogin no
- بعد از تغییر، سرویس SSH رو restart کن:
sudo systemctl restart sshd
نکته سوم: بهروزرسانی مرتب سیستم و بستهها
نقش وصلههای امنیتی (Security Patches)
هر نسخه نرم افزاری، هر بسته، ممکن است دارای ضعفهایی باشه که در آینده کشف میشن. توسعهدهندهها وصلهها (patches) میدن تا این نقاط ضعف رو برطرف کنن. اگر سیستمت رو دیر بهروز کنی، هکرها زمان کافی دارن از اون حفرهها استفاده کنن.
ابزارها و فرمانهای مفید برای بهروزرسانی خودکار
- در توزیعهای مبتنی بر Debian/Ubuntu:
sudo apt update && sudo apt upgrade sudo apt install unattended-upgrades
- در Fedora، CentOS، RHEL:
sudo yum update sudo dnf update
- میتونی از cron job استفاده کنی تا بهروزرسانیها به طور خودکار اعمال بشن یا حداقل نوتیفیکیشن بدن.
نکته چهارم: کاهش سرویسهایی که استفاده نمیشوند
فهمیدن سرویس فعال با دستورات مثل netstat
و ss
- با دستوراتی مثل
netstat -tulnp
یاss -tulnp
بفهم کدوم پورتها بازن و کدوم برنامههاشون فعالن - بررسی کن که آیا اون سرویس واقعا لازمه یا نه
غیر فعال کردن سرویس و حذف بستهها
- با ابزار مدیریت بستهها (apt, yum, dnf) بستههای غیر ضروری رو پاک کن
- سرویسهایی که در بوت اجرا میشن رو با systemctl خاموش و غیر فعال کن:
sudo systemctl disable نام_سرویس sudo systemctl stop نام_سرویس
نکته پنجم: تنظیم و استفاده از فایروال و ابزارهای امنیتی اضافی
iptables / nftables / firewalld چیست؟
- اینها ابزارهایی هستن برای کنترل ترافیک شبکه ورودی و خروجی
- به وسیلهشون میتونی تعیین بکنی که کدوم پورتها باز باشن، کدوم IPها اجازه دسترسی دارن یا نه
SELinux یا AppArmor و کنترل دسترسی اجباری
- SELinux (یا AppArmor در توزیعهایی مثل Ubuntu) بهت امکان میده سیاستهای امنیتی تعیین کنی که نه تنها بر اساس مالک فایلها، بلکه بر اساس سیاستهای امنیتی کلی سیستم اعمال بشن
- این ابزار میتونن جلوی اجرای برنامههای مخرب یا اجرای باینریها در محلهایی که نباید اجرا بشن رو بگیرن
نکته ششم: تغییر پورت پیشفرض SSH و استفاده از کلید عمومی
چرا باید پورت پیشفرض را تغییر دهیم؟
پورت پیشفرض SSH معمولاً ۲۲ هست؛ هکرها رباتها و اسکریپتهایی دارن که به صورت اتوماتیک سراغ همین پورت میآیند. اگر پورت رو به عدد کمتر شناختهشدهای تغییر بدی، حداقل از حملات خودکار جلوگیری میکنی.
کلید SSH (public/private key) و حذف پسورد در اتصال SSH
- تولید کلید با دستور:
ssh-keygen -t rsa -b 4096
- کپی کلید عمومی (
.pub
) به سرور باssh-copy-id
- تنظیم SSH برای قبول ورود با کلید و غیرفعال کردن ورود با رمز عبور: در فایل
sshd_config
گزینههایی مثلPasswordAuthentication no PubkeyAuthentication yes
نکته هفتم: پارتیشنبندی و مدیریت دسترسی فایلها
اصول پارتیشنبندی امن (مثلاً جدا کردن /home, /var, /tmp)
- جدا کردن دایرکتوریهایی که ممکنه حجم لاگ یا فایل موقت زیاد داشته باشن به پارتیشن مجزا باعث میشه اگر فلش /tmp پر بشه، سیستم عامل تحت تاثیر سایر بخشها قرار نگیره
- قسمتی مثل
/home
رو جدا کن چون کاربران مختلف اونجا فعالیت دارند، به کنترل دسترسی بهتر کمک میکنه
مجوزهای فایل (Permissions)، SUID، SGID و noexec
- وقتی فایلی SUID داشته باشه، هنگام اجرا، با امتیازات مالک اجرا میشه — اگر مالک root باشه، خطر بزرگیه
- حذف مجوزهای SUID/SGID غیرضروری
- برای پارتیشنهایی مثل
/tmp
یا/var/tmp
میتونی گزینه mountnoexec
رو تنظیم کنی که اجرای باینری اجازه داده نشه
نتیجهگیری
امنیت در لینوکس یه مسیر هست، نه یه مقصد. هیچوقت نمیتونیم بگیم سیستم کامل امنه، اما با اجرای این هفت نکته طلایی کاری میکنیم که احتمال نفوذ و آسیب به حداقل برسه. رمزهای عبور قوی، غیرفعال کردن ورود مستقیم root، بهروزرسانی منظم، کم کردن سرویسها، استفاده از فایروال و ابزارهای امنیتی، تغییر پورت SSH، و پارتیشنبندی مناسب و مدیریت مجوزها ــ هر کدام یه گام هستن ولی وقتی با هم باشن، مثل دیواری محکماند.
اگه تازه با لینوکس کار کردی، شروع کن به اعمال یکی یکیشون. اگر حرفهایتر هستی، اینها رو در سیاستهای سازمان و سیستمها گسترش بده. مهم اینه که امنیت را جدی بگیری، نه فقط در زمان بحران.
سوالات متداول (FAQs)
- آیا فقط فعال کردن SELinux کافی است؟
نه، SELinux خیلی مؤثره ولی تنها یکی از لایههای امنیتیه. وقتی SELinux باشه اما رمز عبور ضعیف، سرویسهای غیر ضروری فعال یا SSH با پورت پیشفرض، هنوز خطر هست. ترکیب چند لایه امنیتی بهترین کاره. - آیا هر چند وقت یکبار باید رمز عبور را تغییر دهم؟
بله. اگر سیستم حساسه، هر ۳ تا ۶ ماه میتونه مناسب باشه. البته اگر نشانهای از نفوذ یا دسترسی غیرمجاز دیدی فوراً. - آیا تغییر پورت SSH امنیت سیستم را تضمین میکند؟
تضمین کامل نه؛ اما کمک بزرگیه. مثل اینه در خونه درب روی دستگیره معمولی باشه یا روی درب پشت؛ تغییر پورت مثل قفل بهتره اما اگر بقیه نکات امنیتی نباشن، باز هم شکست ممکنه باشه. - فایروال بهتر است iptables باشد یا nftables؟
nftables نسل جدیدتره، امکانات بیشتری داره، حذف پیچیدگیها و کارایی بهتری ارائه میده. اگر توزیعت از nftables پشتیبانی کنه، بهتره ازش استفاده کنی. اما iptables هنوز رایجه و اگر خوب پیکربندی بشه، خیلی قدرتمنده. - چطور متوجه شوم سیستم من قبلاً تحت حمله بوده است؟
لاگها رو بررسی کن (/var/log/auth.log
,/var/log/syslog
یا معادلها)، وجود ورودهای مشکوک، پروسسهای ناشناخته، دیتای تغییر یافته، بستههایی که بدون اجازه نصب شدن. استفاده از ابزارهای IDS یا بستههایی مثل AIDE یا Tripwire هم خیلی کمک میکنن.