از لحظهای که یک سرور مجازی جدید به اینترنت وصل میشود، رباتهای خودکار شروع به اسکن و تلاش برای ورود به آن میکنند. چند ساعت اول، مهمترین زمان برای امنسازی سرور است. در این راهنما ۱۰ اقدام ضروری امنیت VPS لینوکس را به ترتیب انجام میدهیم؛ از بهروزرسانی و ورود با کلید SSH تا فایروال، بهروزرسانی خودکار، پایش و بکاپ.
فهرست مطالب
۱. بهروزرسانی سیستمعامل
ایمیج سیستمعامل ممکن است چند ماه قدیمی باشد. قبل از هر کاری، وصلههای امنیتی را نصب کنید:
sudo apt update && sudo apt full-upgrade -y
sudo reboot
در AlmaLinux یا Rocky Linux از sudo dnf upgrade -y استفاده کنید. ریاستارت برای اعمال بهروزرسانی هسته لازم است.
۲. ساخت کاربر عادی با sudo
کار روزمره با کاربر root ریسک اشتباه و سوءاستفاده را بالا میبرد. یک کاربر عادی با دسترسی sudo بسازید:
adduser admin
usermod -aG sudo admin
در خانواده RHEL، گروه مدیریتی wheel است.
۳. ورود با کلید SSH و غیرفعال کردن رمز
مهمترین اقدام این فهرست است. ورود با رمز عبور در برابر حملات حدس رمز (Brute Force) آسیبپذیر است؛ ورود با کلید این حمله را عملاً بیاثر میکند. روی کامپیوتر خودتان:
ssh-keygen -t ed25519
ssh-copy-id admin@SERVER_IP
بعد از اینکه در یک ترمینال جدید مطمئن شدید ورود با کلید کار میکند، فایل /etc/ssh/sshd_config.d/10-hardening.conf را بسازید:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
sudo sshd -t && sudo systemctl restart ssh
نشست فعلی را تا اطمینان کامل از ورود در ترمینال جدید نبندید. جزئیات بیشتر، از جمله دام فایل 50-cloud-init.conf که ممکن است ورود با رمز را دوباره فعال کند، در راهنمای کامل امنیت SSH آمده است.
۴. فعالسازی فایروال
فقط پورتهایی را باز کنید که واقعاً لازم دارید. با UFW:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
اگر IP ثابت دارید، SSH را فقط برای همان IP باز کنید: sudo ufw allow from YOUR_IP to any port 22 proto tcp. اگر پورت SSH را تغییر دادهاید، قبل از فعال کردن فایروال پورت جدید را باز کنید. مقایسه ابزارهای فایروال در UFW یا iptables یا nftables.
توجه: اگر از Docker استفاده میکنید، پورتهایی که Docker منتشر میکند از UFW عبور میکنند. توضیح و راهحل در امنیت Docker.
۵. نصب Fail2ban
Fail2ban لاگها را میخواند و IPهایی را که چند بار ناموفق بودهاند، موقتاً مسدود میکند. حتی با ورود فقط با کلید، نویز لاگها و بار اتصالهای بیفایده را کم میکند و برای سرویسهای دیگر مثل وبسرور مفید است:
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
تنظیم Jailها برای SSH، Nginx و وردپرس در آموزش نصب Fail2ban روی Ubuntu.
۶. بهروزرسانی خودکار امنیتی
بسیاری از نفوذها از آسیبپذیریهایی است که وصله آنها مدتها پیش منتشر شده بود. در Ubuntu، بسته unattended-upgrades وصلههای امنیتی را خودکار نصب میکند:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
برخی وصلهها، بهخصوص هسته، به ریاستارت نیاز دارند. وجود فایل /var/run/reboot-required نشان میدهد سرور منتظر ریاستارت است؛ آن را در زمان کمترافیک انجام دهید.
۷. حذف سرویسها و پورتهای غیرضروری
هر سرویسی که روی شبکه گوش میدهد، یک در ورودی بالقوه است:
sudo ss -tulpn
برای هر خط خروجی بپرسید: آیا این سرویس لازم است؟ آیا باید از اینترنت در دسترس باشد؟ دیتابیسها (MySQL روی ۳۳۰۶، PostgreSQL روی ۵۴۳۲، Redis روی ۶۳۷۹) تقریباً هیچوقت نباید روی 0.0.0.0 گوش دهند؛ آنها را روی 127.0.0.1 یا شبکه خصوصی محدود کنید. سرویسهای بیاستفاده را غیرفعال کنید:
sudo systemctl disable --now SERVICE_NAME
۸. ساعت، لاگها و پایش ورودها
- منطقه زمانی و همگامسازی ساعت: لاگها بدون ساعت درست برای بررسی حادثه بیارزشاند.
sudo timedatectl set-timezone Asia/Tehran timedatectl status - بررسی ورودها: بهصورت دورهای ببینید چه کسی و از کجا وارد شده است:
last -a | head -20 sudo journalctl -u ssh --since "1 day ago" | grep -i accepted - پایش: مصرف منابع، فضای دیسک و در دسترس بودن سرویسها را پایش کنید تا رفتار غیرعادی، مثل مصرف ناگهانی CPU توسط یک ماینر، زود دیده شود.
۹. امنیت سرویسهای نصبشده
سختسازی سیستمعامل کافی نیست؛ بیشتر نفوذها از طریق برنامههای نصبشده رخ میدهد:
- وردپرس، افزونهها و قالبها را بهروز نگه دارید و افزونههای بلااستفاده را حذف کنید.
- پنلهای مدیریتی (phpMyAdmin، پنل Docker، پنل n8n) را روی اینترنت باز نگذارید یا به IP مشخص محدود کنید.
- همه سایتها را با گواهی SSL و HTTPS ارائه دهید.
- برای هر برنامه، کاربر دیتابیس جداگانه با کمترین دسترسی بسازید.
۱۰. بکاپ مستقل
هیچ اقدام امنیتی صددرصدی نیست. اگر سرور هک یا دادهها رمزگذاری شوند، بکاپ مستقل تنها راه بازگشت است. بکاپ باید:
- خودکار و منظم باشد.
- در محلی جدا از سرور و با دسترسی جداگانه نگهداری شود تا مهاجم نتواند آن را هم حذف کند.
- بهصورت دورهای بازیابی آزمایشی شود.
Snapshot جای بکاپ را نمیگیرد؛ دلایل آن در چرا Snapshot جای Backup را نمیگیرد و اصول بکاپگیری در بکاپ سرور چیست آمده است.
چکلیست خلاصه
- سیستمعامل بهروز شده و بهروزرسانی خودکار امنیتی فعال است.
- کاربر عادی با sudo ساخته شده و ورود root غیرفعال است.
- ورود SSH فقط با کلید انجام میشود.
- فایروال فقط پورتهای لازم را باز گذاشته است.
- Fail2ban فعال است.
- هیچ دیتابیس یا پنل مدیریتی روی اینترنت باز نیست.
- ساعت سرور درست است و ورودها بررسی میشوند.
- بکاپ خودکار و مستقل وجود دارد و تست شده است.
سوالات متداول
آیا تغییر پورت SSH برای امنیت VPS کافی است؟
خیر. تغییر پورت فقط حجم تلاشهای خودکار و نویز لاگها را کم میکند. امنیت واقعی از ورود با کلید، غیرفعال کردن رمز و فایروال میآید.
اگر کلید SSH را گم کنم، چطور وارد سرور شوم؟
از کنسول VNC در پنل کاربری سرور وارد شوید؛ این کنسول به SSH وابسته نیست. سپس کلید عمومی جدید را در فایل authorized_keys قرار دهید.
از کجا بفهمم سرورم هک شده است؟
نشانههای رایج: مصرف غیرعادی CPU یا ترافیک خروجی، فرایندها یا کاربران ناشناخته، ورودهای ناآشنا در لاگ و فایلهای تغییریافته. در صورت شک، سرور را از شبکه جدا کنید و از بکاپ سالم بازیابی کنید.
آیا آنتیویروس برای سرور لینوکس لازم است؟
برای سرورهایی که فایلهای کاربران را دریافت میکنند (مثل سرور ایمیل یا هاست اشتراکی)، اسکنر بدافزار مفید است. برای اغلب VPSها، بهروزرسانی، سختسازی و کمترین دسترسی اثر بیشتری دارد.
VPS امن از روز اول
سرورهای مجازی تراست هاست با کنسول اضطراری و زیرساخت ایزوله ارائه میشوند. اگر فرصت سختسازی و پایش ندارید، خدمات مدیریت سرور این کار را برایتان انجام میدهد.