Secure Shell یا همان SSH راهی بسیار متداول برای مدیریت، نظارت و انجام دستورات روی سرور لینوکس برای مدیران IT و یا کاربران لینوکس است، بسیاری از برنامه های مدیریتی لینوکس هم از این پروتکل برای ارتباط با لینوکس از راه دور استفاده می کنند.
SSH فقط برای دیدن کنسول لینوکس از راه دور نیست، بواسطه آن می توان انتقال فایل انجام داد، تانلی بین لینوکس با کامپیوتر خود برقرار کرد و یا می توانید از راه دور فایل سیستم لینوکس خود را mount کنید. امکاناتی که از طرفی بسیار جذاب و کارا و از طرفی در صورت نبود و یا ضعف امنیت، بسیار خطرناک هستند. SSH به نوبه خود پروتکل امنی است اما بواسطه تنضیمات، نحوه پیاده سازی و یا نسخه مورد استفاده ممکن است باگ های امنیتی نیز داشته باشد.
OpenSSH یک پیاده سازی رایگاه و کدباز از SSH است که بسیاری از لینوکس ها از این برنامه برای برقرار ارتباط SSH استفاده می کنند، در ادامه ۵ نکته مهم برای امن نگهداشتن این برنامه را بررسی خواهیم کرد.
** ایزو های استریسک همچون Elastix, AsteriskNow, Freepbx, IcrediblePBX نیز در درون خود از OpenSSH برای پیاده سازی SSH استفاده می کنند و به طور پیش فرض این نسخه پیاده سازی شده می تواند دارای حفره های امنیتی باشد و رعاین نکات امنیتی برای شما که از این ایزو ها برای پیاده سازی سیستم تلفنی ویپ خود استفاده می کنید، الزامی است.
نکته اول: پورت پیش فرض SSH را تغییر دهید.
برای این منظور کافی است شماره پورت را در فایل /etc/ssh/sshd_config به پورت دیگری تغییر دهید، برای ویرایش فایل می توانید از برنامه Winscp استفاده نمایید و یا بر روی کنسول لینوکس از ویرایش گر vi بهره ببرید، در مرحله بعد کافی است در putty یا winscp برای اتصال پورت جدید را تعیین کنید.
/etc/ssh/sshd_config
#port=22
port=7070
نکته دوم: دسترسی به SSH با کاربر root را مسدود کنید.
از هر کاربری به غیر از root برای کار با SSH استفاده کنید و بعد از اتصال با دستور su کاربر خود را به root تغییر دهید، برای بستن دسترسی root از طریق SSH می بایست فایل زیر را ویرایش و دستور زیر را قرا دهید.
/etc/ssh/sshd_config
PermitRootLogin no
نکته سوم: احراز هویت بواسطه رمز را غیر فعال کنید.
به جای رمز از کلید های public/private برای احراز هویت استفاده کنید. (برای این منظرو این کلید ها باید بر روی سرور ایجاد شوند و نسخه کلاینت به برنامه سمت کاربر داده شود، کمی پر دردسر است اما برای جاهای با امنیت بسیار بالا می تواند بسیار مفید باشد). برای فعال سازی فایل زیر را ویرایش و دستور زیر را وارد نمایید.
/etc/ssh/sshd_config
PasswordAuthentication no
نکته چهارم: دسترسی به سرور را برای کاربران خاص باز و برخی کاربران محدود کنید.
تعیین نمایید که چه کاربری بتواند با SSH دسترسی داشته باشد و مجوز های دسترسی چه باشد، همچنین تعیین کنید چه کاربرانی دسترسی نداشته باشند. این امر برای گروه های کاربری لینوکس نیز صادق است.
-Allow specific User:
/etc/ssh/sshd_config
AllowUsers haamed xyz
-Deny Specific User:
/etc/ssh/sshd_config
DenyUsers haamed xyz
-Allow Specific Groups:
/etc/ssh/sshd_config
AllowGroups voipiran xyz
-Deny Specific Groups:
/etc/ssh/sshd_config
DenyGroups voipiran xyz
نکته پنجم: دسترسی SSH را برای یک درگاه شبکه خاص ببندید.
به طور خاص مناسب سرور هایی است که دارای چندین کارت شبکه هستند، می توانید دسترسی SSH را فقط برای برخی درگاه ها و از طریق محدوده IP Address آنها باز کنید.
/etc/ssh/sshd_config
ListenAddress 192.168.10.100
ListenAddress 127.0.0.1