بالا بردن امنیت SSH

موضوعاتی که در این مقاله به آنها پرداخته خواهد شد، به شرح زیر است:

 

بالا بردن امنیت SSH

سرورهایی که از پروتکل SSH برای دسترسی استفاده می‌ کنند، عموما هدف مناسبی برای حمله های (brute-force) محسوب می شوند. قبل از بالا بردن امنیت SSH هکرها به طور مداوم و خلاقانه در حال توسعه ابزارها و ربات‌ ها برای خودکار سازی این حملات هستند که خطر و ریسک نفوذ را افزایش میدهد.

در آموزش بالا بردن امنیت SSH ما جلوگیری از حمله های brute-force را برسی میکنیم و باید این آموزش را مد نظر گرفته و اجرا کنید تا خطر حمله Brute Force بر روی RHEL و Debian و لینوکس سنتوس را کاهش دهید.

غیرفعال کردن SSH Password authentication  و فعال کردن SSH-Key  Authentication

روش پیش فرض احراز هویت در SSH نام کاربری و کلمه عبور است اما در ابتدای مقاله ذکر شد که احراز هویت با کلمه عبور باعث به خطر افتادن امنیت سرور های SSH در برابر حملات Brute-Force می شود. در آموزش بالا بردن امنیت لینوکس به منظور ارتقای سطح امنیت، استفاده از احراز هویت مبتنی بر کلید SSH (SSH Key-Based Authentication) به شدت توصیه می‌شود.

در این روش، از زوج کلیدهای عمومی-خصوصی (Public-Private) استفاده میگردد و کلید خصوصی روی کامپیوتر کاربر باقی میماند و کلید عمومی روی سرور کپی میشود. طی انجام عملیات احراز هویت با SSH key، سرور بررسی میکند که آیا کامپیوتر کاربر کلید خصوصی را در اختیار دارد یا خیر در صورت موفقیت آمیز بودن این بررسی، یک سشن (Shell Session) ایجاد میشود و یا فرمانی که از راه دور به سرور ارسال شده، با موفقیت اجرا میگردد.

در ادامه آموزش بالا بردن امنیت SSH، آموزش جامعی در مورد نحوه پیکربندی احراز هویت مبتنی بر SSH-Key ارائه می‌شود.

نکته مهم برای موثر کردن آموزش بالا بردن امنیت SSH

لازم به ذکر است که حتی پس از راه اندازی احراز هویت مبتنی بر SSH key، تا زمانی که احراز هویت با رمز عبور همچنان فعال باشد، امنیت سرور های SSH شما در برابر حملات Brute-Force آسیب پذیر باقی خواهد ماند. بنابراین در آموزش بالا بردن امنیت SSH ضروری است که احراز هویت با رمز عبور را غیرفعال کنید.

بالا بردن امنیت SSH

با غیرفعال کردن احراز هویت با رمز عبور

برای این منظور فایل configuration را ویرایش میکنیم.

sudo vim /etc/ssh/sshd_config

مقدار پارامتر PasswordAuthentication به no تنظیم میکنیم.

PasswordAuthentication no

تغیرات فایل را ذخیره کرده و SSH مجدد بار گذاری کنید.

sudo systemctl reload ssh

جلوگیری از حمله های brute-force

نصب Fail2ban برای پیش گیری از نفوذ در برابر حمله های brute-force

Fail2ban یک ابزار متن باز پیشگیری از نفوذ در برابر حملات Brute-Force است که با زبان پایتون توسعه یافته است.

این ابزار با نظارت مستمر بر لاگ‌ های سرور جهت شناسایی تلاشهای ورود غیرمجاز، از سیستم محافظت می‌ کند. Fail2ban به‌ طور خاص، آدرس‌ IP های که بیش از حد در احراز هویت با رمز عبور شکست می‌ خورند را شناسایی و مسدود می‌ کند.

پس از وقوع تعداد از پیش تعیین شده‌ ای از تلاشهای ناموفق ورود (معمولا ۳ بار)، Fail2ban به صورت خودکار دسترسی کاربر را به سرور  مسدود کرده و آن را برای مدت زمان مشخصی در یک “فهرست سیاه” قرار میدهد. با این رویکرد، Fail2ban به شکل قابل توجهی میزان تلاشهای ناموفق احراز هویت با رمز عبور اشتباه را کاهش میدهد.

Fail2ban ابزاری قدرتمند و کارآمد برای پیشگیری از حملات Brute-Force است که با نصب Fail2ban و پیکربندی صحیح آن، می‌توانید به طور قابل توجهی امنیت سرور های SSH خود را افزایش دهید.

در آمورش بالا بردن امنیت SSH

