مدیریت یک سرور لینوکسی بدون شک نیازمند دسترسی پایدار، سریع و در عین حال امن است. پروتکل Secure Shell یا همان SSH به عنوان پل ارتباطی اصلی میان مدیران سیستم و زیرساختهای ابری شناخته میشود.
با این حال، از آنجا که پورت پیشفرض این پروتکل یعنی پورت ۲۲ به صورت مداوم در تیررس رباتهای مخرب، اسکنرهای خودکار و حملات بروتفورس (Brute Force) قرار دارد، رها کردن آن با تنظیمات پیشفرض میتواند پایداری کل سرور را به خطر بیندازد.
اگر از یک سرور مجازی قدرتمند استفاده میکنید، امنسازی محیط خط فرمان یکی از نخستین و حیاتیترین اقداماتی است که باید پیش از راهاندازی سرویسهای تجاری روی زیرساخت خود انجام دهید.
در این مقاله آموزشی تخصصی از وبلاگ سابین سرور، قصد داریم به صورت کاملاً ساختاریافته، عمیق و گامبهگام، تمام روشها، پارامترها و ترفندهای حیاتی برای سختکردن (Hardening) سرویس SSH را بررسی کنیم تا با خیال راحت از امنیت اطلاعات و پایداری منابع سختافزاری خود اطمینان حاصل کنید.
هدف از این راهنما ارائه یک مرجع کامل است تا بتوانید به دور از خطاهای رایج، لایههای حفاظتی چندگانهای را بر روی سرور خود پیادهسازی کنید.
پروتکل SSH چیست و چرا ایمنسازی آن حیاتی است؟
پروتکل SSH یک پروتکل شبکه کریپتوگرافیک است که امکان برقراری ارتباط ایمن از طریق یک شبکه ناامن را فراهم میکند. این ابزار به مدیران سرور اجازه میدهد فرامین سیستمی، مدیریت فایلها و پیکربندیهای حیاتی را از راه دور اجرا نمایند.
با این حال، به دلیل محبوبیت بالای این پروتکل، هکرها با استفاده از ابزارهای خودکار، آیپیهای مختلف را برای یافتن پورتهای باز SSH اسکن میکنند.
عدم اعمال لایههای امنیتی مناسب روی سرویس SSH میتواند منجر به دسترسی غیرمجاز به فایلهای سیستمی، نصب بدافزارها، استخراج رمزارز غیرمجاز (Cryptojacking) و در نهایت از دست رفتن کامل کنترل سرور شود.
به همین دلیل است که شرکتهای ارائهدهنده خدمات هاستینگ و زیرساخت، همواره بر لزوم پیکربندی دقیق فایلهای کانفیگ تأکید دارند.
هنگامی که شما کنترل کامل یک سرور لینوکسی را در دست دارید، ایمنسازی درگاه ورود به آن به منزله بستن تمام دریچههای نفوذ احتمالی به کل زیرساخت کسبوکار شماست.
پیشنیازها و ساختار فایل کانفیگ SSH
پیش از آغاز مراحل تغییرات امنیتی، باید بدانید که فایل اصلی تنظیمات سرویسدهنده SSH در مسیر زیر قرار دارد:
/etc/ssh/sshd_config
برای ویرایش این فایل میتوانید از ویرایشگرهای متنی محبوب لینوکس مانند Nano یا Vi استفاده کنید. پس از هر تغییر در این فایل، لازم است سرویس SSH را یکبار ریستارت کنید تا تنظیمات جدید اعمال شوند. در توزیعهای مختلف لینوکس میتوانید از دستور زیر استفاده کنید:
sudo systemctl restart sshd
همچنین توصیه میشود پیش از اعمال تغییرات عمده، حتماً یک نسخه پشتیبان از فایل کانفیگ اصلی تهیه کنید تا در صورت بروز خطای احتمالی، امکان بازگشت سریع وجود داشته باشد.
روشهای کلیدی و گامبهگام برای امن کردن SSH در لینوکس
برای ایجاد یک حصار امنیتی نفوذناپذیر پیرامون دسترسی خط فرمان سرور، لازم است پارامترهای زیر را به دقت در فایل تنظیمات بررسی و اصلاح کنید. هر کدام از این گامها به منظور مسدود کردن یک راه نفوذ مشخص طراحی شدهاند.
۱. اجبار به استفاده صرف از پروتکل نسخه ۲
پروتکل SSH نسخه ۱ (SSH-1) دارای آسیبپذیریهای امنیتی ساختاری و اثباتشدهای است که به مهاجمان اجازه میدهد ترافیک را شنود کنند. همیشه مطمئن شوید که سرور شما تنها از پروتکل نسخه ۲ استفاده میکند. برای این منظور بررسی کنید که پارامتر زیر در فایل کانفیگ فعال باشد:
Protocol 2
۲. محدودسازی دسترسی کاربران خاص (AllowUsers)
اگر تنها تعداد مشخصی از ادمینها یا توسعهدهندگان نیاز به دسترسی مستقیم به خط فرمان دارند، نیازی نیست اجازه ورود برای تمامی اکانتهای سیستمی صادر شود. شما میتوانید دسترسی را به شدت محدود کنید:
AllowUsers user1 user2
با این تنظیم، حتی اگر فردی رمز عبور اکانتهای دیگر را پیدا کند، به دلیل عدم دسترسی از طریق SSH موفق به ورود نخواهد شد. برای آشنایی با نحوه ساخت اکانتهای استاندارد، مطالعه آموزش ساخت یوزر در سرور مجازی به شما کمک شایانی خواهد کرد.
۳. تنظیم زمان انقضای نشستهای بیرونق (Idle Timeout)
اگر ادمینی به سرور متصل شود و پشت سیستم حضور نداشته باشد، باز ماندن پنجره ترمینال خطرات امنیتی جدی ایجاد میکند. برای جلوگیری از این مسئله، پارامترهای زیر را برای قطع خودکار نشستهای بدون فعالیت تنظیم کنید:
ClientAliveInterval 300
ClientAliveCountMax 0
این تنظیمات باعث میشود پس از گذشت ۳۰۰ ثانیه (۵ دقیقه) عدم فعالیت، اتصال SSH به صورت امن و خودکار خاتمه یابد و خطر دسترسی افراد متفرقه به ترمینال باز از بین برود.
۴. غیرفعال کردن فایلهای ریموت (.rhosts و HostbasedAuthentication)
روشهای قدیمی احراز هویت مبتنی بر هاست یا فایلهای rhosts آسیبپذیریهای تاریخی فراوانی دارند. برای مسدود کردن این راههای نفوذ، پارامترهای زیر را اعمال کنید:
IgnoreRhosts yes
HostbasedAuthentication no
این تغییرات تضمین میکند که سیستم به هیچ عنوان به اعتبار سنجیهای مبتنی بر شبکه محلی یا فایلهای پیکربندی قدیمی اعتماد نکند.
۵. مدیریت هوشمند دسترسی کاربر روت (PermitRootLogin)
ورود مستقیم به سرور با اکانت کاربری root یکی از اهداف اصلی هکرهاست. اگرچه غیرفعال کردن کامل این دسترسی (تنظیم روی no) امنیت را به شدت افزایش میدهد، اما در سرورهای هاستینگ اشتراکی ممکن است نیازمند مدیریت دقیقتر اکانتها باشد. پیشنهاد میشود در صورت امکان، با ایجاد یک کاربر معمولی با دسترسی sudo وارد شده و دسترسی مستقیم root را مسدود کنید:
PermitRootLogin no
۶. تغییر پورت پیشفرض و استفاده از فایروال
تغییر پورت پیشفرض SSH (پورت 22) اولین خط دفاعی در برابر باتنتهایی است که به صورت خودکار رنج آیپیهای اینترنت را اسکن میکنند. با انتقال سرویس به یک پورت سفارشی، حجم حملات خودکار بروتفورس تا حد زیادی کاهش مییابد. برای یادگیری گامبهگام این فرآیند، مقاله تخصصی آموزش تغییر پورت ssh را مطالعه کنید.
۷. استفاده از فایروال و محدودسازی IP (TCP Wrappers & IPTables)
محدود کردن دسترسی به پورت SSH بر اساس آدرسهای IP مجاز، یکی از حرفهایترین روشهای ایمنسازی است. اگر مدیریت سرور را از یک دفتر کار یا شبکه مشخص انجام میدهید، میتوانید دسترسی به سرویس را تنها به همان محدوده IP محدود کنید.
برای استفاده از TCP Wrappers، میتوانید فایل /etc/hosts.allow را ویرایش کرده و قوانین خود را وارد نمایید:
sshd : 192.168.1.100 172.16.20.10
همچنین با استفاده از فایروال قدرتمند Iptables میتوانید قوانین سختگیرانهتری برای پذیرش یا رد بستههای ورودی به پورت سفارشی SSH اعمال کنید:
iptables -A INPUT -p tcp -m state --state NEW --source 192.168.1.200 --dport 8908 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8908 -j DROP
برای ذخیره دائمی قوانین iptables در توزیعهای مختلف لینوکس، از کامند زیر استفاده کنید:
sudo iptables-save > /etc/iptables/rules.v4
جدول مقایسه روشهای مختلف ایمنسازی دسترسی SSH
| روش امن سازی | سطح تاثیرگذاری | پیچیدگی پیادهسازی | مزیت اصلی |
|---|---|---|---|
| تغییر پورت پیشفرض | متوسط | آسان | کاهش چشمگیر لاگهای حملات اسکنرهای خودکار |
| غیرفعال کردن ورود Root | بالا | آسان | جلوگیری از دسترسی مستقیم به سطح دسترسی کامل سیستم |
| محدودسازی IP | بسیار بالا | متوسط | مسدودسازی کامل ترافیک ناشناس و مشکوک |
| استفاده از کلید SSH (SSH Keys) | بسیار بالا | متوسط | حذف کامل آسیبپذیریهای حملات بروتفورس پسورد |
سوالات متداول پیرامون امنیت SSH
آیا تغییر پورت SSH برای امنیت سرور کافی است؟
خیر. تغییر پورت تنها حجم اسکنهای خودکار را کاهش میدهد. برای امنیت کامل باید احراز هویت با کلید (SSH Key)، غیرفعال کردن ورود روت و محدودسازی IP نیز پیادهسازی شوند.
اگر پسورد خود را گم کنیم یا دسترسی قطع شود چه کنیم؟
در صورت از دست رفتن دسترسی SSH، میتوانید از طریق کنسول مجازی (VNC یا IPMI) ارائهدهنده سرور خود به محیط سیستمعامل متصل شده و تنظیمات فایل کانفیگ را اصلاح کنید.
جمعبندی و نتیجهگیری نهایی
ایمنسازی سرویس SSH فراتر از یک تغییر ساده در چند فایل کانفیگ است؛ این کار سنگ بنای پایداری و امنیت زیرساخت وبسایت یا اپلیکیشن شماست.
اگر سروری برای میزبانی وبسایتهای سنگین یا فروشگاهی دارید، اعمال این تنظیمات امنیتی در کنار استفاده از زیرساختهای پایدار مانند خرید هاست باکیفیت و استاندارد، ریسک نفوذ و قطعی سرویس را به حداقل میرساند.
همواره به یاد داشته باشید که تعادل میان امنیت و دسترسیپذیری را رعایت کنید تا محدودیتهای اعمال شده اختلالی در روند مدیریت روزمره شما ایجاد نکنند. تیم پشتیبانی فنی سابین سرور آماده است تا در تمامی مراحل پیکربندی و ارتقای امنیت سرورهای شما راهنماییهای لازم را ارائه دهد.




