Windows Uzak Masaüstü Port Değiştirme Rehberi

03.11.2025 09:45 Haber

 

Windows Uzak Masaüstü Port Değiştirme Rehberi

Windows Server ve Windows 10/11 sistemlerde RDP (Remote Desktop Protocol) portunu güvenlik veya özel gereksinimler için değiştirme rehberi. PowerShell script ile otomatik kurulum, Registry düzenlemesi ve Güvenlik Duvarı yapılandırması.

Neden RDP Portu Değiştirilmeli?

Uzak Masaüstü (RDP), Windows sistemlerde varsayılan olarak 3389 portunu kullanır. Bu portu değiştirmek için birçok önemli sebep vardır:

✅ Port Değiştirmenin Avantajları

  • Güvenlik artışı: Otomatik botlar ve saldırılar genellikle varsayılan 3389 portunu hedef alır
  • Brute-force saldırılardan korunma: Standart olmayan port kullanımı saldırganları zorlaştırır
  • Ek güvenlik katmanı: "Security through obscurity" prensibi
  • Çoklu sunucu yönetimi: Aynı ağda birden fazla RDP sunucusu için farklı portlar
  • ISP kısıtlamalarını aşma: Bazı internet sağlayıcıları 3389 portunu engelleyebilir
  • ⚙️ Kurumsal politikalar: Şirket güvenlik standartları gereği

Karşılaştırma: Varsayılan vs Özel Port

Özellik Varsayılan Port (3389) Özel Port (örn: 49200)
Güvenlik Seviyesi ❌ Düşük (hedef alınır) ✅ Yüksek (gizli kalır)
Brute-force Saldırıları ❌ Çok sık ✅ Çok nadir
Port Tarama ❌ Hemen bulunur ✅ Bulunması zor
ISP Engeli ❌ Engellenebilir ✅ Engellenmez
Çoklu Sunucu ❌ Port çakışması ✅ Her sunucuya farklı port
⚠️ Önemli: Port değiştirme tek başına yeterli değildir! Mutlaka güçlü şifreler, Network Level Authentication ve güvenlik duvarı kuralları ile birlikte kullanılmalıdır.

Başlamadan Önce Gerekenler

✅ Sistem Gereksinimleri

  • Windows Server 2012/2016/2019/2022 veya Windows 10/11 Pro/Enterprise
  • Yönetici (Administrator) yetkisi
  • PowerShell 5.1+ (varsayılan olarak yüklü)
  • Uzak Masaüstü özelliği etkinleştirilmiş olmalı
  • Yedek erişim yolu (fiziksel veya alternatif bağlantı)

Hangi Port Numarasını Seçmeli?

Port Aralığı Açıklama Önerilen?
0 - 1023 Sistem portları (HTTP, FTP, SSH vb.) ❌ Kullanmayın
1024 - 49151 Kayıtlı portlar (uygulamalar için) ⚠️ Dikkatli kullanın
49152 - 65535 Dinamik/Özel portlar ✅ İdeal seçim
Önerilen Port Örnekleri:
  • 49200 - Bu rehberde kullanılan örnek
  • 50001 - Hatırlanması kolay
  • 33899 - 3389'a benzer
  • 55443 - HTTPS portuna benzer
Kritik Uyarı: Port değiştirmeden önce:
  • Fiziksel veya başka bir uzak erişim yönteminiz olsun
  • Değişiklik sırasında aktif RDP oturumunuz kopabilir
  • Sistem yeniden başlatılması gerekebilir
  • Güvenlik duvarı ayarlarını yapmazsanız bağlanamazsınız!

PowerShell Script ile Otomatik Kurulum (ÖNERİLEN)

En hızlı ve güvenli yöntem PowerShell scripti kullanmaktır. Script otomatik olarak şunları yapar:

✅ Script Özellikleri

  • ✅ Registry'de RDP portunu değiştirir
  • ✅ Güvenlik duvarında yeni port için kural oluşturur
  • ✅ Eski 3389 kuralını kaldırır (opsiyonel)
  • ✅ Terminal Services servisini yeniden başlatır
  • ✅ Değişiklikleri doğrular
  • ✅ Bağlantı bilgilerini gösterir

