7 گام مهم جهت ایمن سازی Open SSH

OpenSSH یا Secure Shell به عنوان یک استاندارد جهت ارتباط Remote با سرور های لینوکسی استفاده می شود. استفاده از تنظیمات پیشفرض SSH هیچگاه کامل نبوده و زمانی که یک سرور SSH را راه اندازی میکنید، چند قدم کوتاه اما مفید وجود دارند که میتواند نصب شما را مقداری سخت کند، اما این گام ها، گام هایی مثبت در جهت افزایش امنیت سرور شماست. با ما همراه باشید…

 

1- استفاده از Username و Password پیچیده:

استفاده از Username و Password پیچیده

 

یکی از اولین مواردی که باید به آن توجه داشته باشید این است که اگر شما یک سرور SSH راه اندازی کرده اید و در فضای اینترنت قرار داده اید، احتمالا سرور شما تحت حمله توسط هکر هایی قرار خواهد گرفت که تلاش میکنند Username / Password شما را به دست بیاورند. بطور معمول هکر ها پورت 22 (پورت پیش فرض SSH) را Scan میکنند تا ماشین هایی که SSH را Run کرده اند پیدا کنند، سپس تحت حملات Brute-Force تلاش میکنند تا اطلاعات ورود شما را به دست آورند. با داشتن پسورد های قوی و پیچیده هر حمله ای ثبت خواهد شد و پیش از به ثمر رسیدن جلوی ان گرفته خواهد شد.

امیدواریم که در حال حاضر نیز شما از پسورد های پیچیده استفاده می کنید اما اگر اینچنین نیست، پسوردی بامشخصات زیر انتخاب نمایید:

  • حداقل شامل 8 کاراکتر
  • شامل حروف بزرگ و کوچک
  • شامل اعداد
  • شامل حداقل یک کاراکتر مانند ^,%,#,@ و …

 

2- غیر فعال کردن دسترسی ROOT

غیر فعال کردن دسترسی ROOT

تنظیمات SSH Server در مسیر /etc/ssh/sshd_config دخیره شده است. برای غیر فعال کردن دسترسی root باید کد زیر را در فایل sshd_config وارد نمایید:

 

غیر فعال کردن دسترسی ROOT

 

سپس از طریق ترمینال سرویس SSH را Restart نمایید:

 

غیر فعال کردن دسترسی ROOT

 

در مواقعی که نیاز به دسترسی root دارید میتوانید از دستور  su استفاده کنید.

دستور su (Switch User , Super User , Substitute User) به کاربر اجازه میدهد دسترسی Root را با وارد کردن پسورد Root به دست بیاورد. جهت مطالعه بیشتر در این خصوص به این لینک مراجعه نمایید.

 

3- محدود کردن دسترسی کاربران

محدود کردن دسترسی کاربران

دسترسی به SSH میتواند تنها محدود به کاربرانی باشد که نیاز به استفاده از SSH دارند. اگر شما اکانت های کاربری زیادی روی سیستم خود دارید میتوانید دسترسی به SSH را به کاربرانی اعطا کنید که واقعا با SSH سر و کار دارند. برای این کار بایستی یک خط با دستور AllowUsers در فایل sshd_config اضافه کنید. کد باید به این شکل باشد که بعد از دستور AllowUsers یک فاصله قرار بگیرد و نام User مورد نظر اضافه شود و User های دیگر نیز با یک فاصله از هم جدا می شوند. برای مثال:

 

محدود کردن دسترسی کاربران

 

سپس سرویس SSH را Restart نمایید.

 

4- غیر فعال کردن Protocol 1

 

SSH از دو پروتکل استفاده می کند. Protocol 1 و Protocol 2. پروتکل قدیمی تر Protocol 1 است که از امنیت کمتری برخوردار است و بایستی تا زمانی که مشخصا مورد نیاز نیست غیر فعال باشد. درفایل sshd_config به دنبال دو خط زیر بگردید و مشابه الگوی زیر تغییر دهید:

 

غیر فعال کردن Protocol 1

 

سپس سرویس SSH را Restart نمایید.

 

5- استفاده از یک پورت غیر استاندارد (پورت به غیراز 22)

استفاده از یک پورت غیر استاندارد (پورت به غیراز 22)

