تغییر پورت در سرورمجازی

برای تغییر پورت در سرور مجازی، در ویندوز مقدار PortNumber را در رجیستری کلید RDP-Tcp عوض می‌کنید و در لینوکس دستور Port را در فایل /etc/ssh/sshd_config تنظیم می‌کنید. اما خودِ این تغییر نصف کار است؛ تا وقتی پورت جدید را در فایروال باز نکرده‌اید و — روی توزیع‌های خانواده‌ی RHEL — برچسب SELinux آن را اضافه نکرده‌اید، سرویس بالا می‌آید ولی شما دیگر به سرور وصل نمی‌شوید.

چرا پورت پیش‌فرض را عوض می‌کنند

پورت پیش‌فرض ریموت دسکتاپ 3389 و پورت پیش‌فرض SSH 22 است. هر آی‌پی عمومی روی اینترنت شبانه‌روز توسط اسکنرهای خودکار روی همین دو پورت کوبیده می‌شود. جابه‌جا کردن سرویس به یک پورت غیراستاندارد حجم این تلاش‌های کور را به‌شدت کم می‌کند و لاگ‌های Security ویندوز یا /var/log/auth.log لینوکس را قابل خواندن نگه می‌دارد. در کنار آن، اگر مسیر شبکه‌ی شما تا سرور روی پورت پیش‌فرض اختلال دارد، پورت دیگر گاهی مشکل اتصال را دور می‌زند. البته چنین تغییری فقط روی سرویسی شدنی است که دسترسی کامل مدیریتی به شما بدهد؛ پلن‌های سرور ابری ایران با همین سطح دسترسی ارائه می‌شوند و اختیار پورتِ سرویس‌ها دست خودتان است.

تغییر پورت ریموت دسکتاپ در ویندوز

اول پورت جدید را در فایروال باز کنید، بعد رجیستری را دست بزنید — نه برعکس. در PowerShell با دسترسی Administrator:

New-NetFirewallRule -DisplayName "RDP-Custom" -Direction Inbound -Protocol TCP -LocalPort 3390 -Action Allow

سپس regedit را اجرا کنید و به این مسیر بروید:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

دقت کنید که نام کلید Terminal Server با یک فاصله بین دو کلمه است؛ نوشتن آن به‌صورت سرهم در بسیاری از راهنماهای قدیمی اشتباه تایپی است و شما را به کلید موجود نمی‌رساند. روی مقدار PortNumber دوبار کلیک کنید، در پنجره‌ی باز شده گزینه‌ی Decimal را انتخاب و عدد پورت را وارد کنید. پورت را از محدوده‌ی 1025 تا 65535 انتخاب کنید و مطمئن شوید سرویس دیگری روی آن گوش نمی‌دهد؛ عددهای بالاتر معمولاً کمتر با سرویس‌های شناخته‌شده تداخل می‌کنند. عدد 3390 در مثال بالا فقط یک نمونه است و باید همان عددی باشد که در فایروال باز کرده‌اید.

برای اعمال شدن، سرور را ری‌استارت کنید. راه‌اندازی مجدد سرویس با Restart-Service TermService -Force هم کار می‌کند ولی نشست فعلی شما را قطع می‌کند، پس فقط وقتی سراغش بروید که راه بازگشت دیگری دارید. بعد از بالا آمدن سرور، در کلاینت ریموت دسکتاپ آدرس را به شکل IP:PORT وارد کنید — مثلاً 192.168.1.5:3390. همین قالب برای اتصال به پنل و سرویس‌های هاست ویندوز ایران صدق نمی‌کند؛ آنجا مدیریت از طریق کنترل‌پنل انجام می‌شود و پورتی برای تغییر ندارید.

اگر باز کردن پورت در فایروال ویندوز برایتان تازگی دارد، ویدئوی زیر همین مرحله را گام‌به‌گام نشان می‌دهد.

https://blog.onlineserver.ir/wp-content/uploads/2021/01/PORT.mp4

توجه داشته باشید که آی‌پی نشان‌داده‌شده در ویدئو صرفاً نمونه است؛ شما باید آی‌پی سرور مجازی خودتان را جایگزین کنید.

تغییر پورت SSH در لینوکس

فایل /etc/ssh/sshd_config را باز کنید و خط Port را تنظیم کنید. ترفند مهم این است که در مرحله‌ی اول هر دو پورت را کنار هم بنویسید تا اگر پورت جدید کار نکرد، راه قدیمی باز بماند:

Port 22
Port 2222

پیش از هر ری‌استارتی صحت فایل را با sudo sshd -t بررسی کنید. یک نکته‌ی مهم و نسبتاً جدید: در اوبونتو نسخه‌ی ۲۲.۱۰ به بعد و از جمله ۲۴.۰۴، سرویس SSH به‌صورت پیش‌فرض با socket activation بالا می‌آید و دستور Port داخل sshd_config نادیده گرفته می‌شود. در این حالت باید سوکت را ویرایش کنید:

sudo systemctl edit ssh.socket

و در فایل override این دو خط را بگذارید — خط خالیِ اول لیست پورت‌های قبلی را پاک می‌کند:

[Socket]
ListenStream=
ListenStream=2222

سپس sudo systemctl daemon-reload و sudo systemctl restart ssh.socket. برای فهمیدن اینکه سیستم شما در کدام حالت است، خروجی systemctl is-enabled ssh.socket را ببینید. روی توزیع‌های خانواده‌ی RHEL سرویس هنوز کلاسیک است و sudo systemctl restart sshd کافی است. اگر ترجیح می‌دهید سراغ این‌گونه پیکربندی‌ها نروید، روی سرور مدیریت‌شده ایران نصب و پیکربندی و عیب‌یابی بر عهده‌ی تیم فنی آنلاین سرور است.

سه چیزی که همه فراموش می‌کنند

  • قانون فایروال. در لینوکس با firewalld: sudo firewall-cmd --permanent --add-port=2222/tcp و بعد sudo firewall-cmd --reload؛ با ufw: sudo ufw allow 2222/tcp. اگر جلوی سرور فایروال شبکه یا security group هم دارید، همان‌جا هم باید باز شود.
  • برچسب SELinux. روی AlmaLinux، Rocky و RHEL، حتی با فایروال باز، SELinux اجازه‌ی bind شدن sshd به پورت غیراستاندارد را نمی‌دهد. با sudo semanage port -a -t ssh_port_t -p tcp 2222 برچسب را اضافه کنید؛ اگر دستور semanage نصب نیست، بسته‌ی policycoreutils-python-utils را نصب کنید.
  • کلاینت خودتان. پورت جدید باید در دستور یا در پروفایل ذخیره‌شده‌ی شما هم اعمال شود: ssh -p 2222 user@IP. اگر اسکریپت پشتیبان‌گیری، ابزار انتقال فایل یا مانیتورینگی روی پورت قدیمی تنظیم شده، همه‌ی آن‌ها هم باید به‌روز شوند.

قبل از بستن نشست فعلی، تست کنید

این تنها قاعده‌ای است که نباید زیر پا بگذارید: نشست فعلی خود را باز نگه دارید و از یک پنجره یا ترمینال دوم با پورت جدید وصل شوید. اگر موفق شدید، تازه آن‌وقت نشست اول را ببندید و در صورت تمایل پورت قدیمی را حذف کنید. برای اطمینان از اینکه سرویس واقعاً روی پورت جدید گوش می‌دهد، خروجی sudo ss -tlnp | grep ssh را ببینید. اگر با وجود همه‌ی این‌ها قفل شدید، راه بازگشت، کنسول یا VNC در پنل مدیریت سرور است؛ و اگر به آن هم دسترسی ندارید، از پشتیبانی فنی کمک بگیرید.

صادق باشیم: پورت غیراستاندارد امنیت نیست

تغییر پورت نویز لاگ را کم می‌کند و بس. هر اسکنر جدی با یک nmap -sV ساده سرویس شما را روی هر پورتی پیدا می‌کند. چیزی که واقعاً حمله‌ی brute force را بی‌اثر می‌کند این‌هاست: احراز هویت مبتنی بر کلید و سپس PasswordAuthentication no، محدود کردن ورود مستقیم root با PermitRootLogin prohibit-password، نصب fail2ban برای بلاک خودکار آی‌پی‌های مهاجم، و در ویندوز فعال نگه داشتن NLA به‌همراه سیاست قفل حساب پس از چند تلاش ناموفق. بهترین کار این است که RDP و SSH را اصلاً روی اینترنت باز نگذارید و دسترسی را به آی‌پی‌های مشخص یا یک تونل VPN محدود کنید. تغییر پورت را به‌عنوان یک لایه‌ی جانبی ببینید، نه به‌عنوان راه‌حل امنیتی.

ارسال نظر