بلافاصله بعد از تحویل سرور لینوکس: سیستم را بهروز کنید، یک کاربر sudo بسازید، ورود با کلید SSH را فعال و ورود root با رمز را غیرفعال کنید، فایروال UFW را با باز گذاشتن پورت SSH روشن کنید، Fail2ban و بهروزرسانی خودکار امنیتی را نصب کنید و یک بکاپ اولیه بگیرید. دستورهای زیر برای Ubuntu 22.04 و 24.04 نوشته شدهاند.
هشدار: تا زمانی که از اتصال با روش جدید مطمئن نشدهاید، نشست SSH فعلی را نبندید. همیشه یک ترمینال دوم برای تست باز کنید.
۱. تغییر رمز root
passwd
یک رمز طولانی و تصادفی انتخاب کنید و در مدیر رمز ذخیره کنید.
۲. بهروزرسانی سیستم
apt update && apt -y upgrade
اگر سرور ایران است و apt update خطا میدهد، از میرور داخلی استفاده کنید: رفع خطای apt و docker روی سرور ایران.
۳. ساخت کاربر با دسترسی sudo
adduser deploy
usermod -aG sudo deploy
۴. ورود با کلید SSH
روی رایانهٔ خودتان (اگر کلید ندارید):
ssh-keygen -t ed25519 -C "my-laptop"
ssh-copy-id deploy@SERVER_IP
سپس در ترمینال جدید تست کنید: ssh deploy@SERVER_IP.
۵. غیرفعال کردن ورود root و ورود با رمز
فایل /etc/ssh/sshd_config را ویرایش کنید و این مقادیر را تنظیم کنید:
PermitRootLogin no
PasswordAuthentication no
در Ubuntu فایلهای داخل /etc/ssh/sshd_config.d/ را هم بررسی کنید تا مقدار متضادی نداشته باشند. سپس:
sudo systemctl restart ssh
و در ترمینال جدید دوباره ورود با کلید را تست کنید.
۶. تغییر پورت SSH (اختیاری)
تغییر پورت امنیت واقعی ایجاد نمیکند ولی حجم تلاشهای خودکار را کم میکند. اگر تغییر دادید، ابتدا پورت جدید را در فایروال باز کنید. توجه: در Ubuntu 24.04 ممکن است SSH با socket activation اجرا شود و تغییر پورت به تنظیم ssh.socket نیاز داشته باشد.
۷. فایروال UFW
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status verbose
اگر پورت SSH را تغییر دادهاید، بهجای OpenSSH همان پورت را باز کنید.
۸. نصب Fail2ban
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
۹. بهروزرسانی خودکار امنیتی
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
۱۰. بکاپ یا اسنپشات اولیه
اگر ارائهدهندهٔ سرور شما اسنپشات دارد (در بسیاری از سرورهای خارج کلودیفای از منوی سرور در دسترس است)، یک اسنپشات از وضعیت تمیز بگیرید. فایلهای پیکربندی مهم را هم خارج از سرور نگه دارید.
خلاصهٔ اجرایی
| # | کار | دستور اصلی |
|---|---|---|
| ۱ | تغییر رمز root | passwd |
| ۲ | بهروزرسانی | apt update && apt -y upgrade |
| ۳ | کاربر sudo | adduser + usermod -aG sudo |
| ۴ | کلید SSH | ssh-copy-id |
| ۵ | بستن ورود root/رمز | sshd_config |
| ۶ | تغییر پورت (اختیاری) | Port در sshd_config |
| ۷ | فایروال | ufw enable |
| ۸ | Fail2ban | apt install fail2ban |
| ۹ | بهروزرسانی خودکار | unattended-upgrades |
| ۱۰ | بکاپ | اسنپشات از پنل |
- بهروزرسانی سیستم
apt update و upgrade
- کاربر sudo
کار روزمره بدون root
- کلید SSH
ورود با رمز را ببندید
- فایروال
فقط پورتهای لازم
- Fail2ban
مسدودسازی تلاشهای مکرر
- بکاپ
اسنپشات یا بکاپ اولیه
نشانههای نفوذ به سرور
حتی با رعایت چکلیست، هر چند وقت یک بار این نشانهها را بررسی کنید:
- مصرف غیرعادی پردازنده توسط پروسهای ناشناخته (رایجترین نشانهٔ ماینر):
topیاhtop. - ترافیک خروجی ناگهانی بدون افزایش بازدید:
vnstatیاiftop. - کاربران یا کلیدهای ناشناخته:
cat /etc/passwdوcat ~/.ssh/authorized_keys. - کارهای زمانبندیشدهٔ ناشناخته:
crontab -lوls /etc/cron.d. - ورودهای ناآشنا:
last -a | headوsudo grep "Accepted" /var/log/auth.log.
# پروسههایی که به شبکه وصلاند
sudo ss -tunp
# پرمصرفترین پروسهها
ps aux --sort=-%cpu | head
اگر سرور هک شد چه کنیم؟
- همهٔ رمزها، توکنها و کلیدهای API که روی سرور ذخیره بودهاند را از یک سیستم امن دیگر عوض کنید.
- از دادههای ضروری (نه فایلهای اجرایی و اسکریپتها) بکاپ بگیرید.
- یک سرور جدید و تمیز بسازید و این چکلیست را از ابتدا روی آن اجرا کنید.
- دادهها را پس از بررسی به سرور جدید منتقل کنید و سرور آلوده را حذف کنید.
- علت نفوذ (رمز ضعیف، نرمافزار قدیمی، پنل باز) را پیدا و رفع کنید تا تکرار نشود.
پاکسازی سرور آلوده معمولاً قابل اعتماد نیست؛ ساخت سرور جدید امنترین راه است. با صورتحساب ساعتی، سرور جدید در چند دقیقه آماده است.
امنیت سرویسهای رایج
| سرویس | خطر رایج | اقدام |
|---|---|---|
| MySQL / PostgreSQL | باز بودن پورت برای اینترنت | فقط روی 127.0.0.1 گوش دهد یا با فایروال به آیپی مشخص محدود شود |
| Redis | اجرا بدون رمز روی آیپی عمومی | bind 127.0.0.1 و requirepass |
| Docker | دور زدن UFW توسط پورتهای منتشرشده | انتشار روی 127.0.0.1؛ نکات داکر و UFW |
| پنلهای مدیریت وب | رمز پیشفرض و دسترسی عمومی | تغییر رمز، محدود کردن آیپی، HTTPS |
| وردپرس | افزونههای قدیمی | بهروزرسانی منظم و حذف افزونههای بیاستفاده |
برنامهٔ نگهداری دورهای
- هفتگی: بررسی
apt list --upgradable، فضای دیسک (df -h) و لاگ Fail2ban. - ماهانه: مرور کاربران و کلیدهای SSH، حذف سرویسهای بیاستفاده، تست بازگردانی یک بکاپ.
- پس از هر تغییر بزرگ: بررسی پورتهای باز با
sudo ss -tulpn.
سؤالات متداول
اگر بعد از این تنظیمات وصل نشدم چه کنم؟
از کنسول پنل یا حالت Rescue وارد شوید و تنظیمات SSH یا فایروال را اصلاح کنید. راهنمای کامل: سرور با SSH وصل نمیشود.
برای سرور ویندوز چه کنم؟
رمز قوی، بهروزرسانی Windows Update، محدود کردن RDP به آیپیهای مشخص با فایروال و فعالسازی Network Level Authentication ضروریترین اقدامها هستند.
آیا این مراحل برای Debian هم درست است؟
بله، دستورها در Debian 12 هم تقریباً یکساناند؛ فقط ممکن است نیاز به نصب sudo و ufw داشته باشید.
Fail2ban کافی است یا فایروال هم لازم است؟
هر دو لازماند. فایروال پورتهای غیرضروری را میبندد و Fail2ban تلاشهای مکرر ورود به سرویسهای باز (مثل SSH) را مسدود میکند.
آنتیویروس برای سرور لینوکس لازم است؟
برای بیشتر سرورها، بهروزرسانی منظم، ورود با کلید، فایروال و حداقل کردن سرویسهای باز مؤثرتر از آنتیویروس است. اگر سرور فایلهای کاربران را دریافت میکند، ابزاری مثل ClamAV برای اسکن فایلها مفید است.
چند وقت یک بار باید رمز root را عوض کنم؟
اگر ورود با رمز را غیرفعال کرده و از کلید SSH استفاده میکنید، تغییر دورهای رمز اهمیت کمتری دارد؛ اما پس از هر مشکوکشدن به نشت یا خروج یک عضو تیم، رمزها و کلیدها را عوض کنید.
از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی



