# تغییر پورت سرور ویندوز

- پیوند: https://negarnovin.com/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%be%d9%88%d8%b1%d8%aa-%d8%b3%d8%b1%d9%88%d8%b1-%d9%88%db%8c%d9%86%d8%af%d9%88%d8%b2/
- منتشرشده: 2020-01-02T07:15:40+00:00
- نویسنده: نگارنوین

به روزرسانی شده در ۲۶ مهر ۱۴۰۵

# آموزش تغییر پورت سرور ویندوز؛ تغییر پورت RDP از ۳۳۸۹ به پورت دلخواه

اگر برای مدیریت **سرور ویندوز** از Remote Desktop یا RDP استفاده می کنید، پورت پیش
فرض این سرویس معمولاً **3389** است. در بسیاری از سرورها، مدیر سیستم برای کاهش اسکن
های خودکار اینترنتی یا هماهنگی با سیاست های شبکه، پورت RDP را به یک پورت دیگر تغییر
می دهد.

در این آموزش یاد می گیرید چگونه **پورت RDP سرور ویندوز** را تغییر دهید، پورت جدید
را در Windows Firewall باز کنید، سرویس Remote Desktop را بررسی کنید و قبل از بستن
اتصال فعلی مطمئن شوید که پورت جدید به درستی کار می کند.

