مقدمه
وقتیکه شما میخواهید برای اولینبار یک سرور جدید Ubuntu 16.04 بسازید، چند مرحله پیکربندی وجود خواهد داشت که بخشی از پروسه کلی نصب است. شما باید همه این مراحل را انجام دهید چون باعث میشود که امنیت و پایداری سرور شما بالا برود و آن را برای تنظیمات و اقدامات بعدی آماده میکند.
مرحله اول – ورود به عنوان کاربر اصلی (root)
برای وارد شدن به سرور، شما باید آدرس IP سرور خود را بدانید. همچنین به کلمه عبور نیاز دارید؛ البته اگر برای احراز هویت، SSH-key نصب کرده باشید، به SSH-key شخصی برای وارد شدن به حساب کاربر اصلی نیاز خواهید داشت.
اگر هنوز به سرور خود وصل نشدهاید، همین حالا شروع کنید و با کد دستوری زیر بهعنوان کاربر اصلی وارد شوید. (به جای your_server_ip، آدرس IP خود را بنویسید.)
ssh root@your_server_ip
برای کامل شدن ورود شما به سرور، باید هشدار اعتبار میزبان را تأیید کنید؛ البته گاهی اوقات این هشدار داده میشود. بعد از تأیید هشدار، احراز هویت اصلی خود را تولید کنید (کلمه عبور یا SSH-key شخصی). اگر میخواهید برای اولین بار با کلمه عبور وارد سرور شوید، از شما خواسته میشود که کلمه عبور اصلی را تغییر دهید.
کاربر اصلی (root)
کاربر اصلی در واقع مدیر یک محیط لینوکس است که از دسترسی زیادی بهره میبرد؛ همین دسترسی زیاد حساب اصلی، باعث میشود که شما از استفاده مداوم از آن منصرف شوید. دلیل آن هم بهخاطر این است که یکی از دسترسی حساب اصلی توانایی تغییرات مخرب است حتی اگر این تغییرات تصادفی و به اشتباه صورت گرفته باشند.
مرحله بعدی ساختن یک حساب کاربری جایگزین با دسترسیهای محدود شده برای کارهای روزانه است. ما به شما نحوه بالا بردن دسترسی حساب خود را در مواقعی که نیاز دارید آموزش میدهیم.
مرحله دوم – ساختن یک حساب کاربری جدید
وقتیکه با حساب اصلی وارد سرور شدید، میتوانید یک حساب کاربری جدید بسازید؛ شما از این به بعد با این حساب دید وارد سیستم خواهید شد.
دستور پایین نحوه اضافه کردن کاربر را نشان میدهد. شما باید به جای Username نام کاربری خود را بنویسید.
adduser Username
بعد از این کار باید کلمه عبور حساب خود را وارد کنید و بعد از آن چند سؤال دیگر از شما پرسیده میشود.
سعی کنید که یک کلمه عبور قوی و خوب انتخاب کنید. همچنین اطلاعات شخصی خود را میتوانید وارد کنید که البته کاملاً اختیاری است؛ بنابراین میتوانید در هر قسمت که نمیخواهید اطلاعاتی وارد کنید فقط دکمه Enter را بزنید تا از آن قسمت عبور کنید.
مرحله سوم – دسترسی کاربر اصلی (root)
الان یک حساب کاربری جدید با دسترسی عادی همه حسابهای کاربری دارید؛ البته احتمالاً لازم باشد که چند کار مدیریتی انجام دهید.
برای اینکه از حساب معمولی خود خارج نشوید تا وارد حساب اصلی شوید، میتوانید دسترسی حساب اصلی یا به اصطلاح superuser را روی حساب کاربری معمولی خود، تنظیم کنید. این کار باعث میشود که شما بتوانید با استفاده از دسترسی مدیریتی، دستورهای خود را با اضافهکردن کلمه sudo قبل از هر دستور، اجرایی کنید.
برای اضافهکردن این دسترسی بهحساب کاربری جدید، باید حساب را به گروه sudo اضافه کنید. در Ubunto 16.04، کاربرانی که به گروه sudo تعلق دارند بهصورت پیشفرض اجازه استفاده از کد دستوری sudo را دارند.
برای اضافهکردن حساب کاربری جدید به گروه sudo باید با حساب کاربری اصلی این کار را انجام دهید. در دستور زیر بهجای Username نام کاربری خود را بنویسید.
usermod -aG sudo Username
الان شما میتوانید دستورهای خود را با دسترسی superuser اجرایی کنید. اگر میخواهید که امنیت سرور خود را بالا ببرید، مراحل بعدی را حتماً مطالعه کنید.
مرحله چهارم – اضافه کردن احراز هویت SSH-key عمومی (توصیه شده)
مرحله بعدی برای ایمنسازی سرور خود تعیین احراز هویت SSH-key عمومی برای حساب کاربری جدیدتان است. بعد از انجام این کار، از شما خواسته میشود که یک SSH-key شخصی برای ورود به سرور تعیین کنید؛ در نتیجه این پروسه، امنیت سرور شما را بالا خواهد برد.
نحوه تولید یک جفت SSH-key
اگر هنوز دو SSH-key که شامل یک SSH-key شخصی و یک SSH-key عمومی میشود را ندارید، باید این SSH-keyها را تولید کنید. اگر یک SSH-key دارید که میخواهید از آن استفاده کنید، مستقیم وارد مرحله «کپیکردن SSH-key عمومی» شوید.
برای تولید یک جفت SSH-key جدید، دستور زیر را در ترمینال دستگاه خود (کامپیوتر یا هر دستگاهی که استفاده میکنید) وارد کنید.
ssh-keygen
فرض کنیم که نام کاربری شما localuser است؛ خروجی تولید شدهای که میبینید به شکل زیر خواهد بود:
ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
برای تأیید اسم فایل و مسیر آن، Return را بزنید. (البته میتوانید یک اسم جدید وارد کنید)
بعد از این کار، از شما خواسته میشود که یک عبارت عبور برای ایمنسازی SSH-keyی که ساختهاید وارد کنید. میتوانید هم عبارت عبور را وارد کنید و هم میتوانید آن را خالی بگذارید و چیزی ننویسید.
نکته: اگر عبارت عبور را خالی بگذارید، میتوانید از احراز هویت SSH-key شخصی بدون واردکردن عبارت عبور استفاده کنید. اما اگر عبارت عبور را وارد کنید، برای ورود به سرور به هر دوی SSH-key شخصی و عبارت عبور نیاز خواهید داشت. ایمنسازی SSH-keyها با عبارت عبور، امنیت آنها را خیلی بالا میبرد؛ بااینحال هر دو روش موارد استفاده خود را دارند و ایمنتر از یک کلمه عبور برای احراز هویت هستند.
بعد از تأیید فایل و مسیر آن، SSH-key شخصی با کد id_rsa و SSH-key عمومی با کد id_rsa.pub در دایرکتوری ssh دایرکتوری اصلی «localuser» تولید میشود. به یاد داشته باشید که بههیچوجه SSH-key شخصی خود را به کسانی که نباید به سرور شما دسترسی داشته باشند، ندهید.
کپیکردن SSH-key عمومی
بعد از اینکه یک جفت SSH-key تولید کردید، شما باید SSH-key عمومی خود را در سرور جدید خود کپی کنید. ما دو روش آسان را به شما معرفی میکنیم.
نکته: اگر در طول ایجاد Droplet SSH-key انتخاب شود، روش ssh-copy-id در دیجیتال اوشن قابلاستفاده نخواهد بود؛ دلیل غیرقابل استفاده بودن روش ssh-copy-id این است که اگر یک SSH-key وجود داشته باشد و ssh-copy-id برای کپیکردن SSH-key به کلمه عبور احراز هویت نیاز داشته باشد، دیجیتال اوشن احراز هویت کلمه عبور را غیرفعال میکند.
روش اول: استفاده از ssh-copy-id
اگر اسکریپت ssh-copy-id روی دستگاه شما نصب باشد، میتوانید از آن برای نصب SSH-key عمومی خود، روی هر حساب کاربری که اطلاعات ورودی دارد، استفاده کنید.
اسکریپت ssh-copy-id را با مشخصکردن نام کاربری و آدرس IP سروری که قرار است SSH-key روی آن نصب شود، به شکل زیر اجرا کنید:
ssh-copy-id Username@your_server_ip
بهمحض واردکردن کلمه عبور خود، SSH-key عمومی به فایل ریموت ssh/authorized_keys. کاربر اضافه میشود. اکنون با SSH-key شخصی مربوطه هم میتوانید وارد سرور شوید.
روش دوم: نصب SSH-key بهصورت دستی
فرض کنیم که شما یک جفت SSH-key تولید و در مرحله قبل، از آن استفاده کردهاید؛ برای پرینت کردن SSH-key عمومی خود (id_rsa.pub) دستور پایین را در ترمینال دستگاه خود وارد کنید:
cat ~/.ssh/id_rsa.pub
این دستور SSH-key عمومی شما را پرینت خواهد کرد و به شکل در خواهد آمد:
id_rsa.pub contents
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf [email protected]
SSH-key عمومی را انتخاب کنید و در کلیپ بورد خود کپی کنید.
برای اینکه بتوانید بهعنوان کاربر ریموت جدید، SSH-key را برای احراز هویت فعال کنید، شما باید SSH-key عمومی را به یک فایل خاص در دایرکتوری اصلی کاربر اضافه کنید.
بهعنوان کاربر اصلی در سرور دستور زیر را وارد کنید تا موقتاً وارد حساب کاربری جدید شوید. نام کاربری خود را به جای username وارد کنید.
su – Username
حالا شما وارد دایرکتوری حساب کاربری جدید خود شدهاید.
یک دایرکتوری جدید به اسم ssh. بسازید و دسترسیهای آن را با دستورهای زیر محدود کنید:
mkdir ~/.ssh
chmod 700 ~/.ssh
حالا فایل authorized_keys در ssh. را با ویرایشگر متن باز کنید. از nano برای ویرایش فایل استفاده کنید:
nano ~/.ssh/authorized_keys
حالا SSH-key عمومی خود را داخل ویرایشگر وارد کنید. دکمه CTRL-x را فشار دهید تا از فایل خارج شوید، سپس y را بزنید تا تغییراتی که انجام دادهاید ذخیره شوند و بعد ENTER را بزنید تا اسم فایل تأیید شود.
حالا با دستور زیر دسترسیهای فایل authorized_keys را محدود کنید:
chmod 600 ~/.ssh/authorized_keys
دستور زیر را یک بار وارد کنید تا به حساب کاربری اصلی برگردید:
Exit
حالا SSH-key عمومی شما نصب شد و میتوانید از SSH-keyهای SSH خود برای ورود به سرور با حساب کاربری خود استفاده کنید.
در مرحله بعد به شما نشان خواهیم داد که چگونه با غیرفعالکردن احراز هویت کلمه عبور، امنیت سرور را بالا ببرید.
مرحله پنجم – غیرفعال کردن احراز هویت کلمه عبور (توصیه شده)
حالا که شما با استفاده از SSH-keyهای SSH میتوانید وارد حساب کاربری جدید خود شوید، با غیرفعالکردن احراز هویت فقط با کلمه عبور، امنیت سرور خود را بالا ببرید. انجام این کار دسترسی SSH به سرور شما را به احراز هویت فقط با SSH-key عمومی محدود میکند. این تنها راهی است که با وارد شدن به سرور خود میتوانید SSH-key شخصی جفت شده با SSH-key عمومی نصب شده را در اختیار داشته باشید.
نکته: تنها درصورتیکه یک SSH-key عمومی برای حساب کاربری خود، همانطور که در مرحله چهار گفته شده، نصب کردهاید، احراز هویت کلمه عبور را غیرفعال کنید. در غیر این صورت، نمیتوانید وارد سرور خود شوید.
برای غیرفعالکردن احراز هویت کلمه عبور در سرور خود، سه مرحله را باید بگذرانید.
بهعنوان کاربر اصلی یا کاربر sudo جدید، پیکربندی Demon SSH را باز کنید:
sudo nano /etc/ssh/sshd_config
خطی را که PasswordAuthentication را مشخص میکند، پیدا کنید و آن را با حذف کردن پیش کد # از حالت comment خارج کنید، سپس ارزش آن را به «no» تغییر دهید. بعد از تغییرات این خط به شکل زیر در خواهد آمد:
PasswordAuthentication no
برای احراز هویت فقط با SSH-key دو تنظیمات دیگر وجود دارد که بهصورت پیشفرض تنظیم شدهاند. اگر این فایل را قبلاً اصلاح نکردهاید، لازم نیست که تغییرات زیر را انجام دهید.
PubkeyAuthentication yes
ChallengeResponseAuthentication no
وقتیکه تغییرات را انجام دادید، آنها را ذخیره کنید و فایل را با همان روش قبلی که گفتیم ببندید (اولCTRL-x ، بعد y و در آخر ENTER را بزنید).
دستور زیر را برای بارگذاری مجدد SSH daemon وارد کنید:
sudo systemctl reload sshd
حالا احراز هویت کلمه عبور غیرفعال شده و سرور شما فقط با احراز هویت SSH-key قابلدسترسی است.
مرحله ششم – تست ورود به سرور
حالا، قبل از اینکه وارد سرور شوید، باید پیکربندی خود را تست کنید. تا وقتیکه مطمئن نشدید که میتوانید با SSH وارد شوید، اتصال خود را قطع نکنید.
در یک ترمینال جدید روی دستگاه خود با حساب کاربری جدیدی که ساختید وارد سرور شوید. برای این کار دستور زیر را وارد کنید (دبه جای username و your_server_ip، نام کاربری و آدرس IP سرور خود را بنویسید).
ssh username@your_server_ip
اگر همانطور که در مراحل ۴ و ۵ گفته شد، احراز هویت SSH-key عمومی را به حساب کاربری خود اضافه کنید، SSH-key شخصی بهعنوان احراز هویت استفاده خواهد شد. در غیر این صورت، از شما خواسته میشود تا از کلمه عبور حساب کاربری خود استفاده کنید.
نکته درباره احراز هویت SSH-key: اگر SSH-key جفت شده خود را با عبارت عبور بسازید، از شما خواسته میشود که عبارت عبور را برای SSH-key خود وارد کنید. در غیر این صورت، اگر SSH-key جفت شما عبارت عبور نداشته باشد، میتوانید بدون کلمه عبور وارد سرور خود شوید.
وقتیکه احراز هویت در سرور انجام شود، شما بهعنوان کاربر جدید وارد خواهید شد.
به یاد داشته باشید که اگر میخواهید دستورها را با دسترسی کاربر اصلی اجرا کنید، قبل از هر دستور عبارت sudo را بنویسید. مثلاً:
sudo command_to_run
مرحله هفتم – تنظیم یک فایروال اولیه
سرورهای Ubunto 16.04 میتوانند از فایروال UFW استفاده کنند تا مطمئن شوند که تنها اتصال به سرویسهای تعیین شده، مجاز است. با این اپلیکیشن بهراحتی میتوانید یک فایروال اولیه بسازید.
اپلیکیشنهای مختلفی وجود دارند که میتوانند بهمحض نصب، پروفایلهای خود را با UFW ثبت کنند. این پروفایلها به UFW اجازه میدهند که این اپلیکیشنها را بر اساس اسم مدیریت کند. سرویس OpenSSH که به ما اجازه ورود به سرور را میدهد، یک پروفایل ثبت شده با UFW دارد. شما میتوانید این سرور را با نوشتن دستور زیر ببینید:
sudo ufw app list
Available applications:
OpenSSH
شما باید مطمئن شوید که فایروال اجازه اتصالات SSH را میدهد چون در این صورت میتوانید دوباره وارد شوید. با نوشتن دستور زیر میتوانید این اجازه را به اتصالات سرور بدهید:
sudo ufw allow OpenSSH
سپس با نوشتن دستور زیر میتوانید فایروال را فعال کنید:
sudo ufw enable
حرف y را بنویسید و بعد ENTER را برای ادامه کار بزنید. با نوشتن دستور زیر همچنان میتوانید اجازه اتصالات SSH را صادر کنید:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
در صورتی که میخواهید سرویسهای اضافی را نصب و پیکربندی کنید، باید تنظیمات فایروال را بهگونهای تعیین کنید که اجازه ورود ترافیک مورد نیاز به سرور را بدهد.
با پایان این مراحل، تنظیمات اولیه سرور انجام شده و میتوانید هر نرمافزاری را که نیاز دارید روی سرور خود نصب کنید.