بیشتر شرکتها و سایتها برای شبکههای داخلی و پاسخگویی به نیازشون از سرور مجازی استفاده میکنن اما سرور مجازی معمولا به صورت خام و بدون هیچگونه کانفیگ اولیه به مشتری تحویل داده میشه. در این مطلب قصد دارم کانفیگ سرور مجازی اوبونتو را توضیح بدم. البته برای بیشتر نسخههای اوبونتو کانفیگ به همین شکل هست و فقط ممکنه در برخی موارد در نسخههای قدیمیتر نیاز به نصب برخی پکیجها باشه.
اتصال به سرور مجازی
بعد از خرید سرور مجازی از طرف شرکت خدمات دهنده یک سری اطلاعات به مشتری داده میشه. در این اطلاعات معمولا دو بخش برای مشتری پررنگتر از بقیه قسمتها مشخص شده. یک، اطلاعات مربوط به اتصال به RDP ویندوز هست و دو، اطلاعات مربوط به کانکشن لینوکس. در اینجا ما به بخش دوم توجه داریم و از این بخش به نام کاربری، آدرس ip و پورت SSH نیاز داریم. معمولا نام کاربری به صورت پیشفرض در سرورهای مجازی لینوکس root هست.
برای اتصال به سرور مجازی از ترمینال دستور زیر را وارد میکنیم:
ssh root@ip
اگر پورت سرور مجازی عددی غیر از ۲۲ بود دستور بالا خطا میده و باید از دستور زیر برای اتصال استفاده کرد:
ssh -p port root@ip
بروزرسانی سرور مجازی
اولین قدم بعد از ورود به سرور مجازی بروزرسانی نسخه لینوکس و تمام پکیجها هست. شاید در نسخههای دسکتاپ این موررد خیلی برای بسیاری از کاربران اهمیت نداشته باشه اما در سرور و فضای آنلاین، بروزرسانی یک عمل حیاتی محسوب میشه. برای بروزرسانی از دستور زیر استفاده می کنیم:
sudo apt update -y && sudo apt upgrade -y
دستور بالا از پکیج منجر اوبونتو به نام apt درخواست لیست بروزرسانیهای جدید می کنه و بعد این بروزرسانیها را نصب میکنه. پارامتر -y (بخوانید دش y) برای این کاربرد داره که برای تاییدههایی که سیستم عامل برای بررسی و بروزرسانی لازم داره به صورت پیشفرض گزینه yes انتخاب بشه.
بعد از تکمیل بروزرسانی با دستور زیر سرور مجازی را ریبوت می کنیم:
sudo reboot
بعد از راهاندازی و اتصال مجدد به سرور برای حذف پکیجهایی که سیستم عامل دیگه به اونها نیاز نداره و در بروزرسانی به اصطلاح یتیم (Orphaned) شدن از دستور زیر استفاده میکنیم:
sudo apt autoremove -y && sudo apt autoclean -y
ایجاد کاربر جدید
یک اصل در امنیت این هست که از اکانت root به صورت مستقیم استفاده نشه. پس برای حل مشکل لازمه یک کاربر جدید بسازیم و دسترسیهای لازم را به این کاربر بدیم تا بتونه دستورات ما را اجرا کنه و در عین حال دسترسی کامل و مستقیم به روت سیستم هم نداشته باشه. برای اینکار از دستور زیر استفاده میکنیم:
adduser username
بعد از وارد کردن این دستور لازمه چند مرحله طی بشه. اولین مرحله انتخاب نام کاربری یا username هست. یک نام کاربری به غیر از root یا admin و مواردی مثل اینها انتخاب کنید. لازمه بدونید بین کاراکترهای نام کاربری نباید فاصله باشه.
در مرحله بعد لازمه کلمه عبور برای این کاربر تعیین بشه. این عمل ۲ بار از شما خواسته میشه، یکبار برای تعیین کلمه عبور و یکبار برای تایید کلمه عبور قبلی. لازمه بدونید که کلمه عبور کاربر را حتما شامل حروف و اعداد و کاراکترهای خاص انتخاب کنید تا از امنیتش اطمینان داشته باشید. مثلا ۱۲۳۴۵۶ نذارید!
در انتها یکسری اطلاعات ازتون می خواد که میتونید بدون وارد کردن متن خاصی فقط enter بزنید تا مراحل ساخت کاربر جدید تموم بشه.
مجوزهای کاربر
کاربری که در مرحله قبل ایجاد شد یک کاربر معمولی هست و کار خاصی نمیتونه انجام بده. پس برای اینکه بشه از این کاربر برای مدیریت سرور مجازی استفاده کرد لازمه دسترسیها و مجوزهای لازم به کاربر داده بشه. در لینوکس برای اینکار میشه از گروههای کاربری استفاده کرد. هر گروه کاربری یکسری مجوزها داره که اگر کاربر عوض اون گروه باشه، کاربر هم به مجوزهای گروه دسترسی داره. برای مورد مدنظر ما لازمه تا کاربر جدید به گروه sudo اضافه بشه. برای اینکار از دستور زیر استفاده میشه:
adduser username sudo
در این مرحله که کاربر جدید ساخته شد و مجوزهای لازم را دریافت کرد، از کاربر root به صورت مستقیم استفاده نخواهیم. پس با دستور exit اتصال را قطع می کنیم:
exit
از این به بعد برای اتصال به سرور مجازی از نام کاربری جدید به جای root استفاده می کنیم:
ssh username@ip
تولید SSH Key
استفاده از کلید SSH یک راه بسیار امنتر از استفاده از کلمه عبور برای اتصال به سرور مجازی هست. به این صورت که تنها کسی میتونه به سرور مجازی متصل بشه که کلید ورود داشته باشه و این کلید هم میتونه به صورت یک فایل باشه و توسط مدیر سرور جابجا بشه. برای این کار چند مرحله باید طی بشه که شامل دو بخش هست. یک بخش مربوط به تولید کلید SSH هست و بخش دوم مربوط به تنظیم اون که در ادامه توضیح میدم.
ابتدا در سیستم شخصی یا شرکت، برای ایجاد یک جفت کلید SSH دستور زیر را وارد میکنیم:
ssh-keygen
در ادامه یک نام برای کلید SSH از کاربر نیاز داریم. برای نام میشه از هر کلمهای استفاده کرد اما معمولا id_rsa انتخاب میشه چون نام پیشفرض همینه! در ادامه یک Key Phrase از کاربر درخواست میکنه. این یک لایه امنیتی بیشتر برای کلید SSH ایجاد میکنه به این صورت که صرفا کسی که کلید SSH را داشته باشه و رمز در هم بدونه میتونه وارد بشه.
در این مرحله به سرور مجازی کانکت میشیم و دستور زیر را وارد می کنیم:
mkdir -p ~/.ssh
دستور بالا یک پوشه به نام .ssh در پوشه Home کاربر ایجاد می کنه.
برای انتقال کلید SSH تولید شده روی سیستم شخصی یا شرکت به سرور مجازی از دستور زیر استفاده میشه:
scp -P port ~/.ssh/id_rsa.pub username@ip:~/.ssh/authorized_keys
اگر پورت SSH سرور شما ۲۲ هست میتونید مقدار زیر را حذف کنید:
-P port
در این مرحله لازمه مجوزهای لازم به پوشه و فایلهای درون پوشه .ssh برای اجرای کلید SSH روی سرور داده بشه. برای اینکار از دستور زیر استفاده میکنیم:
sudo chmod 700 ~/.ssh/
sudo chmod 600 ~/.ssh/*
برای تست کاری که انجام دادیم با دستور زیر از سرور خارج میشیم:
logout
و مجدد به سرور متصل میشیم. اگر مراحل درست طی شده باشه اینبار بدون اینکه از شما کلمه عبور بخواد مستقیم به سرور وصل میشید.
کانفیگ سرویس SSH
تا اینجا هنوز تنظیمات SSH کامل نشده. برای تکمیل کار دستور زیر را برای ویرایش فایل کانفیگ SSH وارد کنید:
sudo nano /etc/ssh/sshd_config
دو مقدار PermitRootLogin و PasswordAuthentication را پیدا کنید و به شکل زیر تغییر بدید:
PermitRootLogin yes
به
PermitRootLogin no
و
#PasswordAuthentication yes
به
PasswordAuthentication no
در کد بالا کامنت یا # را از جلوی پارامتر بردارید. برای ذخیره کردن تغیرات از کلیدهای ترکیبی ctrl+x بعد y بعد enter استفاده کنید و برای اعمال تغییرات دستور زیر را وارد کنید:
sudo systemctl restart sshd
تنظیم فایروال
برای تنظیم فایروال به منظور اتصال به سرور از طریق SSH لازمه پورت ۲۲ یا پورت SSH به فایروال سیستم اضافه بشه. از اینجا به بعد اتصال به سرور نباید قطع بشه تا پورت SSH را در فایروال تنظیم کنیم. برای اینکار از دستور زیر استفاده میکنیم:
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw disable && sudo ufw enable
سپس با زدن y و enter تغییرات اعمال میشه. حالا میتونید اتصال را قطع کنید یا هرکار دیگهای…
در پایان شما کانفیگ سرور مجازی اوبونتو را انجام دادید و یک سرور مجازی با امنیتی مناسب و آماده برای انواع کانفیگهای مختلف دارید.