همانطور که پیشتر گفتیم بصورت پیشفرض SSH برای ارتباطات ورودی از پورت 22 استفاده میکند. هکر ها میتوانند به راحتی با اسکن کردن پورت 22 متوجه شوند SSH روی ماشین شما در حال اجرا است یا خیر! یک روش اثر بخش برای جلوگیری از حملات هکر ها این است که پورت SSH را از پورت پیش فرض 22 به به یک پورت غیر استاندارد تغییر دهید. هر پورت بدون استفاده ای (ترجیحا یک پورت بالای 1024 ) میتواند مورد استفاده قرار بگیرد. خیلی از افراد از پورت 2222 برای این کار استفاده میکنند (زیرا به راحتی به ذهن سپرده میشود) مانند پورت 8080 که اغلب به عنوان جایگزین پورت 80 (HTTP) استفاده میشود. اما در این مورد پورت 2222 بهترین انتخاب نیست! به این دلیل که هکر ها بعد از پورت 22 پورت 2222 را اسکن می کنند. بهتر است یک پورت تصادفی بالای 1024 که برای سرویس خاصی استفاده نمیشود انتخاب کنید. برای اعمال این تغییر یک خط مانند الگوی زیر را به فایل sshd_config اضافه کنید.

 

استفاده از یک پورت غیر استاندارد (پورت به غیراز 22)

 

سپس سرویس SSH را  Restart نمایید.

نکته: فراموش نکنید که بعد از این تغییر باید حتما Incoming پورت مورد نظر را در Firewall مورد استفاده در شبکه خود باز کنید.

در سیستم عامل CentOS 6 و بالاتر باید حتما Selinux را هم Update نمایید و پورت مورد استفاده حتما به درستی علامت گذاری شود. در غیر اینصورت SSH جلوی دسترسی به آن را می گیرد. برای مثال:

 

استفاده از یک پورت غیر استاندارد (پورت به غیراز 22)

 

توضیح: در اینجا پورت 2345 مورد استفاده قرار گرفته است.

 

بعد از این با توجه به این که SSH دیگر روی پورت استاندارد 22، Listen نمیکند، شما نیاز خواهید داشت شماره پورت جدید را به کاربرانی که قصد ارتباط با SSH را دارند اعلام کنید. برای تعیین پورت باید از طریق Command Line در SSH Client دستور زیر را وارد نمایید:

 

استفاده از یک پورت غیر استاندارد (پورت به غیراز 22)

 

اگر به نظر شما آزار دهنده میرسد هر بار برای اتصال به SSH این روال را تکرار کنید، قطعه دستورات زیر را در فایل config واقع در مسیر ~/.ssh/config قرار دهید.

 

استفاده از یک پورت غیر استاندارد (پورت به غیراز 22)

 

توجه داشته باشید که باید به فایل ~/.ssh/config دسترسی به شکل زیر اعطا نمایید.

 

استفاده از یک پورت غیر استاندارد (پورت به غیراز 22)

6- محدود کردن دسترسی به SSH از طریق Firewall

محدود کردن دسترسی به SSH از طریق Firewall

اگر شما فقط نیاز دارید که توسط یک IP خاص به SSH متصل شوید و نیاز به دسترسی به SSH از طریق IP دیگری را ندارید میتوانید نحوه اتصال به SSH را محدود به IP خاصی نمایید. برای انجام این کار می توانید یک Rule در Router ایجاد نمایید و یا از طریق دستور iptables دسترسی به پورت 22 را فقط به IP مورد نظر محدود نمایید. برای مثال کد زیر دسترسی به آی پی 10.20.30.40 را روی پورت 22 باز کرده و دسترسی به مابقی IP ها را به پورت 22 می بندد:

 

محدود کردن دسترسی به SSH از طریق Firewall

اگر شما امکان محدود کردن دسترسی ها فقط از طریق یک IP را ندارید نگران نباشید. Iptables همچنان میتواند جلوی حملات Brute-Force را از طریق ثبت تعداد Login ها و Block کردن IP هایی که تلاش های متعدد برای ارتباط با پورت 22 را دارند بگیرد. برای مثال:

 

محدود کردن دسترسی به SSH از طریق Firewall

 

اولین Rule تعداد تلاش های IP ها برای دسترسی به پورت 22 به ثبت می کند.

دومین Rule بررسی میکند اگر آن IP برای 4 یا بیش از 4 بار تلاش نا موفق برای ارتباط با پورت 22 را داشته است در Blacklist قرار می دهد و در غیر اینصورت ارتباط برقرار می شود.

نکته 1: توجه داشته باشید که در صورتی که Rule برای Accept کردنIP های خاصی را ایجاد کرده باشید شامل این محدودیت ها نمی شود.

