گیک فارسی

نوشته های یک گیک فارسی از فعالیت ها ،‌ علاقه مندی ها و نقد هایش

امن کردن سرویس SSH در میزبانی(Host) های اختصاصی VPS یا Dedicated

نویسنده:
8 ژانویه 15

پس از خرید میزبانی اختصاصی ، اولین قدم برای مدیریت میزبانی اتصال به آن از طریق SSH یا همون Secure Shell هستش. اولین قدم برای امن کردن میزبانی هم به همین سرویس ssh بر میگرده.

به صورت پیش‌فرض برای ورود به سیستم عامل میزبان از نام کاربری root و کلمه عبورش استفاده میکنیم. اما استفاده از کلمه عبور اون هم در شرایطی که معمولاً همین کلمه های عبور به دلیل ضعفشون باعث هک شدن سرویس ما از طریق Brute Force (حدس زدن کلمه عبور از طریق هکر با استفاده از ربات ها) می‌شوند اصلاً عقلانی نیست.
بهترین راه برای امن کردن ssh استفاده از RSA key Pair هست. برای این کار کافیه روی سیستم خودتون از دستور زیر استفاده کنید :

ssh-keygen -t rsa

پس از زدن این دستور ، دو تا سؤال از شما میپرسه ، یکی اینکه کجا Private Key را ذخیره کنه که به نظر من بهتره توی ssh./~ ذخیره بشه و سوال دوم در مورد Passphrase هست که تعیین کردنش باعث میشه برای استفاده از اون Private Key به Passphrase نیاز باشه که حُسنش اینه کسی اگه فایل Private Key را داشته باشه (البته اهمیت RSA Key Pair اینه که کسی این کلید اختصاصی را نداشته باشه!) نیاز به Passphrase داشته باشه. و بدیش اینه در زمان استفاده در ارتباط با ssh سیستم از شما این Passphrase را میپرسه.

وقتی سؤالات را پاسخ دادین دو تا فایل در پوشه ای که تعیین کردیم ایجاد میشه ، یکی به صورت پیش‌فرض id_rsa و دیگری id_rsa.pub (البته اگه نام دیگری میگذاشتین نامش متفاوت بود). این فایل pub همون کلید عمومی هست که باید روی سِرور شما قرار بگیره. پس با استفاده از دستور زیر این کار را انجام میدیم :

ssh-copy-id root@host-ip-address

ssh از شما کلمه عبور root را میپرسه و بعدش پیامی مبنی بر موفقیت کار نشون میده و از شما میخواد بررسی کنید که همه چیز توی فایل ssh/authorized_keys./~ درسته.حالا بدون استفاده از کلمه عبور میتونیم از طریق ssh وارد سِرور بشیم.

یک قدم دیگه از کار هنوز باقی مونده ، ابتدا باید برای ssh تعیین کنیم که اجازه ورود با کاربر root را از طریق کلمه عبور نده و به طور کلی ورود از طریق کلمه عبور را ببندیم. پس توی فایلetc/ssh/sshd_config/ مقادیر زیر را تغییر میدیم :

PermitRootLogin without-password
PasswordAuthentication no

توجه: یادتون باشه تا مطمئن نشدین ورود از طریق RSA کار میکنه این تغییرات بالا را انجام ندین.

در آخر هم با دستور زیر ssh را restart میکنیم :

sudo service ssh restart