[**سرور مجازی ترافیک نامحدود**](https://negarnovin.com/unlimited-traffic-virtual-server/)

> **هشدار مهم:** قبل از تغییر پورت RDP، اتصال فعلی Remote Desktop را نبندید. ابتدا
> پورت جدید را تنظیم و تست کنید و فقط بعد از اطمینان از دسترسی، Session فعلی را 
> ببندید.

---

## پورت پیش فرض Remote Desktop در ویندوز چیست؟

سرویس Remote Desktop Protocol یا **RDP** در Windows Server به صورت پیش فرض از پورت
TCP **3389** استفاده می کند.

بنابراین وقتی در Remote Desktop Connection فقط IP سرور را وارد می کنید، ویندوز معمولاً
به شکل زیر متصل می شود:

    ```language-text
    SERVER-IP:3389
    ```

اگر پورت RDP را به مثلاً `45221` تغییر دهید، برای اتصال باید شماره پورت را نیز مشخص
کنید:

    ```language-text
    SERVER-IP:45221
    ```

یا در پنجره Remote Desktop Connection:

    ```language-text
    45221
    ```

را بعد از IP سرور قرار دهید.

---

# چرا پورت RDP سرور ویندوز را تغییر دهیم؟

تغییر پورت RDP به تنهایی یک راهکار امنیتی کامل نیست، اما می تواند حجم زیادی از اسکن
های ساده و خودکار روی پورت استاندارد ۳۳۸۹ را کاهش دهد.

دلایل رایج تغییر پورت عبارت اند از:

 * کاهش اسکن های خودکار روی پورت ۳۳۸۹
 * کاهش لاگین های ناموفق و تلاش های خودکار
 * استفاده از پورت اختصاصی در زیرساخت سازمان
 * جلوگیری از تداخل با سیاست های شبکه
 * هماهنگی با Firewall یا Port Forwarding
 * مدیریت چند سرور پشت یک IP یا NAT
 * استانداردسازی پورت های زیرساخت

با این حال، **تغییر پورت جایگزین امنیت واقعی RDP نیست**.

برای امنیت بهتر باید از مواردی مانند رمز عبور قوی، NLA، Firewall، محدود کردن IPهای
مجاز، MFA در زیرساخت های مناسب و به روزرسانی Windows Server نیز استفاده کنید.

---

# قبل از تغییر پورت سرور ویندوز چه چیزهایی لازم است؟

قبل از شروع، موارد زیر را آماده کنید:

 * دسترسی Administrator به Windows Server
 * دسترسی فعلی از طریق RDP
 * شماره پورت جدید
 * دسترسی به Windows Firewall
 * امکان اجرای PowerShell یا Command Prompt با Administrator
 * امکان تست پورت جدید از سیستم دیگری

اگر سرور شما از طریق NAT، Firewall سخت افزاری، Security Group یا فایروال دیتاسنتر
به اینترنت متصل است، باید Rule مربوط به پورت جدید را در آن لایه نیز بررسی کنید.

---

# انتخاب پورت مناسب برای RDP

می توانید پورت RDP را تغییر دهید، اما بهتر است قبل از انتخاب شماره، بررسی کنید پورت
موردنظر توسط سرویس دیگری استفاده نشده باشد.

برای مثال:

    ```language-text
    45221
    ```

یا:

    ```language-text
    50122
    ```

می تواند نمونه ای از پورت های غیرپیش فرض باشد.

از انتخاب پورت های معروف سرویس های دیگر خودداری کنید.

همچنین بهتر است پورت انتخابی در محدوده ای باشد که با سرویس های موجود روی سرور تداخل
نداشته باشد.

---

# روش اول؛ تغییر پورت RDP از Registry

یکی از روش های اصلی تغییر پورت Remote Desktop، تغییر مقدار `PortNumber` در Windows
Registry است.

[⌊تغییر پورت سرور ویندوز⌉⌊تغییر پورت سرور ویندوز⌉[

تغییر پورت سرور ویندوز

## مرحله اول: باز کردن Registry Editor

کلیدهای زیر را فشار دهید:

    ```language-text
    Win + R
    ```

سپس بنویسید:

    ```language-text
    regedit
    ```

و Enter بزنید.

اگر User Account Control نمایش داده شد، با حساب Administrator تأیید کنید.

---

## مرحله دوم: رفتن به مسیر Remote Desktop

در Registry Editor به مسیر زیر بروید:

    ```language-text
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
    ```

مسیر را می توانید مستقیماً در نوار بالای Registry Editor وارد کنید.

---

## مرحله سوم: پیدا کردن PortNumber

در سمت راست پنجره، مقدار زیر را پیدا کنید:

    ```language-text
    PortNumber
    ```

روی آن دوبار کلیک کنید.

در پنجره بازشده، مقدار پورت را تغییر دهید.

مثلاً:

    ```language-text
    45221
    ```

نکته مهم این است که مقدار `PortNumber` معمولاً به صورت **Decimal** قابل مشاهده و
تنظیم است.

بنابراین گزینه:

    ```language-text
    Decimal
    ```

را انتخاب کنید و سپس پورت موردنظر را وارد کنید.

مثلاً:

    ```language-text
    45221
    ```

در نهایت روی OK کلیک کنید.

---

# روش دوم؛ تغییر پورت RDP با PowerShell

اگر ترجیح می دهید تغییرات را از طریق Terminal انجام دهید، می توانید PowerShell را
با دسترسی Administrator اجرا کنید.

برای تغییر پورت RDP به `45221`:

    ```language-powershell
    Set-ItemProperty `
    -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
    -Name "PortNumber" `
    -Value 45221
    ```

برای بررسی مقدار فعلی:

    ```language-powershell
    Get-ItemProperty `
    -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
    -Name "PortNumber"
    ```

خروجی باید مقدار پورت جدید را نشان دهد.

---

# تغییر پورت RDP با Command Prompt

اگر از CMD استفاده می کنید، می توانید از `reg add` نیز استفاده کنید.

مثلاً:

    ```language-cmd
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 45221 /f
    ```

این دستور مقدار `PortNumber` را به `45221` تغییر می دهد.

برای اطمینان از تغییر مقدار:

    ```language-cmd
    reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
    ```

---

# مرحله مهم؛ باز کردن پورت جدید در Windows Firewall

تغییر Registry به تنهایی کافی نیست.

اگر Windows Firewall پورت جدید را اجازه ندهد، ممکن است بعد از تغییر پورت دیگر نتوانید
از طریق RDP به سرور متصل شوید.

فرض کنیم پورت جدید:

    ```language-text
    45221
    ```

است.

PowerShell را با Administrator باز کنید و دستور زیر را اجرا کنید:

    ```language-powershell
    New-NetFirewallRule `
    -DisplayName "RDP Custom Port 45221" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 45221 `
    -Action Allow
    ```

اکنون Windows Firewall اجازه دریافت اتصال TCP روی این پورت را خواهد داشت.

---

# آیا باید UDP را هم باز کنیم؟

بسته به نسخه Windows و نحوه استفاده از Remote Desktop، RDP می تواند از TCP و UDP
استفاده کند.

اگر زیرساخت شما به UDP برای RDP نیاز دارد، Rule مربوط به UDP را نیز می توانید ایجاد
کنید:

    ```language-powershell
    New-NetFirewallRule `
    -DisplayName "RDP Custom Port 45221 UDP" `
    -Direction Inbound `
    -Protocol UDP `
    -LocalPort 45221 `
    -Action Allow
    ```

اما اگر هدف شما فقط راه اندازی اتصال پایه RDP است، ابتدا TCP را بررسی کنید.

---

# روش ساده تر برای باز کردن پورت با Windows Firewall

[سرور ترافیک نامحدود](https://negarnovin.com/unlimited-traffic-virtual-server/)

می توانید از دستور `netsh` نیز استفاده کنید:

    ```language-cmd
    netsh advfirewall firewall add rule name="RDP Custom Port 45221" dir=in action=allow protocol=TCP localport=45221
    ```

برای حذف همین Rule در آینده:

    ```language-cmd
    netsh advfirewall firewall delete rule name="RDP Custom Port 45221"
    ```

---

# آیا لازم است سرویس Remote Desktop را Restart کنیم؟

بعد از تغییر PortNumber، برای اعمال تغییرات در بسیاری از سناریوها باید سرویس Remote
Desktop یا سیستم را Restart کنید.

قبل از Restart کردن، **حتماً Rule فایروال را ایجاد کنید**.

برای بررسی سرویس:

    ```language-powershell
    Get-Service TermService
    ```

در صورت نیاز می توانید سرویس را Restart کنید:

    ```language-powershell
    Restart-Service TermService
    ```

اما در سرور Production توصیه می شود قبل از Restart سرویس، شرایط Session فعلی و تأثیر
آن روی کاربران دیگر را بررسی کنید.

اگر نمی خواهید ریسک قطع اتصال داشته باشید، می توانید بعد از اعمال تنظیمات، در زمان
مناسب سرور را Restart کنید.

---

# بررسی اینکه RDP روی پورت جدید Listen می کند

بعد از اعمال تنظیمات، یکی از مهم ترین مراحل این است که بررسی کنید Windows واقعاً
روی پورت جدید در حال Listen است.

برای مثال:

    ```language-cmd
    netstat -ano | findstr :45221
    ```

اگر RDP روی این پورت Listen کند، خروجی مشابه زیر خواهید دید:

    ```language-text
    TCP 0.0.0.0:45221 0.0.0.0:0 LISTENING
    ```

ممکن است آدرس IPv6 نیز نمایش داده شود.

---

# بررسی پورت RDP با PowerShell

روش دیگر استفاده از PowerShell است:

    ```language-powershell
    Get-NetTCPConnection -LocalPort 45221 -State Listen
    ```

اگر خروجی دریافت شد، یعنی سیستم روی این پورت در وضعیت Listen قرار دارد.

---

# تست پورت RDP از یک کامپیوتر دیگر

بهترین روش این است که پورت جدید را **از خارج از خود سرور** تست کنید.

روی کامپیوتر دیگری که به سرور دسترسی شبکه ای دارد، PowerShell را باز کنید و بزنید:

    ```language-powershell
    Test-NetConnection SERVER-IP -Port 45221
    ```

مثلاً:

    ```language-powershell
    Test-NetConnection 203.0.113.10 -Port 45221
    ```

اگر نتیجه شامل موارد زیر باشد:

    ```language-text
    TcpTestSucceeded : True
    ```

یعنی اتصال TCP به پورت موردنظر برقرار شده است.

اگر:

    ```language-text
    TcpTestSucceeded : False
    ```

بود، باید Firewall، NAT، مسیر شبکه، پورت و سرویس RDP را بررسی کنید.

---

# اتصال به RDP با پورت جدید

بعد از اطمینان از فعال بودن پورت، برنامه Remote Desktop Connection را باز کنید.

در قسمت Computer بنویسید:

    ```language-text
    SERVER-IP:45221
    ```

مثلاً:

    ```language-text
    203.0.113.10:45221
    ```

سپس Connect را بزنید.

اگر از نام دامنه استفاده می کنید:

    ```language-text
    server.example.com:45221
    ```

نیز امکان پذیر است.

---

# اتصال به RDP با دستور mstsc

می توانید مستقیماً از CMD یا Run استفاده کنید:

    ```language-cmd
    mstsc /v:203.0.113.10:45221
    ```

یا:

    ```language-cmd
    mstsc /v:server.example.com:45221
    ```

با این روش Remote Desktop Connection مستقیماً با پورت مشخص شده باز می شود.

---

# اگر بعد از تغییر پورت دیگر به سرور وصل نشدیم چه کنیم؟

این یکی از مهم ترین مشکلات هنگام تغییر پورت RDP است.

اگر بعد از تغییر پورت اتصال قطع شد، این موارد را بررسی کنید:

### ۱. پورت Registry

مطمئن شوید مقدار زیر درست تغییر کرده است:

    ```language-text
    PortNumber
    ```

مسیر:

    ```language-text
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
    ```

---

### ۲. Windows Firewall

بررسی کنید Rule مربوط به پورت جدید وجود داشته باشد:

    ```language-powershell
    Get-NetFirewallRule | Where-Object DisplayName -Like "*45221*"
    ```

---

### ۳. سرویس Remote Desktop

بررسی کنید:

    ```language-powershell
    Get-Service TermService
    ```

و وضعیت سرویس `Running` باشد.

---

### ۴. Listen شدن پورت

بررسی کنید:

    ```language-cmd
    netstat -ano | findstr :45221
    ```

اگر هیچ خروجی وجود ندارد، مشکل احتمالاً قبل از Firewall و در تنظیمات سرویس یا اعمال
نشدن تغییرات است.

---

### ۵. Firewall خارجی

اگر سرور در دیتاسنتر یا Cloud قرار دارد، ممکن است علاوه بر Windows Firewall، یک 
Firewall خارجی نیز وجود داشته باشد.

برای مثال:

 * Firewall دیتاسنتر
 * Cloud Firewall
 * Security Group
 * NAT
 * Router
 * Firewall سخت افزاری

در چنین شرایطی باید پورت جدید در آن لایه نیز مجاز شود.

---

# اگر RDP روی پورت جدید Listen نمی کند

اگر:

    ```language-cmd
    netstat -ano | findstr :45221
    ```

هیچ نتیجه ای ندارد، موارد زیر را بررسی کنید:

 1. مقدار `PortNumber`
 2. سرویس `TermService`
 3. Restart شدن سرویس یا سرور
 4. تنظیمات Remote Desktop
 5. Event Viewer
 6. خطاهای مربوط به Terminal Services

برای مشاهده وضعیت Remote Desktop می توانید سرویس را بررسی کنید:

    ```language-powershell
    Get-Service TermService
    ```

---

# چگونه پورت فعلی RDP را پیدا کنیم؟

اگر نمی دانید RDP روی چه پورتی تنظیم شده، می توانید Registry را بررسی کنید:

    ```language-powershell
    Get-ItemProperty `
    -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
    -Name PortNumber
    ```

همچنین می توانید پورت های Listen شده را مشاهده کنید:

    ```language-cmd
    netstat -ano | findstr LISTENING
    ```

---

# تغییر پورت RDP در سرور پشت NAT

اگر Windows Server پشت NAT قرار دارد، فقط تغییر پورت داخل ویندوز کافی نیست.

فرض کنید:

    ```language-text
    Public IP: 203.0.113.10
    Private IP: 192.168.1.100
    RDP Port: 45221
    ```

باید روی Router یا Firewall نیز Port Forwarding مناسب تعریف شود:

    ```language-text
    203.0.113.10:45221
     ↓
    192.168.1.100:45221
    ```

اگر فقط Registry ویندوز را تغییر دهید ولی Port Forwarding همچنان روی ۳۳۸۹ باشد، 
اتصال خارجی برقرار نخواهد شد.

---

# آیا تغییر پورت ۳۳۸۹ امنیت سرور را افزایش می دهد؟

**تا حدی، اما نه به عنوان یک راهکار امنیتی اصلی.**

تغییر پورت می تواند تعداد زیادی از اسکن های ساده ای را که فقط پورت ۳۳۸۹ را بررسی
می کنند کاهش دهد؛ اما یک مهاجم می تواند پورت های دیگر را نیز اسکن کند.

بنابراین نباید تصور کرد:

    ```language-text
    تغییر 3389 → امنیت کامل RDP
    ```

امنیت واقعی باید چندلایه باشد.

---

# راهکارهای مهم برای امن کردن RDP

برای یک Windows Server اینترنتی، بهتر است علاوه بر تغییر پورت موارد زیر را نیز در
نظر بگیرید:

## استفاده از رمز عبور قوی

رمز عبور حساب Administrator و سایر حساب های دارای دسترسی RDP باید قوی و غیرقابل 
حدس باشد.

---

## فعال بودن Network Level Authentication

NLA یکی از قابلیت های مهم امنیتی Remote Desktop است.

در تنظیمات Remote Desktop، گزینه مربوط به Network Level Authentication را در صورت
سازگاری محیط خود فعال نگه دارید.

---

## محدود کردن IPهای مجاز

اگر فقط از چند IP مشخص برای مدیریت سرور استفاده می کنید، بهترین کار این است که دسترسی
RDP را فقط برای همان IPها مجاز کنید.

این روش از تغییر ساده پورت بسیار مؤثرتر است.

---

## استفاده از VPN یا شبکه مدیریتی

در زیرساخت های حساس بهتر است RDP مستقیماً روی اینترنت عمومی در دسترس نباشد و دسترسی
مدیریتی از طریق VPN یا شبکه مدیریتی کنترل شده انجام شود.

---

## جلوگیری از Brute Force

تعداد Loginهای ناموفق را در Event Viewer بررسی کنید و در صورت نیاز از راهکارهای 
مناسب برای محدود کردن تلاش های مکرر استفاده کنید.

---

# تغییر پورت RDP در Windows Server ۲۰۱۹، ۲۰۲۲ و ۲۰۲۵

منطق تغییر پورت RDP در نسخه های مختلف Windows Server مشابه است.

مراحل کلی:

    ```language-text
    Registry
    ↓
    PortNumber
    ↓
    Windows Firewall
    ↓
    Restart / Apply
    ↓
    netstat
    ↓
    Test-NetConnection
    ↓
    RDP Connection
    ```

بنابراین در نسخه های مختلف Windows Server، اصل کار تغییر نمی کند؛ اما تنظیمات امنیتی
و سیاست های سازمانی ممکن است متفاوت باشند.

---

# اشتباهات رایج هنگام تغییر پورت RDP

### اشتباه اول: تغییر Registry بدون باز کردن Firewall

این کار باعث می شود سرویس روی پورت جدید تنظیم شود ولی Firewall اتصال را مسدود کند.

### اشتباه دوم: بستن Session قبل از تست

اگر اتصال جدید کار نکند، ممکن است دسترسی خود را به سرور از دست بدهید.

### اشتباه سوم: تغییر پورت بدون تغییر NAT

در سرورهای پشت Router یا Firewall، Port Forwarding نیز باید اصلاح شود.

### اشتباه چهارم: تصور امنیت کامل بعد از تغییر پورت

تغییر شماره پورت فقط یکی از اقدامات کاهش سطح حمله است.

### اشتباه پنجم: استفاده از پورت سرویس دیگری

ممکن است پورت انتخاب شده قبلاً توسط برنامه دیگری استفاده شده باشد.

---

# چک لیست نهایی تغییر پورت سرور ویندوز

قبل از خروج از Session فعلی این موارد را بررسی کنید:

 *  مقدار `PortNumber` تغییر کرده است.
 *  پورت جدید در Windows Firewall مجاز شده است.
 *  سرویس `TermService` فعال است.
 *  Windows روی پورت جدید Listen می کند.
 *  پورت از یک سیستم دیگر تست شده است.
 *  در صورت وجود NAT، Port Forwarding تغییر کرده است.
 *  Firewall خارجی پورت جدید را اجازه می دهد.
 *  اتصال RDP با `IP:PORT` تست شده است.
 *  بعد از موفقیت اتصال جدید، Session قبلی بسته شده است.

---

# تبریک میگوئییم این اموزش هم تمام شد!

برای **تغییر پورت سرور ویندوز** و Remote Desktop، مهم ترین بخش کار تغییر مقدار `
PortNumber` در Registry نیست؛ بلکه باید کل مسیر اتصال را در نظر بگیرید.

ابتدا پورت RDP را تغییر دهید، سپس Rule مربوط به Windows Firewall را ایجاد کنید. 
بعد با `netstat` یا PowerShell بررسی کنید که سرویس روی پورت جدید Listen می کند و
در نهایت از یک سیستم دیگر با `Test-NetConnection` پورت را تست کنید.

بهتر است تا زمانی که اتصال جدید را آزمایش نکرده اید، Remote Desktop فعلی را نبندید.

در نهایت نیز به خاطر داشته باشید که تغییر پورت ۳۳۸۹ یک **اقدام کاهش دهنده ریسک**
است، نه یک راهکار امنیتی کامل. برای سرورهای اینترنتی، ترکیب Firewall، NLA، رمز عبور
قوی، محدودسازی IP، به روزرسانی سیستم عامل و در صورت امکان VPN یا شبکه مدیریتی، امنیت
بسیار بهتری ایجاد می کند.

### 📌 خلاصه

آموزش تغییر پورت سرور ویندوز, امروز با یک آموزش کاربردی دیگر با شما همراه هستیم 
آموزش تغییر پورت سرور ویندوز ، یکی از مهم ترین مسائلی که امنیت یک ویندوز

## 🔗 مطالب مرتبط

 * [آموزش تغییر پورت remote desktop ویندوز ۲۰۱۲](https://negarnovin.com/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%be%d9%88%d8%b1%d8%aa-remote-desktop-%d9%88%db%8c%d9%86%d8%af%d9%88%d8%b2-2012/)
 * [تغییر پورت SSH](https://negarnovin.com/%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%be%d9%88%d8%b1%d8%aa-ssh/)
 * [آموزش تغییر زبان در ویندوز ۲۰۱۹](https://negarnovin.com/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d8%b2%d8%a8%d8%a7%d9%86-%d8%af%d8%b1-%d9%88%db%8c%d9%86%d8%af%d9%88%d8%b2-2019/)