تلاش ها برای ورود و احراز هویت به SSH را محدود کنیم.

یکی دیگر از راهکارها برای امن نگه داشتن سرور و جلوگیری از حمله های brute-force در آموزش بالا بردن امنیت SSH ، محدود کردن تلاش ها برای ورود است. به طور پیش فرض این مقدار بر روی 3 تنظیم شده، ممکن است به هر دلیلی این مقدار تغییر کنه به همین دلیل این تلاش ها رو عدد 3 مجدد تنظیم میکنیم.

به طور مثال، مقدار پارامتر MaxAuthTries به عدد 3 تغییر میدهیم.

sudo vim /etc/ssh/sshd_config
MaxAuthTries = 3

تغییرات را ذخیره و سرویس SSH را دوباره بارگذاری میکنیم.

sudo systemctl reload ssh

پ.ن
آیا نیاز به خرید سرور مجازی ipv6 دارید؟ لطفاً بر روی لینک اون کلیک کنید! اگر نیاز به سرور ایران با آی پی ورژن 6 دارید کلیک کنید.

جلوگیری از حمله های brute-force

با محدود کردن دسترسی به SSH با اجرا کردن TCP Wrappers .

بسته های TCP (ابزارهای کنترل دسترسی TCP) یک کتابخانه هستند که یک لیست کنترل دسترسی (ACL) مبتنی بر میزبان را ارائه میدهند. این ACL دسترسی به سرویسهای TCP را توسط کاربران از راه دور بر اساس آدرس IP آنها محدود می کند.

به عبارت دیگر، بسته های TCP ابزاری برای اعمال کنترل دسترسی بر روی سرویسهای تحت پروتکل TCP هستند. در آموزش بالا بردن امنیت SSH امکان محدود کردن دسترسی بر اساس IP آدرس مشترک های از راه دور به سرویس‌ را فراهم میسازند.

 بسته های TCP از دو فایل پیکر بندی به ترتیب زیر استفاده میکنند:

    /etc/hosts.allow: این فایل حاوی مقدارهای است که مشخص می کند کدام کاربر مجاز به دسترسی به سرویسهای خاص هستند.
    /etc/hosts.deny: این فایل حاوی مقدارهای است که مشخص می کند دسترسی به سرویسهای خاص برای کدام کاربر ممنوع است.

به‌ طور پیش فرض، روی این فایلها نام گذاری شده و تمام آی پی ها می‌ توانند از طریق بسته‌ های TCP به سرویس‌ ها، دسترسی پیدا کنند. برای اعمال کنترل دسترسی، مقدارهای مربوط به مجاز کردن دسترسی به سرویس‌ های خاص در فایل /etc/hosts.allow قرار داده میشوند. این داده ها  نسبت به داده های موجود در فایل /etc/hosts.deny اولویت دارند.

 بهترین شیوه امنیت SSH در حمله های Brute-Force که توصیه می‌ شود این است که دسترسی تمام ارتباط های ورودی مسدود شود. بنابراین، برای اعمال این محدودیت، باید فایل /etc/hosts.deny را ویرایش کنید.

sudo vim /etc/hosts.deny

خط دستوری زیر را اضافه کنید.

ALL: ALL

تغییرات را ذخیره و از فایل خارج شوید.

سپس به فایل /etc/hosts.allow دسترسی پیدا کنید.

sudo vim /etc/hosts.allow

در آموزش بالا بردن امنیت SSH پیکر بندی این فایل برای ای پی  و دامنه ها ای است که میتوانند به سرور  SSH متصل شوند.در این مثال قصد داریم به 2 عدد از  آی پی ها را برای ارتباط به سرور اجازه دسترسی بدیم ( بطور مثال ای پی های 168.52.227.89 و 167.82.288.22 ) و مابقی را مسدود کند.

 

sshd: 173.82.227.89 173.82.255.55
sshd: ALL: DENY

تغییرات را ذخیره و از فایل configuration خارج شوید.

برای امتحان کردن سعی کنید از ای پی های که دسترسی ندارند استفاده کنید و باید خطای زیر را بگیرید.

$ ssh root@173.82.235.7 kex_exchange_identification: read: Connection reset by peer Connection reset by 173.82.235.7 port 22 lost connection

مطالب مرتبط:

سوالات متداول

ایا با انجام این آموزش امنیت 100 درصدی سرور لینوکس ما تامین میشود؟

امنیت هیچ گاه 100 درصدی نیست به دلیل اینکه هکرها دائما در حال توسعه برنامه های خود برای نفوذ به سیستم هستند.

ایا پشتوار سرور در زمینه امنیت سرورهای ما ارائه خدماتی دارد؟

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