Hızlı Kurulum Adımları

  1. PowerShell'i Yönetici olarak açın
  2. Execution Policy ayarlayın:
    Set-ExecutionPolicy Bypass -Scope Process -Force
  3. Scripti çalıştırın:
    # Varsayılan port (49200) ile
    .\Set-RDPPort.ps1
    
    # Özel port ile
    .\Set-RDPPort.ps1 -NewPort 50001
    
    # Eski kuralları da kaldırarak
    .\Set-RDPPort.ps1 -NewPort 50001 -RemoveOldRule
  4. 
    # ========================================================
    # Windows RDP Port Değiştirme Scripti
    # Kullanım: Yönetici PowerShell'de çalıştırın
    # Yazar: AlestaWeb Sistem Rehberleri
    # Versiyon: 2.0
    # Tarih: 2025
    # ========================================================
    
    # Parametreler
    param(
        [Parameter(Mandatory=$false)]
        [int]$NewPort = 49200,
        
        [Parameter(Mandatory=$false)]
        [switch]$RemoveOldRule = $false
    )
    
    # Renkli çıktı için yardımcı fonksiyonlar
    function Write-ColorOutput($ForegroundColor) {
        $fc = $host.UI.RawUI.ForegroundColor
        $host.UI.RawUI.ForegroundColor = $ForegroundColor
        if ($args) {
            Write-Output $args
        }
        $host.UI.RawUI.ForegroundColor = $fc
    }
    
    function Write-Success { Write-ColorOutput Green $args }
    function Write-Info { Write-ColorOutput Cyan $args }
    function Write-Warning2 { Write-ColorOutput Yellow $args }
    function Write-Error2 { Write-ColorOutput Red $args }
    
    # Banner
    Write-Host "`n"
    Write-Host "╔════════════════════════════════════════════════════╗" -ForegroundColor Cyan
    Write-Host "║     Windows RDP Port Değiştirme Scripti v2.0     ║" -ForegroundColor Cyan
    Write-Host "║            AlestaDergi Sistem Rehberleri          ║" -ForegroundColor Cyan
    Write-Host "╚════════════════════════════════════════════════════╝" -ForegroundColor Cyan
    Write-Host "`n"
    
    # Yönetici kontrolü
    $isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
    
    if (-not $isAdmin) {
        Write-Error2 "❌ HATA: Bu script yönetici (Administrator) yetkisi ile çalıştırılmalıdır!"
        Write-Warning2 "`nÇözüm: PowerShell'i sağ tıklayıp 'Yönetici olarak çalıştır' seçeneğini kullanın."
        Read-Host "`nDevam etmek için Enter'a basın"
        exit 1
    }
    
    # Port doğrulama
    if ($NewPort -lt 1024 -or $NewPort -gt 65535) {
        Write-Error2 "❌ HATA: Port numarası 1024-65535 arasında olmalıdır!"
        Write-Warning2 "Önerilen aralık: 49152-65535 (dinamik portlar)"
        Read-Host "`nDevam etmek için Enter'a basın"
        exit 1
    }
    
    # Mevcut port kontrolü
    $RegPath = "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
    try {
        $CurrentPort = Get-ItemProperty -Path $RegPath -Name "PortNumber" -ErrorAction Stop
        $CurrentPortValue = $CurrentPort.PortNumber
        Write-Info "Mevcut RDP portu: $CurrentPortValue"
    } catch {
        Write-Error2 "❌ HATA: Registry yolu okunamadı. RDP servisi kurulu değil olabilir."
        Write-Error2 "Detay: $($_.Exception.Message)"
        Read-Host "`nDevam etmek için Enter'a basın"
        exit 1
    }
    
    if ($CurrentPortValue -eq $NewPort) {
        Write-Warning2 "⚠️  Port zaten $NewPort olarak ayarlanmış! İşlem yapılmayacak."
        Read-Host "`nDevam etmek için Enter'a basın"
        exit 0
    }
    
    # Onay isteme
    Write-Warning2 "`n⚠️  DİKKAT: RDP portu $CurrentPortValue ==> $NewPort olarak değiştirilecek!"
    Write-Warning2 "Bu işlem sırasında mevcut RDP bağlantınız kopabilir."
    Write-Warning2 "Fiziksel veya alternatif bir erişim yolunuz olduğundan emin olun!`n"
    $confirmation = Read-Host "Devam etmek istiyor musunuz? (E/H)"
    
    if ($confirmation -ne 'E' -and $confirmation -ne 'e') {
        Write-Info "İşlem kullanıcı tarafından iptal edildi."
        Read-Host "`nDevam etmek için Enter'a basın"
        exit 0
    }
    
    Write-Info "`nİşlem başlıyor...`n"
    Start-Sleep -Seconds 1
    
    # 1. Registry'de port değiştirme
    Write-Info "1️⃣  Registry'de RDP portu değiştiriliyor..."
    try {
        Set-ItemProperty -Path $RegPath -Name "PortNumber" -Value $NewPort -ErrorAction Stop
        Write-Success "   ✅ Registry başarıyla güncellendi: $NewPort"
    } catch {
        Write-Error2 "   ❌ Registry güncellenemedi: $($_.Exception.Message)"
        Read-Host "`nDevam etmek için Enter'a basın"
        exit 1
    }
    
    # 2. Güvenlik duvarı kuralı ekleme
    Write-Info "`n2️⃣  Güvenlik duvarı kuralı oluşturuluyor..."
    try {
        $ruleName = "RDP Port $NewPort"
        
        # Mevcut kural kontrolü
        $existingRule = Get-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue
        if ($existingRule) {
            Write-Warning2 "   ⚠️  Kural zaten mevcut, güncelleniyor..."
            Remove-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue
        }
        
        New-NetFirewallRule -DisplayName $ruleName `
                            -Direction Inbound `
                            -Protocol TCP `
                            -LocalPort $NewPort `
                            -Action Allow `
                            -Profile Any `
                            -Enabled True `
                            -ErrorAction Stop | Out-Null
        
        Write-Success "   ✅ Güvenlik duvarı kuralı oluşturuldu: $ruleName"
    } catch {
        Write-Error2 "   ❌ Güvenlik duvarı kuralı oluşturulamadı: $($_.Exception.Message)"
        Write-Warning2 "   ⚠️  Manuel olarak eklemeniz gerekebilir!"
    }
    
    # 3. Eski güvenlik duvarı kuralını kaldırma (opsiyonel)
    if ($RemoveOldRule) {
        Write-Info "`n3️⃣  Eski güvenlik duvarı kuralları kaldırılıyor..."
        try {
            $oldRules = Get-NetFirewallRule | Where-Object { 
                $_.DisplayName -like "*Remote Desktop*" -and 
                $_.DisplayName -notlike "*$NewPort*" 
            }
            foreach ($rule in $oldRules) {
                Write-Info "Kaldırılıyor: $($rule.DisplayName)"
                Remove-NetFirewallRule -DisplayName $rule.DisplayName -ErrorAction SilentlyContinue
            }
            if ($oldRules.Count -gt 0) {
                Write-Success "   ✅ $($oldRules.Count) eski kural kaldırıldı"
            } else {
                Write-Info "   ℹ️  Kaldırılacak eski kural bulunamadı"
            }
        } catch {
            Write-Warning2 "   ⚠️  Eski kurallar kaldırılamadı: $($_.Exception.Message)"
        }
    }
    
    # 4. Terminal Services servisini yeniden başlatma
    Write-Info "`n4️⃣  Terminal Services servisi yeniden başlatılıyor..."
    try {
        $serviceName = "TermService"
        $service = Get-Service -Name $serviceName -ErrorAction Stop
        
        if ($service.Status -eq 'Running') {
            Write-Info "   Servis durduruluyor..."
            Stop-Service -Name $serviceName -Force -ErrorAction Stop
            Start-Sleep -Seconds 2
        }
        
        Write-Info "   Servis başlatılıyor..."
        Start-Service -Name $serviceName -ErrorAction Stop
        Start-Sleep -Seconds 1
        Write-Success "   ✅ Servis başarıyla yeniden başlatıldı"
    } catch {
        Write-Error2 "   ❌ Servis yeniden başlatılamadı: $($_.Exception.Message)"
        Write-Warning2 "   ⚠️  Sistemi yeniden başlatmanız önerilir!"
    }
    
    # 5. Doğrulama
    Write-Info "`n5️⃣  Değişiklikler doğrulanıyor..."
    Start-Sleep -Seconds 2
    
    try {
        # Registry kontrolü
        $verifyPort = Get-ItemProperty -Path $RegPath -Name "PortNumber"
        if ($verifyPort.PortNumber -eq $NewPort) {
            Write-Success "   ✅ Registry doğrulandı: Port = $NewPort"
        } else {
            Write-Error2 "   ❌ Registry doğrulanamadı! Beklenen: $NewPort, Mevcut: $($verifyPort.PortNumber)"
        }
        
        # Servis kontrolü
        $serviceStatus = Get-Service -Name TermService
        if ($serviceStatus.Status -eq 'Running') {
            Write-Success "   ✅ Terminal Services çalışıyor"
        } else {
            Write-Warning2 "   ⚠️  Terminal Services çalışmıyor: $($serviceStatus.Status)"
        }
        
        # Güvenlik duvarı kontrolü
        $firewallRule = Get-NetFirewallRule -DisplayName "RDP Port $NewPort" -ErrorAction SilentlyContinue
        if ($firewallRule) {
            Write-Success "   ✅ Güvenlik duvarı kuralı mevcut ve aktif"
        } else {
            Write-Warning2 "   ⚠️  Güvenlik duvarı kuralı bulunamadı"
        }
        
    } catch {
        Write-Error2 "   ❌ Doğrulama sırasında hata: $($_.Exception.Message)"
    }
    
    # Sonuç özeti
    Write-Host "`n"
    Write-Host "╔════════════════════════════════════════════════════╗" -ForegroundColor Green
    Write-Host "║              İŞLEM BAŞARIYLA TAMAMLANDI          ║" -ForegroundColor Green
    Write-Host "╚════════════════════════════════════════════════════╝" -ForegroundColor Green
    
    # IP adresini al
    try {
        $ipAddresses = Get-NetIPAddress -AddressFamily IPv4 | 
                       Where-Object { $_.InterfaceAlias -notlike "*Loopback*" } | 
                       Select-Object -ExpandProperty IPAddress
    } catch {
        $ipAddresses = @("HATA: IP alınamadı")
    }
    
    Write-Host "`nBağlantı Bilgileri:" -ForegroundColor Cyan
    Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -ForegroundColor Cyan
    Write-Host "Eski RDP Portu    : " -NoNewline -ForegroundColor Yellow
    Write-Host "$CurrentPortValue" -ForegroundColor Red
    Write-Host "Yeni RDP Portu    : " -NoNewline -ForegroundColor Yellow
    Write-Host "$NewPort" -ForegroundColor Green
    
    if ($ipAddresses.Count -gt 0) {
        Write-Host "Sunucu IP Adresi  : " -NoNewline -ForegroundColor Yellow
        foreach ($ip in $ipAddresses) {
            Write-Host "$ip" -ForegroundColor Green
        }
    }
    
    Write-Host "`nBağlantı Komutları:" -ForegroundColor Cyan
    Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -ForegroundColor Cyan
    if ($ipAddresses.Count -gt 0) {
        Write-Host "   mstsc /v:" -NoNewline -ForegroundColor White
        Write-Host "$($ipAddresses[0]):$NewPort" -ForegroundColor Green
        Write-Host "`n   veya Uzak Masaüstü uygulamasında:" -ForegroundColor White
        Write-Host "   Bilgisayar: " -NoNewline -ForegroundColor White
        Write-Host "$($ipAddresses[0]):$NewPort" -ForegroundColor Green
    }
    
    Write-Host "`n⚠️  ÖNEMLİ NOTLAR:" -ForegroundColor Yellow
    Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -ForegroundColor Yellow
    Write-Host "1. Eski $CurrentPortValue portuna gelen bağlantılar artık ÇALIŞMAYACAK" -ForegroundColor White
    Write-Host "2. Yeni $NewPort portunu kullanarak bağlanmalısınız" -ForegroundColor White
    Write-Host "3. NAT/Router arkasındaysanız port yönlendirme yapın" -ForegroundColor White
    Write-Host "4. Şirket güvenlik duvarınızda da bu portu açmanız gerekebilir" -ForegroundColor White
    Write-Host "5. Değişikliğin tam aktif olması için sistemi yeniden başlatın" -ForegroundColor White
    
    # NAT yönlendirme bilgisi
    if ($ipAddresses.Count -gt 0) {
        Write-Host "`nNAT/Router Port Yönlendirme Ayarları:" -ForegroundColor Cyan
        Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -ForegroundColor Cyan
        Write-Host "   Dış Port (WAN)    : " -NoNewline -ForegroundColor White
        Write-Host "$NewPort" -ForegroundColor Green
        Write-Host "   İç IP (LAN)       : " -NoNewline -ForegroundColor White
        Write-Host "$($ipAddresses[0])" -ForegroundColor Green
        Write-Host "   İç Port           : " -NoNewline -ForegroundColor White
        Write-Host "$NewPort" -ForegroundColor Green
        Write-Host "   Protokol          : " -NoNewline -ForegroundColor White
        Write-Host "TCP" -ForegroundColor Green
    }
    
    # Test komutları
    Write-Host "`nTest Komutları:" -ForegroundColor Cyan
    Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -ForegroundColor Cyan
    Write-Host "   # Registry kontrolü" -ForegroundColor Gray
    Write-Host "   Get-ItemProperty -Path '$RegPath' -Name PortNumber" -ForegroundColor White
    Write-Host ""
    Write-Host "   # Port dinleme kontrolü" -ForegroundColor Gray
    Write-Host "   netstat -ano | findstr :$NewPort" -ForegroundColor White
    Write-Host ""
    Write-Host "   # Bağlantı testi" -ForegroundColor Gray
    if ($ipAddresses.Count -gt 0) {
        Write-Host "   Test-NetConnection -ComputerName $($ipAddresses[0]) -Port $NewPort" -ForegroundColor White
    }
    
    Write-Host "`n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`n" -ForegroundColor Cyan
    
    # Geri alma bilgisi
    Write-Host "Geri Alma: " -NoNewline -ForegroundColor Yellow
    Write-Host "Eski porta dönmek isterseniz bu scripti tekrar çalıştırın:" -ForegroundColor White
    Write-Host "   .\Set-RDPPort.ps1 -NewPort $CurrentPortValue`n" -ForegroundColor Cyan
    
    # Sistem yeniden başlatma önerisi
    $reboot = Read-Host "Sistemi şimdi yeniden başlatmak ister misiniz? (E/H)"
    if ($reboot -eq 'E' -or $reboot -eq 'e') {
        Write-Warning2 "`n⏰ Sistem 10 saniye içinde yeniden başlatılacak..."
        Write-Warning2 "İptal etmek için Ctrl+C tuşlarına basın!"
        for ($i = 10; $i -gt 0; $i--) {
            Write-Host "   $i..." -ForegroundColor Yellow
            Start-Sleep -Seconds 1
        }
        Write-Info "`nSistem yeniden başlatılıyor..."
        Restart-Computer -Force
    } else {
        Write-Info "`n✅ Script tamamlandı. Sistemi daha sonra yeniden başlatmayı unutmayın!"
        Write-Warning2 "   Not: Tam aktif olması için yeniden başlatma ŞİDDETLE önerilir!`n"
    }
    
    # Son mesaj
    Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -ForegroundColor Cyan
    Write-Host "AlestaDergi - Sistem Rehberleri | alestaweb.com" -ForegroundColor Cyan
    Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`n" -ForegroundColor Cyan
    
    Read-Host "Çıkmak için Enter'a basın"
    
Script İndirme: Set-RDPPort.ps1 dosyasını bu rehberle birlikte indirebilirsiniz.

Manuel Kurulum Adımları

PowerShell scripti kullanamıyorsanız, manuel olarak da port değiştirebilirsiniz:

1️⃣ Registry Editor ile Port Değiştirme

Adım 1: Registry Editor'ü Açın

# Win + R tuşlarına basın ve yazın:
regedit

Adım 2: RDP-Tcp Anahtarına Gidin

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

Adım 3: PortNumber Değerini Değiştirin

  1. Sağ panelde PortNumber değerini bulun
  2. Üzerine çift tıklayın
  3. "Base" kısmında Decimal (Ondalık) seçin
  4. Value data'ya yeni port numarasını yazın: 49200
  5. "OK" butonuna tıklayın
⚠️ Dikkat: Mutlaka Decimal (Ondalık) seçin! Hexadecimal ile yanlış değer girebilirsiniz.

2️⃣ Terminal Services Servisini Yeniden Başlatma

# PowerShell (Yönetici)
Stop-Service -Name TermService -Force
Start-Sleep -Seconds 3
Start-Service -Name TermService

# veya CMD
net stop TermService
net start TermService

# En garanti yöntem: Sistemi yeniden başlatma
Restart-Computer -Force

3️⃣ Değişikliği Doğrulama

# PowerShell ile port kontrolü
$Port = Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "PortNumber"
Write-Host "Mevcut RDP Portu: $($Port.PortNumber)"

# Netstat ile port dinleme kontrolü
netstat -ano | findstr :49200

# Başarılı çıktı: TCP 0.0.0.0:49200 LISTENING

Güvenlik Duvarı Ayarları

Port değiştirdikten sonra mutlaka güvenlik duvarında yeni portu açmalısınız!

Yöntem 1: PowerShell ile (ÖNERİLEN)

# Yeni port için kural ekleme
New-NetFirewallRule -DisplayName "RDP Port 49200" `
                    -Direction Inbound `
                    -Protocol TCP `
                    -LocalPort 49200 `
                    -Action Allow `
                    -Profile Any

