سرویس SSH چیست ؟
پروتکل SSH ( به عنوان Secure Shell نیز شناخته میشود ) یک متد برای احراز هویت به سرورها میباشد. این پروتکل قابلیتهای زیادی را برای امنیت بیشتر به هنگام اتصال به سرورها فراهم میسازد .
پروتکل SSH یک جایگزین خوب و ایمن برای راه کار های لاگین به سرورهای لینوکسی است که در قدیم استفاده میشدند به طور مثال پروتکل Telnet و یا Rlogin و یا حتی پروتکل های انتقال فایل همانند FTP که با آمدن SSH میتوان بصورت ایمن فایل انتقال داد (SFTP)
موارد استفاده از پروتکل SSH به شرح زیر میباشد :
- فراهم سازی ارتباط ایمن برای کاربران و پروسه های اتوماتیک
- انتقال فایل ها
- اجرای کامند ها از راه دور
- مدیریت زیرساخت شبکه و قسمت های حیاتی
SSH چگونه کار میکند ؟
این پروتکل بصورت Client-server کار میکند، بدین صورت که ارتباط توسط کلاینت برقرار و کلایت به سرور متصل میگردد.
کلاینت SSH با استفاده از Server Public-key سرور را احراز هویت نموده و با استفاده از رمزنگاری متقارن و الگوریتم های Hashing از حریم خصوصی و تمامیت دادههایی که بین سرور و کلاینت منتقل میشوند اطمینان حاصل میکند. تصویر زیر بیانگر این موضوع میباشد .
ایمن کردن سرویس SSH
راهکار های ایمن تر کردن سرویس SSH به شرح زیر میباشد که آنها را بررسی میکنیم:
قبل از انجام هرگونه تنظیماتی از تنظیمات یا همان کانفیگ فعلی سرویس SSH بک آپ تهیه نمایید. با دستور زیر یک کپی از فایل تنظیمات SSH به نام backup.sshd_config میگیریم.
cp /etc/ssh/sshd_config /etc/ssh/backup.sshd_config
اکنون مراحل زیر را جهت شروع ایمن کردن سرویس SSH آغاز نمایید:
1- غیر فعال سازی لاگین از طریق یوزر root
فایل sshd_config را در مسیر /etc/ssh با یکی از ابزار های ویرایشگر متن مانند vi یا nano باز نمایید سپس PermitRootLogin را در آن بیابید. این ویژگی در ابتدا فعال و به صورت کامند است. تصویر زیر را بررسی بفرمایید.
سپس PermitRootLogin را از حالت کامنت خارج (حذف # ) و مقدار آن را به no تغییر دهید.
2- تنظیم Idle session
سشن های باز و Idle ( بلا استفاده ) میتوانند خطرناک باشند و خارج کردن افرادی که در session خود کاری انجام نمیدهند مفید است . برای این منظور دو مولفه ClientAliveInterval و ClientAliveCountMax در فایل sshd_config باید به درستی تنظیم شوند.
ClientAliveInterval مدت زمانی را تعریف میکند که طی این مدت یک session فعال است و بعد از آن بلا استفاده محسوب میشود. واحد آن نیز ثانیه است.
ClientAliveCountMax پارامتری است که تعداد دفعاتی که یک session به حالت بلااستفاده میرسد را میشمارد.
با تنظیم موارد زیر یک session بلااستفاده بعد از 10 دقیقه Logout میشود .
ClientAliveInterval 300
ClientAliveCountMax 2
3- Whitelist Users
در فایل sshd_config میتوان یوزرهایی که امکان اتصال به سرویس ssh را دارند، محدود کنیم. بنابراین تنها یوزرهایی که در این لیست هستند قادر به لاگین خواهند بود و سایر یوزرها از لاگین به سرور منع میشوند.
به طور مثال ما اکانتی با نام maj0rmil4d داریم که میخواهیم تنها این یوزر قادر به لاگین باشد :
AllowUsers maj0rmil4d
با انجام کانفیگ بالا ، تنها یوزر maj0rmil4d قادر خواهد بود تا به سرور لاگین کند.
4- تغییر پورت
یکی دیگر از راه های مرسوم برای در امان ماندن از حملات روی بستر SSH و
تغییر پورت SSH است ، پورت پیشفرض این سرویس 22 است برای تغییر پورت در فایل sshd_config عبارت #Port 22 را از حالت کامنت خارج نموده و عدد 22 را به یک عدد چهار یا پنج رقمی مانند 25212 تغییر دهید.
توجه داشته باشید که پورت 25212 باید در فایروال نیز باز باشد.
5- استفاده از کلید های SSH
به طور پیشفرض کاربران با استفاده از یوزرنیم و پسورد به سرویس ssh متصل میشوند که این مورد میتواند باعث BruteForce شود . ( یعنی مهاجم لیستی از یوزرنیمها و پسوردها را استفاده میکند تا بلکه به یوزرنیم و پسورد صحیح دستیابی کند )
برای استفاده از کلید ssh ابتدا باید یک کلید برای سیستم فعلی خود با دستور ssh-keygen ایجاد کنید .
حال کلید ساخته شده را با دستور زیر به سرور مقصد انتقال میدهیم.
ssh-copy-id [email protected]
حال میتوانیم بدون استفاده از username و password به سرور مقصد به طریق ایمنتری متصل شویم.
پس از تست ارتباط با سرور با کلید ssh نیاز است ارتباط با سرور را از طریق username و password غیر فعال کنیم.
بدین منظور عبارت
PasswordAuthentication yes
را به
PasswordAuthentication no
را در sshd_config تغییر میدهیم.
6- نصب fail2ban
fail2ban یک ابزار امنیتی است که قابلتیهای زیادی جهت افزایش ایمنی سرویسها مانند SSH فراهم میآورد. بعنوان مثال برای ایمن کردن سرویس SSH با scan فایلهای لاگ ssh آیپیهایی که عملیاتهای غیرمعقولی روی سرویس ssh داشتهاند را بصورت موقت بلاک مینماید.
ابتدا این ابزار را با دستور زیر نصب کنید:
apt-get install fail2ban
حال از فایل کانفیگ اصلی بک آپ تهیه کرده و فایل را ویرایش نمایید:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
موارد زیر را در فایل /etc/fail2ban/jail.conf اضافه میکنیم.
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
پس از انجام تمام مراحل بالا سرویس ssh را ریستارت میکنیم.
service ssh restart
یا
service sshd restart