مراحل ذیل را دنبال کنید تا سطح امنیت استفاده از پروتکل ssh سرور خود را بالاتر ببرید؛ دقت داشته باشید که مراحل ذیل باگی را از پروتکل مذکور رفع نمی کند و فقط از روش تغییر حالت های پیش فرض در سرویس ssh به بالا بردن سطح امنیتی آن کمک می کند.
1- استفاده از Username و Password پیچیده:
یکی از اولین مواردی که باید به آن توجه داشته باشید این است که اگر شما یک سرور SSH راه اندازی کرده اید و در فضای اینترنت قرار داده اید، احتمالا سرور شما تحت حمله توسط هکر هایی قرار خواهد گرفت که تلاش میکنند Username / Password شما را به دست بیاورند. بطور معمول هکر ها پورت 22 (پورت پیش فرض SSH) را Scan میکنند تا ماشین هایی که SSH را Run کرده اند پیدا کنند، سپس تحت حملات Brute-Force تلاش میکنند تا اطلاعات ورود شما را به دست آورند. با داشتن پسورد های قوی و پیچیده هر حمله ای ثبت خواهد شد و پیش از به ثمر رسیدن جلوی ان گرفته خواهد شد.
امیدواریم که در حال حاضر نیز شما از پسورد های پیچیده استفاده می کنید اما اگر اینچنین نیست، پسوردی بامشخصات زیر انتخاب نمایید:
حداقل شامل 8 کاراکتر
شامل حروف بزرگ و کوچک
شامل اعداد
شامل حداقل یک کاراکتر مانند ^,%,#,@ و …
2- غیر فعال کردن دسترسی ROOT
تنظیمات SSH Server در مسیر /etc/ssh/sshd_config دخیره شده است. برای غیر فعال کردن دسترسی root باید کد زیر را در فایل sshd_config وارد نمایید:
PermitRootLogin no
سپس از طریق ترمینال سرویس SSH را Restart نمایید:
service ssh restart
در مواقعی که نیاز به دسترسی root دارید میتوانید از دستور su استفاده کنید.
دستور su (Switch User , Super User , Substitute User) به کاربر اجازه میدهد دسترسی Root را با وارد کردن پسورد Root به دست بیاورد. جهت مطالعه بیشتر در این خصوص به این لینک مراجعه نمایید.
3- محدود کردن دسترسی کاربران
دسترسی به SSH میتواند تنها محدود به کاربرانی باشد که نیاز به استفاده از SSH دارند. اگر شما اکانت های کاربری زیادی روی سیستم خود دارید میتوانید دسترسی به SSH را به کاربرانی اعطا کنید که واقعا با SSH سر و کار دارند. برای این کار بایستی یک خط با دستور AllowUsers در فایل sshd_config اضافه کنید. کد باید به این شکل باشد که بعد از دستور AllowUsers یک فاصله قرار بگیرد و نام User مورد نظر اضافه شود و User های دیگر نیز با یک فاصله از هم جدا می شوند. برای مثال:
AllowUsers iranserver namaki
سپس سرویس SSH را Restart نمایید.
4- استفاده از یک پورت غیر پیشفرض (پورت به غیراز 22)
همانطور که پیشتر گفتیم بصورت پیشفرض SSH برای ارتباطات ورودی از پورت 22 استفاده میکند. هکر ها میتوانند به راحتی با اسکن کردن پورت 22 متوجه شوند SSH روی ماشین شما در حال اجرا است یا خیر! یک روش اثر بخش برای جلوگیری از حملات هکر ها این است که پورت SSH را از پورت پیش فرض 22 به به یک پورت غیر استاندارد تغییر دهید. هر پورت بدون استفاده ای میتواند مورد استفاده قرار بگیرد. خیلی از افراد از پورت 2222 برای این کار استفاده میکنند (زیرا به راحتی به ذهن سپرده میشود) مانند پورت 8080 که اغلب به عنوان جایگزین پورت 80 (HTTP) استفاده میشود. اما در این مورد پورت 2222 بهترین انتخاب نیست! به این دلیل که هکر ها بعد از پورت 22 پورت 2222 را اسکن می کنند. بهتر است یک پورت تصادفی بالای 1024 که برای سرویس خاصی استفاده نمیشود انتخاب کنید. برای اعمال این تغییر یک خط مانند الگوی زیر را به فایل sshd_config اضافه کنید.
# What ports, IPs and protocols we listen for
Port 3583 #your port
سپس سرویس SSH را Restart نمایید.
نکته: فراموش نکنید که بعد از این تغییر باید حتما Incoming پورت مورد نظر را در Firewall مورد استفاده در شبکه خود باز کنید.
5- محدود کردن دسترسی به SSH از طریق Firewall
اگر شما فقط نیاز دارید که توسط یک IP خاص به SSH متصل شوید و نیاز به دسترسی به SSH از طریق IP دیگری را ندارید میتوانید نحوه اتصال به SSH را محدود به IP خاصی نمایید. برای انجام این کار می توانید یک Rule در Router ایجاد نمایید و یا از طریق دستور iptables دسترسی به پورت 22 را فقط به IP مورد نظر محدود نمایید. برای مثال کد زیر دسترسی به آی پی 10.20.30.40 را روی پورت 22 باز کرده و دسترسی به مابقی IP ها را به پورت 22 می بندد:
Iptables –A INPUT –p tcp –s 172.16.86.118 --deport 22 –j ACCEPT
اگر شما امکان محدود کردن دسترسی ها فقط از طریق یک IP را ندارید نگران نباشید. Iptables همچنان میتواند جلوی حملات Brute-Force را از طریق ثبت تعداد Login ها و Block کردن IP هایی که تلاش های متعدد برای ارتباط با پورت 22 را دارند بگیرد. برای مثال:
Iptables –A INPUT –p tcp –dport 22 –m state –state NEW –m recent –set –name ssh –rsource
دستور بالا بررسی میکند اگر آن IP برای 4 یا بیش از 4 بار تلاش نا موفق برای ارتباط با پورت 22 را داشته است در Blacklist قرار می دهد و در غیر اینصورت ارتباط برقرار می شود.
نکته 1: توجه داشته باشید که در صورتی که Rule برای Accept کردنIP های خاصی را ایجاد کرده باشید شامل این محدودیت ها نمی شود.
نکته 2: در صورتی که برای ارتباط با SSH از یک پورت غیر استاندارد استفاده میکنید به جای 22 در مثال های بالا از شماره پورت تعریف شده استفاده نمایید.
6- محدود کردن دسترسی به SSH از طریق کانفیگ SSH
اگر شما فقط نیاز دارید که توسط یک IP خاص به SSH متصل شوید و نیاز به دسترسی به SSH از طریق IP دیگری را ندارید و نمی خواهید خودتان را درگیر iptable کنید میتوانید نحوه اتصال به SSH را از طریق فایل کانفیگ ssh محدود به IP خاصی نمایید، کافیست وارد فایل کانفیگ در مسیر etc/ssh/sshd_config شوید و دستورات زیر را به آن اضافه نمایید.
AllowUsers your user@your ip
PermitRootLogin without-password