📄 محتوای کامل
هر سرور مجازی از همان لحظه ای که روشن و به اینترنت متصل می شود، هدف اسکن های خودکار و تلاش های ورود غیرمجاز قرار می گیرد؛ این موضوع ربطی به معروف یا کوچک بودن سایت شما ندارد. نتیجه ی یک سرور ناامن می تواند از افت شدید عملکرد (به خاطر ماینینگ رمزارز توسط مهاجم) تا سرقت داده، بلاک شدن IP و از دست رفتن کامل داده باشد. خبر خوب این است که با چند تنظیم اصولی، می توانید بیشترین ریسک های رایج را از بین ببرید. در این راهنما، ۱۰ گام عملی سخت کردن (Hardening) امنیت لینوکس را به همراه دستورات آماده بررسی می کنیم.
گام ۱: به روزرسانی مداوم سیستم
بسیاری از حملات موفق، از آسیب پذیری های شناخته شده و اصلاح نشده سوءاستفاده می کنند. اولین و ساده ترین قدم امنیتی، بروز نگه داشتن سیستم است:
sudo apt update && sudo apt upgrade -y
برای توزیع های مبتنی بر RHEL/CentOS:
sudo dnf update -y
گام ۲: ساخت کاربر غیر روت و غیرفعال کردن ورود Root
استفاده ی مستقیم از کاربر root برای کارهای روزمره، ریسک بزرگی است؛ چون هر آسیب پذیری در یک سرویس، دسترسی کامل به سرور می دهد. یک کاربر جدید با دسترسی sudo بسازید:
sudo adduser myuser
sudo usermod -aG sudo myuser
سپس در فایل /etc/ssh/sshd_config مقدار زیر را تنظیم کنید:
PermitRootLogin no
⚠️ پیش از اعمال این تغییر، حتماً با کاربر جدید و از طریق یک ترمینال دیگر لاگین را تست کنید تا از سرور قفل نشوید.
گام ۳: احراز هویت با کلید SSH به جای پسورد
ورود با پسورد در برابر حملات Brute-force آسیب پذیر است. کلید SSH امنیت به مراتب بالاتری فراهم می کند:
# روی سیستم خودتان
ssh-keygen -t ed25519 -C "myuser@myserver"
ssh-copy-id myuser@SERVER_IP
بعد از اطمینان از این که ورود با کلید کار می کند، در /etc/ssh/sshd_config این خط را تنظیم کنید:
PasswordAuthentication no
و در پایان: sudo systemctl restart sshd
گام ۴: تغییر پورت پیش فرض SSH (اختیاری اما مؤثر)
تغییر پورت ۲۲ به یک پورت دیگر، حمله را متوقف نمی کند، اما حجم زیادی از اسکن های خودکار و تلاش های بی هدف بات ها را حذف می کند:
Port 2222
⚠️ نکته ی مهم: پیش از بستن نشست فعلی، حتماً در یک ترمینال جدید با پورت جدید تست اتصال بگیرید و مطمئن شوید فایروال هم به روزرسانی شده (گام بعدی).
گام ۵: فعال سازی و پیکربندی فایروال (UFW)
sudo ufw allow 2222/tcp # یا: sudo ufw allow OpenSSH اگر پورت را عوض نکرده اید
sudo ufw enable
sudo ufw status
⚠️ ترتیب دستورات مهم است: همیشه اول پورت SSH را Allow کنید و بعد فایروال را Enable کنید؛ برعکس این ترتیب می تواند شما را کاملاً از سرور قفل کند.
گام ۶: نصب و تنظیم Fail2Ban
Fail2Ban به صورت خودکار IPهایی را که چندین بار تلاش ناموفق برای ورود داشته اند، مسدود می کند:
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable --now fail2ban
در فایل jail.local می توانید مقادیر maxretry و bantime را برای jail مربوط به [sshd] متناسب با نیازتان تنظیم کنید.
گام ۷: غیرفعال سازی سرویس ها و پورت های غیرضروری
هر سرویس فعال، یک نقطه ی ورود بالقوه اضافه است. سرویس های در حال اجرا را بررسی و موارد غیرضروری را غیرفعال کنید:
sudo systemctl list-unit-files --type=service --state=enabled
sudo systemctl disable --now SERVICE_NAME
گام ۸: به روزرسانی خودکار امنیتی
برای این که وصله های امنیتی حیاتی حتی بدون دخالت شما اعمال شوند:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
گام ۹: مانیتورینگ لاگ ها و هشدار
دیدن به موقع رفتار غیرعادی، زمان واکنش شما را کوتاه می کند:
sudo apt install logwatch -y
برای نیاز به سطح دقیق تری از ثبت رویدادها (مثلاً چه کسی چه فایلی را تغییر داده)، نصب و پیکربندی auditd هم توصیه می شود.
گام ۱۰: بک آپ منظم و خودکار
سخت کردن امنیتی، ریسک را کاهش می دهد اما آن را صفر نمی کند. بک آپ منظم و خارج از سرور (نه فقط روی خود سرور) آخرین خط دفاعی شماست. از قابلیت اسنپ شات پنل میزبانی تان یا ابزارهایی مثل rsync/cron برای زمان بندی بک آپ خودکار استفاده کنید.
بونوس: احراز هویت دومرحله ای برای SSH
برای یک لایه ی امنیتی اضافه، می توانید با نصب libpam-google-authenticator احراز هویت دومرحله ای (2FA) را هم روی SSH فعال کنید. این گام اختیاری است، اما برای سرورهای حساس بسیار توصیه می شود.
نکته مهم: امنیت فقط به تنظیمات نرم افزاری خلاصه نمی شود
هرچقدر هم سیستم عامل را سخت گیرانه پیکربندی کنید، بخشی از داستان امنیت به زیرساخت شبکه ای برمی گردد که VPS شما روی آن قرار دارد. در زمان حملات یا حتی افزایش ناگهانی و مشکوک ترافیک، پلن هایی با سقف پهنای باند محدود، علاوه بر ریسک امنیتی، شما را با هزینه ی غیرمنتظره ی عبور از سقف مصرف هم روبه رو می کنند. با سرور مجازی ترافیک نامحدود، حداقل این نگرانی مالی از معادله حذف می شود و می توانید تمرکزتان را کامل روی تقویت امنیت بگذارید.
جمع بندی و چک لیست نهایی
- [ ] سیستم را به روز نگه دارید
- [ ] یک کاربر غیر روت بسازید و ورود Root را غیرفعال کنید
- [ ] از کلید SSH به جای پسورد استفاده کنید
- [ ] پورت SSH را تغییر دهید (اختیاری)
- [ ] فایروال را با ترتیب درست فعال کنید
- [ ] Fail2Ban نصب و تنظیم کنید
- [ ] سرویس های غیرضروری را غیرفعال کنید
- [ ] به روزرسانی خودکار امنیتی را فعال کنید
- [ ] لاگ ها را مانیتور کنید
- [ ] بک آپ منظم و خودکار داشته باشید
اگر می خواهید این چک لیست را روی زیرساختی پیاده کنید که نگرانی سقف ترافیک را هم از ابتدا حذف کرده باشد، سرور مجازی ترافیک نامحدود نگارنوین گزینه ی مناسبی برای شروع است.
سوالات متداول
۱. آیا تغییر پورت SSH واقعاً لازم است؟ اجباری نیست، اما حجم قابل توجهی از اسکن های خودکار بات ها را حذف می کند. مهم ترین لایه های امنیتی همچنان کلید SSH، فایروال و Fail2Ban هستند.
۲. آیا نصب آنتی ویروس روی سرور لینوکسی لازم است؟ برای اغلب سرورهای لینوکسی معمولی، رعایت اصول این راهنما (به روزرسانی، فایروال، دسترسی محدود) اولویت بسیار بالاتری نسبت به آنتی ویروس دارد. برای سرورهایی که فایل کاربران دیگر را هم میزبانی می کنند (مثل هاست اشتراکی)، ابزارهایی مثل ClamAV می تواند مفید باشد.
۳. بعد از این تنظیمات، سرور من صددرصد امن است؟ خیر؛ امنیت صددرصدی وجود ندارد. این گام ها بخش بزرگی از ریسک های رایج را حذف می کنند، اما مانیتورینگ مداوم، به روزرسانی و بک آپ باید همیشه ادامه دار باشند.
۴. آیا این تنظیمات روی هر توزیع لینوکسی یکسان است؟ دستورات مدیریت بسته (مثل apt یا dnf) بین توزیع ها فرق دارد، اما مفاهیم اصلی (کلید SSH، فایروال، Fail2Ban، بک آپ) در همه ی توزیع ها یکسان است.