در این قسمت امنیت در لینوکس می خواهیم در مورد امنیت در OpenSSH صحبت کنیم و 10 روش و تکنیک هایی که می توان SSH را در حملات مختلف امن کرد مثل : جلوی حمله Brute Force Attack را با استفاده از نرم افزار هایی که با SSH کار می کنند و یا دسترسی ها را به سیستم کنترل کرد.
OpenSSH از پروتکل SSH استفاده می کند که برای ورود به سیستم های مختلف از راه دور (مثل در اینترنت) استفاده می شود. یک پروتکل دیگری که قبل از پروتکل SSH وجود داشت که به اسم Telnet می شناسند. Telnet هم مثل SSH برای دسترسی از راه دور به سیستم است ولی در عوض Command ها و یا Password هایی که برای ورود به سیستم وارد می شود و یا هر دستورات دیگری را رمز نمی کند و به راحتی می توان Sniff کرده و Password ها را به دست آورد، ولی در SSH با استفاده از الگوریتم های مثل DES,3DES,AES,RSA و … کل ارتباط را رمز کرده و یک تونل امن بین شما و سیستم برقرار می کند.
با توجه به این که SSH رمزنگاری انجام می دهد ولی باز هم با ترفند های مختلف سیستم را می توانند از کار بندازند (مثل باگی که چند وقت پیش برای OpenSSH پیدا شد به نام HeartBleed)
10 تکنیک و روش هایی که می توان OpenSSH و پروتکل SSH را در سیستم های GNU/Linux امن کرد.
1.فقط از پروتکل 2 SSH استفاده کنید:
در Version یک (SSH-1) می توان حمله های (Man-In-The-Middle) انجام داد و البته حفره های امنیتی زیادی دارد و برای همین بهترین کار استفاده از نسخه 2 پروتکل SSH است. مراحل زیر را انجام دهید:
-باز کردن فایل زیر و edit آن:(مسیر این فایل ها در لینوکس CentOS می باشد، شاید در توضیع های دیگر لینوکس مسیر فرق کند ولی اسم فایل یکسان است)
#vi /etc/ssh/sshd_config
– با پیدا کردن Protocol آن را به 2 تغییر دهید و در آخر OpenSSH را restart کنید:
2.محدودیت گذاشتن برای دسترسی یوزر های مختلف:
پیش فرض وقتی OpenSSH نصب می کنید همه User هایی که در سیستم تعریف شده اند می توانند با User و Password وارد سیستم شوند. مثل User هایی که برای FTP و یا Email می سازید دسترسی SSH نیازی ندارند ولی اگر پیش فرض را تغییر ندهید این User ها هم می تونند با Password خود وارد سیستم شوند و با برنامه نویسی در محیط های لینوکسی مثل زبان های Perl.Python می توانند به راحتی دسترسی Root سیستم را بدست بگیرند برای جلوگیری از این حملات و پیشگیری آن می توانید با تغییراتی در فایل های زیر به راحتی دسترسی ها را تعریف کرد.
AllowUsers root admin DenyUsers x y z
3.تنظیم idle برای محدودیت زمانی متصل به سرور
با استفاده از idle زمانی برای محدود کردن user ها برای استفاده از سرور است که به صورت ثانیه می توان آن را تنظیم کرد.
ClientAliveInterval 300
4.غیر فعال کردن فایل rhosts.
یوزر ها نباید به دو فایل rhosts./~ و shosts./~ دسترسی داشته باشند.
IgnoreRhosts yes
5.جلوگیری از حمله Brute-Force در SSH:
در بالا در مورد حمله Brute-Force صحبت شد. در اینجا می خواهیم چند تا از برنامه ها یی که با استفاه از Log های SSH می توانند جلوی Brute-Force بگیرنند معرفی کنیم (همه برنامه ها تقریبا مثل هم کار می کنند و فقط در موارد جزئی با هم اختلاف دارند و در اینجا فقط معرفی می شوند ولی در مورد چند تا از آنها دانشنامه ای تهیه شده است که با کلیک بر روی آنها می توانید از مطالب آنها استفاده کنید)
– DenyHosts
– Fail2ban
– sshguard
– BlockHosts
5 روش دیگر برای امن کردن SSH را می توانید در دانشنامه “امنیت SSH” مطالعه کنید.