
چگونه امنیت SSH را افزایش دهیم؟
مقدمه
SSH یا Secure Shell یکی از پرکاربردترین پروتکلهای ارتباطی در دنیای مدیریت سرورها است.SSH (Secure Shell) پروتکل استانداردی برای ارتباط بین دو کامپیوتر در شبکهی اینترنت است و با توجه به اینکه تمامی اطلاعات در این مسیر بهصورت رمزنگاری شده ردوبدل میشود، این پروتکل بهعنوان یکی از ایمنترین سیستمهای ارتباطی در شبکهی اینترنت محسوب میشود. این پروتکل به مدیران سیستم و توسعهدهندگان اجازه میدهد بهصورت امن و رمزنگاریشده به سرورهای خود متصل شوند و دستورات را از راه دور اجرا کنند. در این مقاله به این می پردازیم که چگونه امنیت SSH را افزایش دهیم با ما همراه باشید.
تولدِ پروتکل SSH
پروتکل SSH در سال ۱۹۹۵ توسط «تاتو یلونن»، مهندس کامپیوتر اهلِ فنلاند طراحی شد. جالب است بدانید که این پروتکل هم مثلِ بیشتر تکنولوژیهای دنیا، بهدلیل یک نیاز ایجاد شده است. ماجرا از این قرار بود که یلونن وقتی در حال استفاده از تکنولوژی Telnet بود، متوجه شد که اطلاعاتش در حال سرقت شدن است و البته کاری هم از دستش بر نمیآمد؛ بهجز اینکه تکنولوژی SSH را ابداع کند!
اگر بپرسید که مهمترین ویژگی پروتکل SSH چیست، حتماً باید به مکانیسمِ احراز هویت آن اشاره کنیم. این مکانیسم از جفت کلید عمومی و خصوصی برای امنیت ارتباط استفاده میکند. کلید عمومی همان کلیدی است که میتواند به اشتراک گذاشته شود، اما کلید خصوصی همیشه باید محرمانه باقی بماند. بهعبارتِ دیگر، هنگام برقراری اتصال SSH، کلید عمومی با یک کلید خصوصی مطابقت داده میشود تا امنیت اطلاعاتِ در حال تبادل، تضمین شود؛ همان چیزی که یلونن در Telnet پیدا نکرد.
کاربرد SSH با توجه به امکانات زیادی که دارد، متفاوت است. مثلاً با استفاده از امکانِ تونلزنی SSH میتوانید ترافیک یک شبکهی غیررمزنگاری شده را ازطریق یک تونلِ امن SSH منتقل کنید. یا مثلاً با امکانِ پورت فورواردینگ میتوانید محدودیتهای احتمالی اینترنت را از بین ببرید؛ نمونهاش هم محدودیت اعمال شده از طرفِ وبسایتهای خرید و فروش ارزهای دیجیتال مثلِ بایننس یا حتی ابزارهای هوش مصنوعی مثل ChatGPT است.
پروتکل SSH چطور کار میکند؟
اگر تا به حال وارد سرور لینوکسی شده باشید، احتمالاً با دستور زیر کار کردهاید:
ssh user@server-ip
این اتصال برخلاف پروتکلهای قدیمی مثل Telnet، بهطور کامل رمزنگاری شده است. یعنی حتی اگر شخصی بین راه ترافیک شبکه را شنود کند، نمیتواند به محتوای دستورات یا رمز عبور شما دسترسی پیدا کند.
با این حال، اگر پیکربندی SSH بهدرستی انجام نشود، میتواند به نقطه ضعف بزرگی در سرور تبدیل شود و دروازهای برای نفوذ هکرها باشد. در ادامه به روشهای عملی و دقیق برای افزایش امنیت SSH میپردازیم.
۱. تغییر پورت پیشفرض
بهصورت پیشفرض، سرویس SSH روی پورت ۲۲ گوش میدهد. این موضوع باعث میشود اسکنرها و باتها بهراحتی این پورت را هدف قرار دهند.
تغییر پورت میتواند اولین قدم ساده برای کاهش حملات خودکار باشد.
sudo nano /etc/ssh/sshd_config
Port 2222
sudo systemctl restart sshd
نکته: بهتر است پورتی انتخاب کنید که کمتر شناخته شده باشد (مثلاً بین ۲۰۰۰ تا ۶۵۵۳۵).
۲. غیرفعال کردن ورود با رمز عبور
ورود با رمز عبور همیشه ریسک بالایی دارد، چون حملات Brute Force میتوانند رمز شما را حدس بزنند.
بهترین کار این است که ورود با رمز عبور را کاملاً غیرفعال کنید.
PasswordAuthentication no
۳. استفاده از کلیدهای SSH
امنترین روش ورود به سرور استفاده از SSH Key است. در این روش یک جفت کلید (خصوصی و عمومی) ایجاد میشود.
کلید عمومی روی سرور قرار میگیرد و فقط با کلید خصوصی شما قابل دسترسی است.
ساخت کلید:
ssh-keygen -t rsa -b 4096
انتقال کلید به سرور:
ssh-copy-id user@your-server-ip
۴. محدود کردن دسترسی به کاربران خاص
اگر چندین کاربر روی سرور دارید، میتوانید مشخص کنید چه کسانی اجازه ورود از طریق SSH داشته باشند.
AllowUsers your_username
۵. نصب و پیکربندی Fail2Ban
ابزاری قدرتمند برای جلوگیری از حملات brute force. این نرمافزار لاگهای SSH را بررسی میکند و اگر کاربری چند بار رمز اشتباه وارد کند، آدرس IP او را بلاک میکند.
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
۶. استفاده از فایروال
با استفاده از فایروال میتوانید دسترسی به پورت SSH را محدود کنید. مثلاً فقط آیپیهای مشخصشده بتوانند به سرور متصل شوند.
sudo ufw allow 2222/tcp
sudo ufw enable
۷. محدود کردن دفعات ورود و زمان تأخیر
در فایل کانفیگ SSH میتوانید تعداد دفعات مجاز برای ورود و زمان مهلت وارد کردن رمز را تنظیم کنید:
MaxAuthTries 3
LoginGraceTime 30
۸. استفاده از Passphrase برای کلیدهای SSH
حتی اگر کسی کلید خصوصی شما را بدزدد، با داشتن یک Passphrase امنیتی، همچنان نمیتواند وارد سرور شود.
هنگام ساخت کلید SSH بهتر است یک Passphrase قوی انتخاب کنید.
۹. بررسی مرتب لاگها
مدیران حرفهای همیشه لاگهای سیستم را بررسی میکنند. لاگهای SSH در لینوکس معمولاً در مسیر زیر ذخیره میشوند:
sudo cat /var/log/auth.log | grep sshd
۱۰. روشهای پیشرفتهتر
علاوه بر موارد بالا، میتوانید از تکنیکهای زیر هم استفاده کنید:
- ورود دو مرحلهای (2FA) برای SSH
- محدود کردن دسترسی بر اساس IP Address Whitelisting
- استفاده از ابزارهایی مثل Port Knocking برای باز کردن پورت SSH فقط هنگام نیاز
جمعبندی
چگونه امنیت SSH را افزایش دهیم؟ SSH قلب مدیریت سرورهای لینوکسی است. اگر امنیت آن رعایت نشود، میتواند تبدیل به بزرگترین ضعف شما شود. با تغییر پورت، استفاده از کلیدهای SSH، نصب Fail2Ban و فعال کردن فایروال، میتوانید تا حد زیادی جلوی نفوذ را بگیرید.
اگر میخواهید مدیریت سرور و امنیت آن برایتان سادهتر شود، حتماً پلنهای مجیک وی ام را بررسی کنید.
با استفاده از سرویسهای ما میتوانید سرور خود را با چند کلیک امن و بهینه کنید.
اگر می خواین با روش های دیگه هک و حمله های سروری آشنا بشید مقاله بعدی ما در مورد حمله های DDoS رو از دست ندین