تنظیمات امنیتی اولیه در VPS جدید
آموزش 10 دقیقهای برای ایمنسازی VPS شامل ساخت کاربر جدید، تنظیم SSH keys، غیرفعال کردن root و فعالسازی firewall برای جلوگیری از حملات اسکنرها.
10 دقیقه اول تعیین میکند سرور شما چقدر امن است
یک VPS کاملاً جدید امن نیست. از لحظهای که یک IP عمومی دریافت میکند، اسکنرها برای ورود تلاش میکنند و ایمیج پیشفرض، هدف بزرگی در اختیار آنها قرار میدهد: دسترسی به root اغلب ممکن است، پسوردها اغلب مجاز هستند، فایروال وجود ندارد و هیچ چیزی طبق برنامه وصله (patch) نمیشود. خبر خوب این است که بستن تمام این موارد حدود ده دقیقه و تعدادی دستور نیاز دارد. این دستورالعملی است که من روی هر سرور جدید، قبل از نصب هر چیزی، اجرا میکنم.
مراحل را به ترتیب انجام دهید، زیرا مراحل بر اساس یکدیگر بنا شدهاند. هر مرحله راهنمای مخصوص خود را دارد که در حین کار لینک شده است؛ این صفحه مسیر سریعی است که آنها را به هم متصل میکند.
دقیقه 1: همه چیز را بهروزرسانی کنید
با استفاده از اطلاعاتی که ارائهدهنده شما داده است، با کاربر root وارد شوید و قبل از هر کار دیگری، سیستم را کاملاً بهروز کنید:
apt update && apt upgrade -yیک سیستم بدون وصله، آسانترین هدف ممکن است، بنابراین این مرحله اولویت دارد. پس از اتمام، بهروزرسانیهای امنیتی خودکار را تنظیم کنید تا بدون نیاز به یادآوری شما، سیستم وصله بماند.
دقیقه 2: یک کاربر معمولی با sudo بسازید
همیشه با کاربر root کار نکنید. یک کاربر برای خود بسازید و به آن sudo بدهید:
adduser matt
usermod -aG sudo mattاز اینجا به بعد، با این کاربر وارد شوید و از sudo برای کارهای مدیریتی استفاده کنید. کار کردن همیشگی با root به این معناست که هر اشتباه و هر نفوذی با قدرت نامحدود رخ میدهد، که دقیقاً همان چیزی است که کار کردن با یک کاربر بدون امتیاز برای جلوگیری از آن وجود دارد.
دقیقه 4: کلیدهای SSH را تنظیم کنید
پسوردها حدس زده میشوند؛ کلیدها نه. در لپتاپ خود، اگر هنوز کلیدی ندارید، یکی بسازید:
ssh-keygen -t ed25519سپس نیمه عمومی (public) آن را به سرور کپی کنید:
ssh-copy-id matt@YOUR_SERVERssh-copy-id نیاز دارد که ورود با پسورد برای کاربر جدید روشن باشد؛ اگر قبلاً خاموش شده است، ~/.ssh/authorized_keys مربوط به root را در /home/matt/.ssh/authorized_keys (که مالک آن matt است) کپی کنید، یا کلید عمومی خود را به صورت دستی در آن فایل پیست کنید.
مدل پشت این مرحله، یعنی یک کلید برای هر دستگاه، مجوزهایی که باعث خرابی ورود با کلید میشوند و لغو کردن یک کلید گمشده، در اصول مدیریت کلید SSH پوشش داده شده است.
از حساب کاربری خارج شوید و با استفاده از کلید، مجدداً با matt وارد شوید و قبل از انجام مرحله بعد، از کارکرد آن مطمئن شوید. قفل کردن SSH قبل از اینکه بتوانید با کلید وارد شوید، روشی است که باعث میشود افراد خود را از دست دسترسی خارج کنند (lock out).
دقیقه 6: ورود root و پسوردها را غیرفعال کنید
حالا که کلید شما کار میکند، دو دری را که اسکنرها به آنها متکی هستند، ببندید. از یک فایل drop-in استفاده کنید تا ارتقای پکیجها آن را بازنویسی نکنند. نام آن را 00- بگذارید تا قبل از 50-cloud-init.conf (که در ایمیجهای ابر Ubuntu با PasswordAuthentication yes عرضه میشوند) مرتب شود؛ سرویس sshd اولین مقداری را که میخواند نگه میدارد، بنابراین فایلی که دیرتر مرتب میشود، بیصدا تغییرات را از بین میبرد:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noسپس SSH را بازنشانی (reload) کنید:
sudo systemctl restart sshسپس تنظیماتی را که sshd واقعاً استفاده میکند بررسی کنید، تا یک فایل drop-in اشتباه شما را فریب ندهد:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'با خاموش شدن پسوردها و حذف ورود root، ترافیک مداوم brute-force علیه سرور شما به سادگی نمیتواند موفق شود. فرآیند کامل، شامل تغییر اختیاری پورت، در SSH hardening on a VPS آمده است.
دقیقه 8: فایروال را روشن کنید
همه ورودیها را به صورت پیشفرض مسدود (deny) کنید، سپس فقط آنچه نیاز دارید را مجاز کنید. قبل از فعال کردن فایروال، SSH را مجاز کنید، وگرنه اتصال خود را قطع میکنید:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableقوانین allow را برای هر سرویسی که واقعاً اجرا میکنید، مانند 80/tcp و 443/tcp برای یک وبسایت، اضافه کنید. بررسی کنید که هم IPv4 و هم IPv6 پوشش داده شده باشند، زیرا فایروالی که فقط IPv4 را فیلتر میکند، بخش IPv6 را کاملاً باز میگذارد. راهنمای کامل در Firewalls 101 on a VPS موجود است.
دقیقه 10: اسکنرها را با Fail2ban کند کنید
در نهایت، Fail2ban را برای اخراج آدرسهایی که به پورتهای شما حمله میکنند، اضافه کنید:
sudo apt install -y fail2banدر Ubuntu 24.04، نصب پیشفرض از SSH در اولین بوت محافظت میکند. با وجود نیاز به کلید، این یک پشتیبان است که نویز لاگها را کاهش میدهد و متخلفان تکراری را مسدود میکند، نه اینکه دفاع اصلی شما باشد.
چکلیست شما
این دستورالعمل بود. از مولد زیر برای تیک زدن هر کنترل و تولید یک چکلیست شخصیسازی شده که میتوانید همراه سرور داشته باشید، شامل دستور دقیق برای هر مرحله، استفاده کنید:
این کار را برای هر سرور جدید یک بار انجام دهید تا به حافظه عضلانی تبدیل شود. ده دقیقه زمان اکنون، از یک بعدازظهر بسیار بد که پس از هک شدن سرور در پی میآید، نجاتتان میدهد.
پس از اینکه موارد ضروری برقرار شدند، automatic security updates on Ubuntu سرور را بدون نیاز به ورود مجدد شما، بهروز نگه میدارد.
FAQ
اولین قدم در یک VPS جدید چیست؟
سیستم را با apt update && apt upgrade -y بهروزرسانی کنید، سپس یک کاربر معمولی با sudo بسازید و کار کردن با root را متوقف کنید. از آنجا، کلیدهای SSH را تنظیم کنید، ورود root و احراز هویت با پسورد را غیرفعال کنید، یک فایروال با حالت default-deny فعال کنید و Fail2ban را نصب کنید. انجام آنها به این ترتیب یعنی هر مرحله برای انجام بدون از دست دادن دسترسی، ایمن است.
چگونه از قفل شدن (lock out) خود در حین سختگیرانه کردن SSH جلوگیری کنم؟
قبل از اینکه پسوردها یا root را غیرفعل کنید، ورود با کلید SSH خود را تنظیم و تست کنید. با کلید خارج و دوباره وارد شوید تا از کارکرد آن مطمئن شوید، و تنها در آن زمان PasswordAuthentication و PermitRootLogin را خاموش کنید. وقتی فایروال را فعال میکنید، قبل از اجرای ufw enable، پورت 22 را مجاز کنید. اگر واقعاً دسترسی را از دست دادید، کنسول وب ارائهدهنده شما بدون SSH دسترسی را به شما باز میگرداند.
آیا واقعاً به همه اینها در یک سرور کوچک نیاز دارم؟
بله، زیرا اسکنرها اهمیتی نمیدهند که سرور شما چقدر کوچک است. آنها به همان روش برای هر IP عمومی تلاش میکنند. کل این دستورالعمل حدود ده دقیقه زمان میبرد و مسیرهای آسان را از بین میبرد: بدون ورود root، بدون حدس پسورد، هیچ چیز آشکار نشدهای که خودتان انتخاب نکرده باشید، و باگهای شناخته شده که به طور خودکار وصله شدهاند.
مهمترین قدم چیست؟
SSH فقط با کلید با ورود root غیرفعال شده. بیشتر حملات به یک VPS تازه، حدسهای پسورد خودکار علیه root هستند و خاموش کردن هر دو، آن دسته کامل از حملات را غیرممکن میکند. سپس فایروال و Fail2ban آنچه را که باقی مانده محدود و کند میکنند.
چگونه تایید کنم که سرور واقعاً ایمن شده است؟
قبل از اینکه به آن اعتماد کنید، سه مورد را به صورت دستی بررسی کنید. sudo ss -tlnp را اجرا کنید و تایید کنید که فقط پورتهایی که قصد باز کردنشان را داشتید در یک آدرس عمومی در حال گوش دادن هستند، بدون هیچ سرویس 0.0.0.0 یا [::] که فراموش کرده بودید. sudo ufw status verbose را اجرا کنید و تایید کنید که سیاست ورودی پیشفرض deny است و هر دو قانون ساده و (v6) حضور دارند. و همیشه قبل از بستن جلسه اول SSH، یک جلسه دوم باز نگه دارید، تا اشتباه در پیکربندی SSH نتواند شما را از سرور خارج کند. اگر هر سه مورد درست به نظر میرسند، اصول اولیه برقرار است.