تقریباً هر VPS تازهای یکجور شروع میشود: با root وارد میشوید، چند چیز نصب میکنید و یک ماه بعد هنوز root هستید. این تا روزی جواب میدهد که اسکریپتی که کپی کردهاید پوشهی اشتباه را پاک کند. راهاندازی یک کاربر معمولی با sudo پنج دقیقه طول میکشد، و ترتیب مهمتر از فرمانهاست — اگر اشتباهش کنید خودتان را پشت در میگذارید.
این ترتیب امن برای Ubuntu 22.04/24.04 و Debian 12 است.
۱. کاربر را بسازید
با root:
adduser deploy
usermod -aG sudo deploy
adduser یک رمز و چند اطلاعات اختیاری میخواهد (برای آنها فقط Enter بزنید). رمز واقعی انتخاب کنید: برای sudo تایپش خواهید کرد. روی ایمیج حداقلی Debian، اگر فرمان وجود ندارد اول apt install -y sudo را اجرا کنید.
۲. کلید SSH خود را به او بدهید
سادهترین راه کپی کردن کلیدهای مجاز root با حفظ مالکیت درست است:
rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy
اگر ترجیح میدهید دستی انجامش دهید:
mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
مجوزهای اشتباه دلیل کلاسیک شکست بیصدای ورود با کلید است. SSH فایل authorized_keys را که کاربران دیگر بتوانند در آن بنویسند نادیده میگیرد.
۳. پیش از هر تغییری آزمایش کنید
نشست root را باز نگه دارید. در یک ترمینال جدید:
ssh -p 22 deploy@203.0.113.10
sudo whoami
از IP و پورت خودتان استفاده کنید — در پلن NAT همان پورت SSH شخصی از پنل است. اگر sudo whoami عبارت root را چاپ کرد، همه چیز درست است. اگر ورود شکست خورد، هنوز پنجرهی root را برای درست کردنش دارید.
۴. ورود root را ببندید
حالا در را ببندید. به جای ویرایش پیکربندی اصلی، یک فایل drop-in کوچک بسازید:
cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh
sshd -t اول نحو را بررسی میکند. پیکربندی خراب بهعلاوهی reload همان چیزی است که آدمها را محتاج کنسول میکند. PasswordAuthentication no فقط وقتی معنا دارد که ورود با کلید برای کاربر جدید کار کند — که همین حالا آزمایشش کردید.
یک ترمینال دیگر باز کنید و مطمئن شوید root رد میشود و deploy هنوز وارد میشود. بعد نشست قدیمی root را ببندید.
۵. اختیاری: sudo بدون رمز برای اتوماسیون
اگر یک اسکریپت دیپلوی بدون پرسش به sudo نیاز دارد، دقیقاً همان را به او بدهید و نه بیشتر:
visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp
راستش NOPASSWD: ALL وسوسهانگیز است، اما یعنی کلید دزدیدهشده برابر با root است. محدودش کنید به فرمانهایی که اتوماسیون اجرا میکند.
اگر چیزی خراب شد
کنسول وب در پنل نه به SSH وابسته است نه به فایروال. از آنجا وارد شوید، فایل داخل /etc/ssh/sshd_config.d/ را درست کنید، reload کنید، تمام. کل روند بازیابی را در چطور به VPS قفلشده برگردیم نوشتهایم.
قدم بعدی
- واقعاً به ورود فقط با کلید بروید: احراز هویت با کلید SSH.
- سروصدای حملههای brute force را کم کنید: fail2ban.
- بقیهی اصول پایه را با چکلیست امنیت VPS تازه کامل کنید.
گزینههای دسترسی هر پلن در مستندات دسترسی آمده است. حتی یک Nano سهدلاری هم لیاقت یک کاربر غیر root را دارد — ارزانترین ارتقای امنیتیای است که وجود دارد.
نظرات
هنوز نظری نیست. اولین نفر باشید.