یکی از سیاستهای امنیتی که بیشتر سازمانها به کار میبرند تغییر پورت پیش فرض ssh از ۲۲ به پورتهایی ناشناس مانند ۲۲۲۲ یا … است. این روش بر اساس سیاست Security through obscurity و یا (امنیت از طریق ابهام) کار میکند.
سیاست Security through obscurity بر افزایش امنیت با استفاده از پنهان کردن الگوریتمها و مخفی کردن طراحیها فعالیت میکند.
این یک سیاست امنیتی استاندارد نیست و متخصصان امنیت این سیاست را در مقابل سیاست principle of simplicity و یا (اصل سادگی) قرار میدهند و در نتیجه هیچ گاه استفاده از این روش را پیشنهاد نمیدهند به عنوان مثال موسسه ملی استاندارد و فناوری ایالات متحده (NIST) میگوید:
System security should not depend on the secrecy of the implementation or its components.
امنیت سیستم نباید به پنهان کاری در نحوه پیادهسازی و یا اجزای آن وابسته باشد.
تغییر پورت پیش فرض ssh از ۲۲ به هر پورت دیگر را میتوان به انتقال درب منزل به پشت ساختمان با هدف جلوگیری از ورود دزد تشبیه کرد.
با توجه به آنچه در بالا گفته شد تغییر پورت پیش فرض نه تنها امنیت را افزایش نمیدهد بلکه به دلایلی که در زیر میآید باعث کاهش امنیت سیستم شما خواهد شد.
در لینوکس کاربرانی که مجوز روت ندارند نمیتوانند پورتهای با شماره کمتر از ۱۰۲۴ را باز کنند، چنانچه برنامهای (آپاچی، دیاچسیپی سرور، میلسرور) بخواهد این پورتها را باز کند یا باید مجوز کاربر روت داشته باشد و یا در ابتدا با مجوز کاربر روت پورت را باز کند سپس به مجوز کاربر غیر روت (مانند www-data یا nobody) باز گردد. در این حالت برنامههایی که مجوز روت نداشته باشند نمیتوانند پورتهایی مانند ssh را باز کنند و اطلاعات روی این پورتها را شنود کنند.
وقتی مدیر سیستم پورت پیش فرض ssh را به چیزی بالاتر از ۱۰۲۴ تغییر میدهد هر برنامه و اسکریپتی (بدون نیاز به مجوز روت) میتواند روی پورت ssh بنشیند و با شبیهسازی پروتکل ssh پسوردهای کاربران رو بدزدد.
بنابراین پیشنهاد میشود پورت پیش فرض ssh را تغییر ندهید و با روشهای دیگر امنیت را افزایش دهید.
نکته: اگر با وجود دلایل بالا باز هم میخواهید پورت پیش فرض ssh را تغییر دهید. با روشهای زیر میتوانید بخشی از مشکلات امنیتی را رفع کنید.
۱- به جای احراز هویت با پسورد از کلید عمومی استفاده کنید. اگر از کلید عمومی استفاده کنید برنامههایی که مجوز روت نداشته باشند با شنود روی پورت ssh تنها میتوانند کلید عمومی سرور شما را به دست باورند (کلید عمومی پابلیک و عمومی است!)
۲- به جای تغییر پورت پورت را مخفی کنید (به جای اینکه درب را به پشت ساختمان منتقل کنید درب را مخفی کنید!). port-knocking یک روش افزایش امنیت است که بر پایه سیاست Security through obscurity طراحی شده است اما طراحی هوشمندانهتری داشته است! در این روش کاربر باید سعی کند با ترتیب خاصی پورتها را باز کند (با ترتیب خاصی درب ساختمان را بزند.) تا پورت پیش فرض ssh یعنی پورت ۲۲ باز شود یا بتوان به این پورت متصل شد.
به عنوان مثال کاربر ابتدا سعی میکند به پورت ۱۰۴۶ متصل شود سرور درخواست کاربر را دریافت میکند و آیپی کاربر را ثبت میکند اگر کاربر مجددا بخواهد به پورت ۲۲ متصل شود با توجه به اینکه قبلا درخواست بار کردن پورت ۱۰۴۶ را داده میتواند به ssh متصل شود. در غیر این صورت درخواست کاربر رد میشود.