نکته 2: در صورتی که برای ارتباط با SSH از یک پورت غیر استاندارد استفاده میکنید به جای 22 در مثال های بالا از شماره پورت تعریف شده استفاده نمایید.

 

7- استفاده از Public/Private Key برای احراز هویت

 

استفاده از کلید رمزنگاری شده برای احراز هویت شامل 2 منفعت است.

اول این که احراز هویت را ساده تر می کند، به این شکل که دیگر نیازی به وارد کردن پسورد برای ورود ندارید (به شرط این که برای Key ها پسورد تعیین نکنید که در ادامه توضیح داده خواهد شد).

دوم این که میتوانید بعد از این که یک بار Public/Private Key را تولید کردید احراز هویت از طریق پسورد را بصورت کامل غیر فعال کنید. به این معنی که بدون Key امکان ورود به SSH ممکن نباشد. در نتیجه ردیابی پسورد به طور کلی منتفی خواهد شد.

پروسه ایجاد Public/Private Key برای احراز هویت و نصب روی سرور برای استفاده از آن برای ورود به SSH نسبتا ساده است.

در ابتدا باید یک جفت Public/Private Key روی سیستم لوکال ایجاد نمایید که برای اتصال به سرور استفاده میشود (شما نیاز خواهید داشت تا این پروسه را روی هر ماشینی که قصداتصال دارد انجام دهید) :

استفاده از Public/Private Key برای احراز هویت

 

این دستور دو فایل در مسیر مخفی ~/.ssh شما ایجاد میکند. یک فایل به نام id_rsa که Private Key است و یا فایل به نام id_rsa.pub که Public Key شماست.

اگر نمیخواهید برای هربار که قصد اتصال دارید از شما Passphrase (Passphrase اساسا یک پسورد است که روی یک Public Key مشخص قرار داده میشود) خواسته شود زمانی که دستور بالا را برای تولید Public/Private Key اجرا میکنید جایی را که درخواست وارد کردن Passphrase را دارد با فشردن دکمه Enter رد کنید. این به شما بستگی دارد که تصمیم بگیرید یک Passphrase از Public Key شما محافظت کند یا خیر! اگر از Passphrase برای محافظت از Public Key استفاده نکنید در نتیجه هر کسی که به سیستم شما دسترسی پیدا کند بصورت اتوماتیک دسترسی Remote به SSH هم دارد. همچنین Root در سرور طبیعتا به Key های شما دسترسی دارد. اگر دلیلی برای نداشتن اعتماد به Root دارید، پس در دردسر بزرگی افتاده اید! رمزنگاری Public Key امنیت بیشتری را برای شما به ارمغان می اورد و زمانی که برای وارد کردن Passphrase در هر بار اتصال صرف می کنید دقیقا مشابه به وارد کردن پسورد است، با این تفاوت که به جای وارد کردن پسورد SSH، Passphrase را برای باز کردن دسترسی Public Key وارد می نمایید.

حال زمان تنظیم کردن دسترسی های Private Key است دستور زیر را روی سیستم لوکال اجرا نمایید:

استفاده از Public/Private Key برای احراز هویت

حال Public Key (id_rsa.pub ) را روی سرور کپی کنید و در لیست Authorized_keys نصب کنید:

استفاده از Public/Private Key برای احراز هویت

نکته: زمانی که یک Public Key را در سرور اضافه میکنید میتوانید بعدا آن را حذف کنید.

در پایان دسترسی های زیر را در سرور اعمال نمایید:

استفاده از Public/Private Key برای احراز هویت

دسترسی های زیر در صورتی که StrictModes روی مسیر /etc/ssh/sshd_config تنظیم شده باشد ضروری می باشد.

با دستور زیر مطمئن شوید زمینه SELinux به درستی تنظیم شده است:

استفاده از Public/Private Key برای احراز هویت

حال زمانی که اقدام به لاگین به سرور می کنید از شما پسوردی خواسته نمی شود (مگر این که نیاز باشد Passphrase را وارد کنید). بصورت پیش فرض SSH ابتدا از طریق Key احراز هویت را انجام می دهد. اگر Key را پیدا نکند و یا احراز هویت Fail شود، به سراغ احراز هویت از طریق پسورد مرسوم می رود.

یعد از یک بار امتحان می توانید از طریق Public/Private Key وارد سرور شوید،

می توانید احراز هویت از طریق پسورد را به روش وارد کردن دستور زیر در فایل sshd_config بصورت کامل غیرفعال نمایید:

استفاده از Public/Private Key برای احراز هویت

 

 

7 گام مهم جهت ایمن سازی Open SSH

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پانزده − 10 =