# Kural kontrolü
Get-NetFirewallRule -DisplayName "RDP Port 49200"

Yöntem 2: Windows Defender Güvenlik Duvarı GUI

  1. BaşlatWindows Defender Güvenlik Duvarı
  2. Sol menüden Gelişmiş Ayarlar
  3. Gelen Kuralları (Inbound Rules) seçin
  4. Sağ panelden Yeni Kural (New Rule)
  5. Port seçeneğini seçip İleri
  6. TCP seçin ve Specific local ports: 49200
  7. İleriAllow the connection
  8. Tüm profilleri seçin → İsim: RDP Port 49200

⚙️ Yöntem 3: netsh Komutu ile

# Kural ekleme
netsh advfirewall firewall add rule name="RDP Port 49200" dir=in action=allow protocol=TCP localport=49200

# Kural kontrolü
netsh advfirewall firewall show rule name="RDP Port 49200"
KRİTİK: Güvenlik duvarını doğru yapılandırmazsanız RDP bağlantısı çalışmaz! Mutlaka test edin.

NAT/Router Port Yönlendirme

Sunucunuz router veya NAT arkasındaysa ve internet üzerinden erişim istiyorsanız port yönlendirme (port forwarding) yapmalısınız.

Gerekli Bilgiler

Parametre Açıklama Örnek Değer
External Port Dış dünyadan gelen port 49200
Internal IP Sunucunun yerel IP adresi 192.168.1.100
Internal Port Sunucudaki RDP portu 49200
Protocol Bağlantı protokolü TCP

