−25%

روی پرداخت سالانه Windows، تا ۳۱ اکتبر. مشاهده پلن‌ها

EQVPS

چطور روی VPS کاربر sudo بسازیم و دست از root برداریم

روی Ubuntu یا Debian یک کاربر sudo بدون دسترسی root بسازید، کلید SSH خود را به او بدهید، آزمایشش کنید و بعد ورود root را ببندید — با ترتیبی که شما را پشت در نگذارد.

تقریباً هر 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 قفل‌شده برگردیم نوشته‌ایم.

قدم بعدی

گزینه‌های دسترسی هر پلن در مستندات دسترسی آمده است. حتی یک Nano سه‌دلاری هم لیاقت یک کاربر غیر root را دارد — ارزان‌ترین ارتقای امنیتی‌ای است که وجود دارد.

پرسش‌های متداول

چرا همان root را ادامه ندهم؟

هر چیزی که با root اجرا کنید می‌تواند کل سیستم را خراب کند، حتی یک اشتباه تایپی. ربات‌ها هم اول نام کاربری 'root' را امتحان می‌کنند، پس بستن ورود root پرتکرارترین هدف را حذف می‌کند. یک کاربر با نام و sudo، پیش از هر فرمان مدیریتی به شما مکث می‌دهد و از آنچه اجرا شده سابقه نگه می‌دارد.

اگر خودم را پشت در بگذارم چه؟

از کنسول وب در پنل کاربری‌تان استفاده کنید. حتی وقتی SSH خراب است یا فایروال جلوی شما را گرفته کار می‌کند، پس می‌توانید وارد شوید و sshd_config را درست کنید. به همین دلیل هم کاربر جدید را پیش از بستن نشست root آزمایش می‌کنید.

sudo بدون رمز را فعال کنم؟

برای حساب شخصی، درخواست رمز را نگه دارید — اگر کلید SSH لو برود، این آخرین خط دفاع است. sudo بدون رمز برای یک کاربر دیپلوی جداگانه که اتوماسیون از آن استفاده می‌کند معقول است، به شرطی که به فرمان‌هایی که واقعاً لازم دارد محدود باشد.

فرمان sudo روی سرور Debian من وجود ندارد. چرا؟

ایمیج‌های حداقلی Debian همیشه آن را ندارند. با root و 'apt install -y sudo' نصبش کنید، بعد کاربرتان را به گروه sudo اضافه کنید.

از کدام پورت SSH استفاده کنم؟

همانی که در پنل نشان داده شده. پلن‌های IP اختصاصی از پورت ۲۲ روی IP خودتان استفاده می‌کنند؛ پلن‌های NAT از پورت SSH شخصی شما.

نظرات

هنوز نظری نیست. اولین نفر باشید.

یک نظر بگذارید

نظرات پیش از نمایش بررسی می‌شوند.