امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

7 نکته برای امن سازی پروتکل SSH

پروتکل SSH یا همان Secure Shell یک پروتکل امن جهت ایجاد ارتباطات از راه دور در بین سیستم ها و سرورها میباشد‌. این پروتکل به عنوان جایگزینی برای Telnet ارائه شده است که دارای مکانیزم های امنیتی و رمزنگاری میباشد. ما در این  مقاله قصد داریم به 7 نکته برای امن سازی پروتکل SSH بپردازیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

در گذشته از پروتکل Telnet جهت ایجاد ارتباطات از راه دور و اجرا دستورات و مدیریت سیستم ها و سرورها استفاده میشد اما از آنجایی که این پروتکل از رمزنگاری پشتیبانی نمیکرد و داده هارو به صورت متن ساده در بین سیستم ها انتقال میداد به عنوان خطر بزرگی برای سازمان ها درنظر گرفته شد. توجه داشته باشید زمانی که یک حمله MITM صورت بگیرد یا یک شخص توانایی شنود داده های شبکه را داشته باشد به راحتی میتواند Username و Password و حتی دستورات و پاسخ آنهارا ببیند.

مقایسه عملی بسته های SSH و Telnet

به عنوان مثال تصویر زیر یک بسته Telnet میباشد که به راحتی با Wireshark پس باز کردن آن بخش های Username و Password برایمان قابل نمایش میباشد.

7 نکته برای امن سازی پروتکل SSH

حالا در تصویر زیر یک بسته SSH را میبینیم که به شکل کامل رمزنگاری شده است و بدون داشتن کلید نمی‌توانیم اطلاعات و داده های درون بسته SSH را ببینیم.

7 نکته برای امن سازی پروتکل SSH

معرفی حملات معروف SSH

توجه داشته باشید که ما در این بخش قصد داریم حملات پر استفاده توسط هکرها به سمت پروتکل SSH را معرفی و بررسی کنیم که این حملات فارغ از آسیب پذیری ها و CVE های ثبت شده میباشد.
شاید برای شما سوال شود که مگه SSH پروتکل امنی نیست؟ پس چرا ما در اینجا صحبت از حملات SSH میکنیم؟ پاسخ سوال شما به این شکل است که SSH امن است اما نسبت به پروتکل Telnet و مکانیزم های امنیتی جدیدی که دارد امن است اما نسبت به حملات مختلف نیاز به پیکربندی امنیتی و راه اندازی صحیح با درنظر گرفتن نکات امنیتی میباشد.

حمله 1 - BruteForce

یکی از رایج ترین حملات در بین هکرها بر روی پروتکل SSH حمله BruteForce میباشد. این حمله با داشتن تعداد زیادی Username و Password سعی میکند که با تست کردن چندین مرتبه این Username ها و Password ها به نتیجه برسد. در گاهی شرایط وجود دارد که این حمله فقط بر روی قسمت Password انجام میشود و فرد مهاجم با دانستن Username به سراغ حدس و تست کردن تعداد زیادی Password میروید. این حمله زمانی جوابگو میباشد که کارمندان بدون درنظر گرفتن نکات نوشتن رمز عبور از رمز عبور های بسیار ساده و قابل حدس استفاده میکنند.

برای یادگیری حملات رمز عبور و تکنیک های هکرها دوره SANS SEC504 را از دست ندهید ! (کلیک کنید)

  • نکته: یک پسورد امن باید پسوردی حاوی کارکترهای انگلیسی کوچک و بزرگ به همراه کارکترهای خاص مانند & / * % $ # و... باشد و طول این پسورد حداقل 16 کارکتر یا بیشتر باشد. همچنین شما برای داشتن یک رمز عبور امن می‌توانید از وب سایت PaasowrdGenerator استفاده کنید و با مشخص کردن طول رمز عبور و استفاده از کارکترهای خاص و کوچک و بزرگ یک رمز عبور امن را به ایجاد کنید.

حمله 2 - Spray And Pray

این حمله زمانی اتفاق می‌افتد که گروهی از افراد یا یک فرد قصد داشته باشد بر روی چندین سرور که SSH بر روی آنها فعال است میزان زیادی نام کاربری و رمز عبور را تست میکنند که شاید یکی از آنها بر روی سرورها جواب بدهد‌. اگر این حمله با موفقیت انجام شود باز هم بخشی از آن به عدم آگاهی کارمندان از نوشتن رمز عبور امن برمیگردد.

7 نکته امنیتی برای امن سازی پروتکل SSH

غیرفعال سازی Root Login

این نکته یکی از قدیمی ترین و حیاطی ترین مواردی میباشد که باید برای امن سازی SSH درنظر گرفته شود. زمانی که ما SSH را راه اندازی میکنیم به صورت پیش فرض دسترسی به کاربر Root امکان پذیر میباشد. این موضوع می‌تواند بسیار خطرناک باشد زیرا کاربرد Root دسترسی کاملی بر روی تمامی نقاط سیستم دارد. در پیکربندی SSH باید وارد شدن به کاربر Root غیر فعال شود حتی اگر افراد از پسوردهای قوی استفاده میکنند پیشنهاد میشود که این دسترسی غیرفعال شود و اگر کاربر بخواهد دسترسی Root داشته باشه فقط امکان استفاده از دستورات su و sudo برای آن فراهم باشد.

تغییر Port پیش فرض SSH

یکی دیگر از نکات مهم در پیکربندی SSH تغییر Port پیش فرض آن( 22 ) به یک Port دیگر میباشد که فرد مهاجم به راحتی نتواند Port مربوط به SSH را شناسایی کند و از طریق آن حمله خود را آغاز کند.

قرار دادن محدودیت در تعداد پسوردهای وارد شده

محدودیت گذاشتن برای پسوردهای امتحان شده توسط فرد مهاجم موضوع مهمی در جلوگیری از BruteForce میباشد. در این روش ما SSH را به شکلی پیکربندی میکنیم که فرد مهاجم یا هرشخص دیگری در هنگام وارد کردن رمز عبور اگر به تعداد دفعات که شما مشخص میکنید رمز را اشتباه وارد کند دیگر نتواند رمز عبور جدیدی را وارد کند و دسترسی آن بسته شود.

قراردادن Notification برای نظارت بر SSH Login

یکی از نکاتی که واقعا میتونه به نظارت بر روی SSH Login ها مخصوصا Root Login کمک کند ایجاد یک Script در سیستم برای زمانی که یک فرد به کاربر Root دسترسی پیدا میکند.

این Script میتواند به گونه ای باشد که اگر شخصی به کاربر Root وارد شود برای شما یک Email به عنوان هشدار ارسال شود.

تنظیم Timeout Interval

زمانی که این ویژگی را پیکربندی میکنیم SSH Session های که استفاده نمیشوند به صورت خودکار بسته میشوند. برای مثال یک SSH Session از سه روز قبل در سرور ما فعال میباشد اما استفاده ای از آن نمیشود، با استفاده از این روش میتوانیم مشخص کنیم که اگر یک SSH Session بعد از برای مثال 2 دقیقه فعالیتی نداشت آنرا ببند.

تنظیم ورود بدون رمزعبور  (PasswordLess)

توجه کنید که در این روش ما از رمز عبور استفاده نمیکنیم. رمزهای عبور اصولا هرچقدرهم قوی باشند بازهم دربرابر حملات BruteForce نمی‌توانند مقاومت کنند. از این جهت در روش Passwordless Login ما از یک SSH Key جهت ورود به سیستم استفاده میکنیم و این فرآيند به مراتب نسبت به ورود از طریق رمز عبور سریع تر و ساده تر و امن تر میباشد.

غیرفعال سازی حساب‌های بدون پسورد

توجه کنید که ما در SSH میتوانیم کاربرانی را ایجاد کنیم که رمز عبور ندارند و از طریق آنها به راحتی وارد سیستم شویم. این موضوع امری بسیار خطرناک میباشد و باید توسط مدیران سیستم حساب های بدون پسورد غیرفعال سازی شوند.


امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

نظرات