Router Yapılandırma Adımları

  1. Router admin paneline giriş: 192.168.1.1 veya 192.168.0.1
  2. Port Forwarding bölümünü bulun: Advanced → NAT → Port Forwarding
  3. Yeni kural oluşturun:
    • Service Name: RDP Custom
    • External Port: 49200
    • Internal IP: 192.168.1.100 (sunucunuzun yerel IP'si)
    • Internal Port: 49200
    • Protocol: TCP
  4. Kaydedin ve router'ı yeniden başlatın

IP Adresini Bulma

# Yerel IP adresi
ipconfig | findstr IPv4

# Dış IP adresi (WAN)
(Invoke-WebRequest -Uri "https://api.ipify.org").Content
⚠️ Güvenlik: RDP'yi internete açmak risk taşır. VPN kullanımı, güçlü şifreler ve iki faktörlü kimlik doğrulama zorunludur.

Bağlantı Testi

Yöntem 1: Uzak Masaüstü Bağlantısı (mstsc)

# Komut satırından
mstsc /v:192.168.1.100:49200

# İnternet üzerinden
mstsc /v:85.34.56.78:49200

# Tam ekran modunda
mstsc /v:192.168.1.100:49200 /f

GUI ile:

  1. Başlat → Uzak Masaüstü Bağlantısı
  2. Bilgisayar: 192.168.1.100:49200
  3. Bağlan butonuna tıklayın

Yöntem 2: Port Kontrolü

# PowerShell ile bağlantı testi
Test-NetConnection -ComputerName 192.168.1.100 -Port 49200

# Başarılı çıktı: TcpTestSucceeded : True

# netstat ile port kontrolü
netstat -ano | findstr :49200

# Çıktı: TCP 0.0.0.0:49200 LISTENING
✅ Başarılı Bağlantı Göstergeleri:
  • Test-NetConnection "TcpTestSucceeded : True" gösteriyor
  • netstat'ta port "LISTENING" durumunda
  • mstsc ile bağlantı penceresi açılıyor
  • Başarılı giriş yapılıyor

Sık Karşılaşılan Hatalar ve Çözümleri

❌ Hata 1: "Uzak bilgisayara bağlanılamıyor"

Çözüm:

# Port kontrolü
Test-NetConnection -ComputerName 192.168.1.100 -Port 49200

# Güvenlik duvarı kontrolü
Get-NetFirewallRule -DisplayName "*RDP*"

# Servis kontrolü
Get-Service -Name TermService

# Registry kontrolü
Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name PortNumber

❌ Hata 2: PowerShell Script Çalışmıyor

Hata: "cannot be loaded. The file is not digitally signed"

Çözüm:

# Execution Policy'yi geçici değiştir
Set-ExecutionPolicy Bypass -Scope Process -Force

# Scripti çalıştır
.\Set-RDPPort.ps1

❌ Hata 3: Güvenlik Duvarı Engelliyor

Çözüm:

# Test için geçici kapat
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

# Test et
Test-NetConnection -ComputerName 192.168.1.100 -Port 49200

# Tekrar aç ve doğru kuralı ekle
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
New-NetFirewallRule -DisplayName "RDP Port 49200" -Direction Inbound -Protocol TCP -LocalPort 49200 -Action Allow

❌ Hata 4: Registry Değişikliği Etkisiz

Çözüm: Sistemi yeniden başlatın

Restart-Computer -Force

Güvenlik Önerileri ve En İyi Uygulamalar

Temel Güvenlik Önlemleri

  • ✅ Güçlü Şifreler: En az 12 karakter, karışık karakterler
  • ✅ Network Level Authentication (NLA):
    Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name UserAuthentication -Value 1
  • ✅ Account Lockout Policy:
    net accounts /lockoutthreshold:3 /lockoutduration:30
  • ✅ IP Kısıtlaması:
    New-NetFirewallRule -DisplayName "RDP Sadece Ofis" -Direction Inbound -Protocol TCP -LocalPort 49200 -RemoteAddress 85.34.56.78 -Action Allow

İleri Seviye Güvenlik

  • VPN Kullanımı: En güvenli yöntem
  • İki Faktörlü Kimlik Doğrulama: Duo Security, Microsoft Authenticator
  • RDP Gateway: Ek güvenlik katmanı
  • Event Log İzleme:
    # Başarısız giriş denemelerini izle
    Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} -MaxEvents 20
⚠️ Güvenlik Hatırlatması:
  • Port değiştirme tek başına yeterli değildir
  • Tüm güvenlik önlemlerini birlikte uygulayın
  • Düzenli güvenlik güncellemeleri yapın
  • Log dosyalarını periyodik kontrol edin

✅ Kurulum Tamamlandı!

Windows sistemde RDP portunu başarıyla değiştirdik. Artık daha güvenli bir uzak masaüstü bağlantısına sahipsiniz!

Tamamlanan İşlemler:

  • ✅ Registry'de port değiştirildi
  • ✅ Güvenlik duvarı yapılandırıldı
  • ✅ Terminal Services yeniden başlatıldı
  • ✅ Bağlantı testi yapıldı

Destek ve Sorular:
alestaweb.com

© 2025 AlestaDergi - Tüm hakları saklıdır.

WM Tools
💫

WebMaster Tools

15 Profesyonel Araç