
امنیت سرور مجازی و سختکردن لینوکس

هر سرور مجازی از همان لحظهای که روشن و به اینترنت متصل میشود، هدف اسکنهای خودکار و تلاشهای ورود غیرمجاز قرار میگیرد؛ این موضوع ربطی به معروف یا کوچک بودن سایت شما ندارد. نتیجهی یک سرور ناامن میتواند از افت شدید عملکرد (بهخاطر ماینینگ رمزارز توسط مهاجم) تا سرقت داده، بلاکشدن 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، بکآپ) در همهی توزیعها یکسان است.
