پروتکل SSH یا همان Secure Shell یک پروتکل امن جهت ایجاد ارتباطات از راه دور در بین سیستم ها و سرورها میباشد. این پروتکل به عنوان جایگزینی برای Telnet ارائه شده است که دارای مکانیزم های امنیتی و رمزنگاری میباشد. ما در این مقاله قصد داریم به 7 نکته برای امن سازی پروتکل SSH بپردازیم.
در گذشته از پروتکل Telnet جهت ایجاد ارتباطات از راه دور و اجرا دستورات و مدیریت سیستم ها و سرورها استفاده میشد اما از آنجایی که این پروتکل از رمزنگاری پشتیبانی نمیکرد و داده هارو به صورت متن ساده در بین سیستم ها انتقال میداد به عنوان خطر بزرگی برای سازمان ها درنظر گرفته شد. توجه داشته باشید زمانی که یک حمله MITM صورت بگیرد یا یک شخص توانایی شنود داده های شبکه را داشته باشد به راحتی میتواند Username و Password و حتی دستورات و پاسخ آنهارا ببیند.
به عنوان مثال تصویر زیر یک بسته Telnet میباشد که به راحتی با Wireshark پس باز کردن آن بخش های Username و Password برایمان قابل نمایش میباشد.
حالا در تصویر زیر یک بسته SSH را میبینیم که به شکل کامل رمزنگاری شده است و بدون داشتن کلید نمیتوانیم اطلاعات و داده های درون بسته SSH را ببینیم.
توجه داشته باشید که ما در این بخش قصد داریم حملات پر استفاده توسط هکرها به سمت پروتکل SSH را معرفی و بررسی کنیم که این حملات فارغ از آسیب پذیری ها و CVE های ثبت شده میباشد.
شاید برای شما سوال شود که مگه SSH پروتکل امنی نیست؟ پس چرا ما در اینجا صحبت از حملات SSH میکنیم؟ پاسخ سوال شما به این شکل است که SSH امن است اما نسبت به پروتکل Telnet و مکانیزم های امنیتی جدیدی که دارد امن است اما نسبت به حملات مختلف نیاز به پیکربندی امنیتی و راه اندازی صحیح با درنظر گرفتن نکات امنیتی میباشد.
یکی از رایج ترین حملات در بین هکرها بر روی پروتکل SSH حمله BruteForce میباشد. این حمله با داشتن تعداد زیادی Username و Password سعی میکند که با تست کردن چندین مرتبه این Username ها و Password ها به نتیجه برسد. در گاهی شرایط وجود دارد که این حمله فقط بر روی قسمت Password انجام میشود و فرد مهاجم با دانستن Username به سراغ حدس و تست کردن تعداد زیادی Password میروید. این حمله زمانی جوابگو میباشد که کارمندان بدون درنظر گرفتن نکات نوشتن رمز عبور از رمز عبور های بسیار ساده و قابل حدس استفاده میکنند.
برای یادگیری حملات رمز عبور و تکنیک های هکرها دوره SANS SEC504 را از دست ندهید ! (کلیک کنید)
این حمله زمانی اتفاق میافتد که گروهی از افراد یا یک فرد قصد داشته باشد بر روی چندین سرور که SSH بر روی آنها فعال است میزان زیادی نام کاربری و رمز عبور را تست میکنند که شاید یکی از آنها بر روی سرورها جواب بدهد. اگر این حمله با موفقیت انجام شود باز هم بخشی از آن به عدم آگاهی کارمندان از نوشتن رمز عبور امن برمیگردد.
این نکته یکی از قدیمی ترین و حیاطی ترین مواردی میباشد که باید برای امن سازی SSH درنظر گرفته شود. زمانی که ما SSH را راه اندازی میکنیم به صورت پیش فرض دسترسی به کاربر Root امکان پذیر میباشد. این موضوع میتواند بسیار خطرناک باشد زیرا کاربرد Root دسترسی کاملی بر روی تمامی نقاط سیستم دارد. در پیکربندی SSH باید وارد شدن به کاربر Root غیر فعال شود حتی اگر افراد از پسوردهای قوی استفاده میکنند پیشنهاد میشود که این دسترسی غیرفعال شود و اگر کاربر بخواهد دسترسی Root داشته باشه فقط امکان استفاده از دستورات su و sudo برای آن فراهم باشد.
یکی دیگر از نکات مهم در پیکربندی SSH تغییر Port پیش فرض آن( 22 ) به یک Port دیگر میباشد که فرد مهاجم به راحتی نتواند Port مربوط به SSH را شناسایی کند و از طریق آن حمله خود را آغاز کند.
محدودیت گذاشتن برای پسوردهای امتحان شده توسط فرد مهاجم موضوع مهمی در جلوگیری از BruteForce میباشد. در این روش ما SSH را به شکلی پیکربندی میکنیم که فرد مهاجم یا هرشخص دیگری در هنگام وارد کردن رمز عبور اگر به تعداد دفعات که شما مشخص میکنید رمز را اشتباه وارد کند دیگر نتواند رمز عبور جدیدی را وارد کند و دسترسی آن بسته شود.
یکی از نکاتی که واقعا میتونه به نظارت بر روی SSH Login ها مخصوصا Root Login کمک کند ایجاد یک Script در سیستم برای زمانی که یک فرد به کاربر Root دسترسی پیدا میکند.
این Script میتواند به گونه ای باشد که اگر شخصی به کاربر Root وارد شود برای شما یک Email به عنوان هشدار ارسال شود.
زمانی که این ویژگی را پیکربندی میکنیم SSH Session های که استفاده نمیشوند به صورت خودکار بسته میشوند. برای مثال یک SSH Session از سه روز قبل در سرور ما فعال میباشد اما استفاده ای از آن نمیشود، با استفاده از این روش میتوانیم مشخص کنیم که اگر یک SSH Session بعد از برای مثال 2 دقیقه فعالیتی نداشت آنرا ببند.
توجه کنید که در این روش ما از رمز عبور استفاده نمیکنیم. رمزهای عبور اصولا هرچقدرهم قوی باشند بازهم دربرابر حملات BruteForce نمیتوانند مقاومت کنند. از این جهت در روش Passwordless Login ما از یک SSH Key جهت ورود به سیستم استفاده میکنیم و این فرآيند به مراتب نسبت به ورود از طریق رمز عبور سریع تر و ساده تر و امن تر میباشد.
توجه کنید که ما در SSH میتوانیم کاربرانی را ایجاد کنیم که رمز عبور ندارند و از طریق آنها به راحتی وارد سیستم شویم. این موضوع امری بسیار خطرناک میباشد و باید توسط مدیران سیستم حساب های بدون پسورد غیرفعال سازی شوند.
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو
متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider میباشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود