RDP Protection
Ayrı bir ürün değil. Cloudflare uzak masaüstünü yayınlamanın üç yolunu belgeliyor — ve dördüncü seçenek olan Spectrum bunların en zayıfı.
- DurumGenel kullanımda
- FiyatZero Trust koltuk (seat) bazlı; Spectrum yolu için Business/Enterprise + GB ücreti
- Doğrulama
RDP Protection nedir?
Çözülen problem gerçek: RDP’yi internete açmak, kaba kuvvet ve fidye yazılımı saldırılarının en yaygın giriş kapılarından biri. Dört yol da 3389 portunu internetten kaldırmayı hedefliyor — ama farklı derecelerde başarıyorlar.
Nasıl çalışır?
Yol 1 — Tarayıcı tabanlı RDP
İstemci kurmadan, tarayıcıdan bağlanma. Yaşam döngüsü:
| Tarih | Durum |
|---|---|
| 21 Mart 2025 | kapalı beta — “in closed beta with new customers being onboarded each week” |
| 1 Temmuz 2025 | açık beta — “Access RDP securely from your browser — now in open beta” |
| 22 Eylül 2025 | GA — “…now generally available!” |
| 1 Mart 2026 | Pano (clipboard) kontrolleri — GA |
| 7 Temmuz 2026 | Dosya transferi — beta, tüm Zero Trust planlarında |
| 16 Temmuz 2026 | Toplu PDF yazdırma — GA |
Yol 2 — Cloudflare One istemcisiyle RDP
WARP istemcisi kurulu bir cihazdan, yerel mstsc ile bağlanma.
Yol 3 — İstemci tarafı cloudflared
cloudflared access rdp --hostname rdp.ornek.com.tr --url rdp://localhost:3389
Ardından mstsc ile localhost:3389’a bağlanıyorsun.
Yol 4 — Spectrum üzerinden 3389
Spectrum’un protokol tablosunda RDP bir satır: Business veya Enterprise gerekiyor, tek uygulama.
Daha iyi modern desen: Spectrum artık origin olarak bir Cloudflare Tunnel sanal ağı kullanabiliyor — Windows makinesinin public IP’si olmasına gerek kalmıyor.
“Virtual network origins are only supported for TCP and UDP applications. The origin must be a single private IP routable within the specified virtual network. Port ranges, hostname origins (
origin_dns), and multiple addresses inorigin_directare not supported. Proxy Protocol is not currently supported, soproxy_protocolmust be set tooff.”
Kimlik doğrulamanın sınırı
Ne zaman kullanılır, ne zaman kullanılmaz
Kullanılır
- 3389’u internetten kaldırmak istiyorsan. Dört yolun dördü de bunu farklı derecelerde yapıyor.
- Yüklenici veya dış ekiplere geçici erişim veriyorsan. Tarayıcı tabanlı RDP istemci kurulumu gerektirmiyor — en büyük operasyonel kazanç bu.
- Kimlik sağlayıcın üzerinden SSO ve MFA istiyorsan. Windows parolasının önüne bir katman ekliyorsun.
- Cihaz duruşu (device posture) kontrolü yapmak istiyorsan. WARP yolunda bu mümkün.
Kullanılmaz
Windows kimlik yönetiminden kurtulmayı bekliyorsan. Kullanıcı kimliklerinin sunucuda önceden tanımlı olması zorunlu. Cloudflare bir katman ekliyor, mevcut katmanı kaldırmıyor.
RDP oturum kaydı gerekiyorsa. Belgelenmiş bir özellik yok.
Spectrum-on-3389’u güvenlik çözümü sanıyorsan. Business planında IP filtreleme yok, Proxy Protocol yok, WAF yok. Hedefi taşıyorsun, kaldırmıyorsun.
Türkçe klavye garantisi arıyorsan. Genel bir iddia var, Türkçe için belgelenmiş bir teyit yok.
Koltuk maliyetini öngöremiyorsan. Her kimlik doğrulayan kullanıcı bir koltuk tüketiyor ve revoke etmek koltuğu boşaltmıyor. Yüklenici trafiği yoğun bir kurumda bu, beklenmedik bir maliyet kalemi.
Dosya transferine üretimde güveneceksen. Özellik beta ve “Transfer history is discarded when the RDP session ends.”
cloudflared sürecini ayakta tutamayacaksan. İstemci tarafı yol, süreç ölünce bağlantıyı da
öldürüyor.
Somut örnekler
Tarayıcı tabanlı RDP — hedef oluşturma
# Infrastructure target
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/infrastructure/targets" \
--request POST -H "Authorization: Bearer $CF_API_TOKEN" \
--json '{
"hostname": "win-sunucu-01",
"ip": { "ipv4": { "ip_addr": "10.0.1.20", "virtual_network_id": "'"$VNET_ID"'" } }
}'
Tunnel yapılandırması
# ~/.cloudflared/config.yml
tunnel: <TUNNEL_ID>
credentials-file: /root/.cloudflared/<TUNNEL_ID>.json
ingress:
- hostname: rdp.ornek.com.tr
service: rdp://10.0.1.20:3389
- service: http_status:404
Özel ağ için catch-all Gateway kuralı
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST -H "Authorization: Bearer $CF_API_TOKEN" \
--json '{
"name": "ozel-ag-varsayilan-blok",
"action": "block",
"filters": ["l4"],
"traffic": "net.dst.ip in {10.0.0.0/8 172.16.0.0/12 192.168.0.0/16}",
"precedence": 10000
}'
Bu kuralı önce yaz, sonra izin kurallarını daha düşük precedence ile ekle.
İstemci tarafı cloudflared
cloudflared access rdp --hostname rdp.ornek.com.tr --url rdp://localhost:3389
# ardından mstsc ile localhost:3389
systemd ile ayakta tutmak:
# /etc/systemd/system/cf-rdp.service
[Unit]
Description=Cloudflare RDP erisimi
After=network-online.target
[Service]
ExecStart=/usr/local/bin/cloudflared access rdp --hostname rdp.ornek.com.tr --url rdp://localhost:3389
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Spectrum üzerinden 3389 (en zayıf yol)
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/spectrum/apps" \
--request POST -H "Authorization: Bearer $CF_API_TOKEN" \
--json '{
"protocol": "tcp/3389",
"dns": { "type": "CNAME", "name": "rdp.ornek.com.tr" },
"origin_direct": ["tcp://203.0.113.20:3389"],
"ip_firewall": false,
"proxy_protocol": "off"
}'
ip_firewall ve proxy_protocol Business planında zaten kullanılamıyor — yukarıdaki değerler
kaçınılmaz.
Demo 1: Üç yolu yan yana kurup farklarını ölçmek
Adım 1 — Windows sunucusunu hazırla
# RDP'yi aç ama güvenlik duvarında yalnızca yerel ağa izin ver
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' `
-Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# İnternete kapalı olduğunu doğrula
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Get-NetFirewallAddressFilter
Adım 2 — 3389’un internetten kapalı olduğunu kanıtla
# Dışarıdan bir makineden
nmap -p 3389 -Pn 203.0.113.20
nc -zv -w 5 203.0.113.20 3389
Adım 3 — Tarayıcı tabanlı RDP ile bağlan
Adım 4 — Türkçe klavyeyi test et
Tarayıcı oturumunda Türkçe Q ve F düzeniyle şu karakterleri yaz: ş ğ İ ı ö ç ü Ş Ğ Ö Ç Ü
Adım 5 — Pano ve dosya transferini test et
Limitleri test et: 2 GB’lık tek dosya, 1.000 dosyalık toplu yükleme.
Adım 6 — Ayarların zıtlığını kanıtla
Tarayıcı tabanlı RDP → "Authenticate with Cloudflare One Client" = KAPALI
Yerel istemci (mstsc) → "Authenticate with Cloudflare One Client" = AÇIK
Yanlış ayarla dene ve ne olduğunu göster: tarayıcı yolunda açıksa çalışmıyor; mstsc yolunda
kapalıysa 302 yönlendirmesi takip edilemediği için bağlantı kurulamıyor.
Bu demoda ölçülenler:
| Ölçüt | Tarayıcı RDP | Cloudflare One istemcisi | İstemci cloudflared |
|---|---|---|---|
| İstemci kurulumu | hiç | WARP | cloudflared |
| 3389 internete açık | ✘ | ✘ | ✘ |
| SSO / MFA | ✅ | ✅ | ✅ (Access kurulursa) |
| Varsayılan olarak herkese açık mı | ✘ | ✅ (kayıtlı her cihaz) | ✅ (tüm internet) |
| Split Tunnels gerekiyor mu | ✘ | ✅ | ✘ |
| Türkçe klavye | test et | yerel istemci | yerel istemci |
| Pano | ✅ (GA) | yerel | yerel |
| Dosya transferi | ✅ (beta) | yerel | yerel |
| Oturum kaydı | yok | yok | yok |
| Koltuk tüketiyor mu | ✅ | ✅ | ✅ |
Demo 2: Spectrum yolunun neden zayıf olduğunu kanıtlamak
Bu demo, bir güvenlik kararını veriyle destekliyor.
Adım 1 — Spectrum uygulamasını kur
Adım 2 — Bağlan ve Windows olay günlüğüne bak
# Başarılı oturum açma olayları — kaynak IP'ye dikkat
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4624} -MaxEvents 10 |
Select-Object TimeCreated, @{n='KaynakIP';e={$_.Properties[18].Value}}, `
@{n='Kullanici';e={$_.Properties[5].Value}} | Format-Table
Adım 3 — Kaba kuvvet denemesi yap
Kontrollü bir ortamda, kendi test hesabına karşı birkaç hatalı oturum açma denemesi yap.
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} -MaxEvents 20 |
Select-Object TimeCreated, @{n='KaynakIP';e={$_.Properties[19].Value}}, `
@{n='Kullanici';e={$_.Properties[5].Value}} | Format-Table
Hedefin taşındığını, kaldırılmadığını gösteren ekran bu: 3389 hâlâ erişilebilir, sadece adresi değişti.
Adım 4 — IP filtreleme yapamadığını göster
Business planında ip_firewall ayarını açmayı dene.
Adım 5 — WAF’ın uygulanmadığını göster
Bir WAF custom rule yaz ve Spectrum trafiğine uygulanmadığını Security Events’ten doğrula.
“Spectrum… cannot apply WAF rules to TCP traffic.”
Adım 6 — Aynı testi tarayıcı tabanlı RDP ile tekrarla
Windows olay günlüğü hâlâ Cloudflare IP’si gösteriyor — ama artık Cloudflare tarafında kim olduğunu bilen bir log var. Spectrum yolunda o log yok.
Bu demoda ölçülenler:
| Ölçüt | Spectrum (Business) | Tarayıcı tabanlı RDP |
|---|---|---|
| 3389 internetten erişilebilir mi | evet, yeni adreste | hayır |
| Kimlik doğrulama katmanı | yok | Access SSO + MFA |
| Windows logunda kaynak IP | Cloudflare edge IP’si | Cloudflare edge IP’si |
| Kim bağlandı bilgisi | hiçbir yerde yok | Access loglarında |
| IP filtreleme | yok (Enterprise) | Access politikaları |
| Cihaz duruşu kontrolü | yok | ✅ |
| WAF | uygulanmıyor | ilgisiz |
| Kaba kuvvet denemesi | origin’e ulaşıyor | Access’te duruyor |
Fiyatlandırma
| Yol | Fiyat modeli |
|---|---|
| Tarayıcı tabanlı RDP | Zero Trust koltuk (seat) bazlı |
| Cloudflare One istemcisi | Zero Trust koltuk bazlı |
| İstemci tarafı cloudflared | Zero Trust koltuk bazlı (Access kurulursa) |
| Spectrum üzerinden 3389 | Business/Enterprise + 10 GB dahil, sonrası $1/GB |
Hesap limitleri
| Öğe | Limit |
|---|---|
| Access uygulaması | 500 |
| Uygulama başına kural | 1.000 |
| Uygulama başına alan adı | 50 |
| Yeniden kullanılabilir politika | 500 |
| Kural başına IP | 1.000 |
| Kimlik sağlayıcı | 50 |
| Servis token | 50 |
| Infrastructure target | 5.000 |
| Hesap başına cloudflared tüneli | 1.000 |
| Hesap başına rota | 1.000 |
| Tünel başına aktif cloudflared replikası | 25 |
| Sanal ağ | 1.000 |
| Uygulama adı | 350 karakter |
| Hedef adı | 255 karakter |
| Uygulama URL’si | 63 karakter |
| Team domain | 63 karakter |
“These limits may be increased on Enterprise accounts.”
Dosya transferi limitleri (beta)
Dosya başına 2 GB · yükleme başına en fazla 1.000 dosya · sürükle-bırak klasörlerde toplam 1.000 girdi. Ve: “Transfer history is discarded when the RDP session ends.”
Lisanslama ve hukuki çerçeve
Hizmet tescillidir ve Cloudflare Hizmet Şartları’na tabidir.
Uzak masaüstü oturumları ve KVKK. Bir RDP oturumu, çalışanın ekranındaki her şeyi Cloudflare altyapısı üzerinden taşıyor. Tarayıcı tabanlı RDP’de görüntü Cloudflare’de işlenip tarayıcıya render ediliyor. Bu, kişisel veri içeren bir ekranın üçüncü taraf altyapısından geçmesi anlamına geliyor.
Cloudflare bu konuda RDP’ye özgü bir metin yayımlamıyor. Genel Zero Trust veri işleme çerçevesi geçerli.
Oturum kaydı yok — bu bir avantaj da olabilir. RDP oturumları kaydedilmediği için “çalışan ekranı kaydediliyor mu” sorusunun cevabı hayır. Ama denetim gereksinimin kayıt istiyorsa bu bir eksiklik.
Windows kimlikleri sende kalıyor. “Any user identifier used to authenticate must be pre-configured on the server.” Yani Active Directory veya yerel hesap yönetimi, parola politikaları ve hesap yaşam döngüsü senin sorumluluğunda kalıyor. Cloudflare bir katman ekliyor.
Dosya transferi ve veri sızıntısı. Beta’daki dosya transferi özelliği iki yönlü. Veri sızıntısı politikan varsa bu özelliği bilinçli olarak açıp kapatman gerekiyor — ve transfer geçmişi oturum bitince siliniyor, yani denetim izi bırakmıyor.
Sık yapılan hatalar
Cloudflare’in bir “RDP ürünü” olduğunu sanmak. Yok — dört yol var ve biri diğerlerinden çok daha zayıf.
Spectrum-on-3389’u güvenlik çözümü sanmak. Business planında IP filtreleme, Proxy Protocol ve WAF yok. Hedefi taşıyorsun, kaldırmıyorsun.
Kısa ömürlü sertifikaların RDP’de de olduğunu sanmak. Yalnızca SSH.
RDP oturum kaydı beklemek. Belgelenmiş bir özellik yok.
İstemci tarafı cloudflared’i Access olmadan kullanmak. “anyone on the Internet can connect.”
WARP kaydını yetkilendirme sanmak. Kayıtlı her cihaz varsayılan olarak bağlanabiliyor.
Split Tunnels’ı yapılandırmamak. Sessiz zaman aşımı; hata mesajı yok.
“Authenticate with Cloudflare One Client” ayarını iki yol için aynı yapmak. Tarayıcı yolunda
kapalı, mstsc yolunda açık olmalı.
cloudflared sürecini ayakta tutmayı planlamamak. Süreç ölünce erişim de ölüyor.
Koltuk tüketimini yanlış hesaplamak. Revoke etmek koltuğu boşaltmıyor; silmek gerekiyor.
Servis token seçeneğini bilmemek. Makine-makine erişimi koltuk tüketmeden yapılabiliyor.
Türkçe klavyeyi test etmeden üretime almak. Belgelenmiş bir garanti yok.
Dosya transferinin denetim izi bıraktığını sanmak. Oturum bitince geçmiş siliniyor.
63 karakterlik uygulama URL’si sınırını bilmemek. Uzun hostname’lerde sessizce takılıyorsun.
Sıkça sorulan sorular
- Cloudflare'in RDP ürünü var mı?
- Hayır. Doğrulandı:
developers.cloudflare.com/rdp/diye bir ad alanı yok,llms.txt'te ürün girdisi yok, ayrı bir fiyat kalemi yok. Doküman birebir üç yöntem sayıyor: “Cloudflare offers three ways to secure RDP: Browser-based RDP · RDP with Cloudflare One Client · RDP with client-side cloudflared.” Sayfalar Cloudflare Tunnel connector bölümününuse-cases/altında yaşıyor. - Tarayıcı tabanlı RDP GA mi?
- Evet. Yaşam döngüsü: 21 Mart 2025 kapalı beta → 1 Temmuz 2025 açık beta → 22 Eylül 2025 GA. Sonraki eklemeler: pano kontrolleri (1 Mart 2026, GA), dosya transferi (7 Temmuz 2026, beta, tüm Zero Trust planlarında), toplu PDF yazdırma (16 Temmuz 2026, GA).
- Türkçe Q veya F klavye destekleniyor mu?
- Belgelenmemiş. GA notu genel bir iddia yapıyor: “Worldwide keyboard support. Whether your day-to-day is in Portuguese, Chinese, or something in between…” Ama hiçbir doküman Türkçe Q veya F düzenini açıkça saymıyor. Bu sayfada garanti verilmemiştir — üretime almadan önce kendi klavyenle test et.
- Tarayıcı tabanlı RDP, Access for Infrastructure'ın parçası mı?
- Hayır — en çok karıştırılan nüans bu. Birebir: “Access for Infrastructure currently supports SSH. To connect using other protocols, add a self-hosted private application. For browser-based SSH, RDP, or VNC, refer to browser-rendered terminal.” Tarayıcı RDP melez bir yapı: public hostname üzerinde “Self-hosted and private” tipinde bir Access uygulaması, artı hedef için infrastructure targets nesnesi.
- SSH'taki kısa ömürlü sertifikaların RDP karşılığı var mı?
- Yok. Access for Infrastructure SSH'ta “replaces traditional SSH keys with short-lived certificates” diyor. RDP için ise birebir: “Cloudflare will not configure user identifiers on the RDP target. Any user identifier used to authenticate must be pre-configured on the server.” Yani Cloudflare SSO ve MFA'yı Windows parolalarının önüne koyuyor; yerine geçmiyor.
- RDP oturum kaydı veya video tekrarı var mı?
- Yok. 510 KB'lık changelog tarandı, sıfır sonuç. Komut loglama da yalnızca SSH'a ait — infrastructure log alanları Hostname, Target ID, SSH user ve SSH logs. RDP oturumları için bir kayıt özelliği belgelenmiyor. Var diye yazma.
- Spectrum üzerinden 3389 açsam olmaz mı?
- Olur ama en zayıf seçenek bu. Business planında somut olarak: edge 3389'u farklı bir origin portuna eşleyemiyorsun (
origin_portEnterprise), IP Access Rules kullanamıyorsun, ve Proxy Protocol kullanamıyorsun — yani her Windows oturum açma olayı bir Cloudflare edge IP'si kaydediyor. Ayrıca Spectrum TCP trafiğine WAF uygulamıyor. Dürüst yargı: Spectrum-on-3389 kaba kuvvet hedefini senin IP'nden bir Cloudflare IP'sine taşıyor, ortadan kaldırmıyor. - İstemci tarafı cloudflared güvenli mi?
- Varsayılan olarak değil. Doküman birebir: “By default, anyone on the Internet can connect to the server using the hostname of the published application. To allow or block specific users, create a self-hosted application in Cloudflare Access.” Cloudflare bu adımı “(Recommended)” diye etiketliyor — zorunlu muamelesi yap.
- WARP'a kayıtlı olmak yetkilendirme mi?
- Hayır. Birebir: “By default, all devices enrolled in your organization can connect to the RDP server unless you build policies to allow or block specific users.” Ve Cloudflare'in kendi önerisi: “we recommend creating a catch-all Gateway block policy for your private IP space.”
- Bağlantı sessizce zaman aşımına uğruyor.
- Split Tunnels tuzağına takılmışsın. WARP varsayılan olarak RFC 1918 özel IP aralıklarını hariç tutuyor. Birebir: “you must configure Split Tunnels so that the IP/CIDR of your private network routes through the Cloudflare One Client.” Yapmazsan hata mesajı almıyorsun, sadece zaman aşımı.
- “Authenticate with Cloudflare One Client” ayarını açmalı mıyım?
- İki yol için zıt cevap — klasik karıştırma. Tarayıcı tabanlı RDP için birebir: “Authenticate with Cloudflare One Client is not supported for browser-based RDP and should remain turned off.” Ama yerel istemciyle (mstsc) kullanılan private uygulamada açık olmalı — çünkü mstsc 302 yönlendirmesini takip edemiyor.
- Maliyeti nasıl hesaplarım?
- Koltuk (seat) bazlı ve dikkat gerektiriyor. Birebir: “A user consumes a seat when they perform an authentication event… Once the total amount of seats in the subscription has been consumed, additional users who attempt to log in are blocked.” Ve kritik olan: “When you revoke a user, this action will terminate active sessions, but will not remove the user's consumption of an active seat.” Koltuğu boşaltmak için kullanıcıyı silmen gerekiyor. Servis token'ları koltuk tüketmiyor.
- Dosya transferi limitleri ne?
- Dosya başına 2 GB, yükleme başına en fazla 1.000 dosya, sürükle-bırak klasörlerde toplam 1.000 girdi. Ve önemli bir not: “Transfer history is discarded when the RDP session ends.” Özellik beta ama tüm Zero Trust planlarında.
- Windows makinemin public IP'si olmak zorunda mı?
- Hayır. Spectrum artık origin olarak bir Cloudflare Tunnel sanal ağı kullanabiliyor. Kısıtlar: “Virtual network origins are only supported for TCP and UDP applications. The origin must be a single private IP… Port ranges, hostname origins, and multiple addresses are not supported. Proxy Protocol is not currently supported, so
proxy_protocolmust be set tooff.”
İlgili servisler
- Cloudflare TunnelŞirket içi sunucunu, güvenlik duvarında port açmadan Cloudflare’e giden bir tünelle yayınlar.
- SpectrumHTTP olmayan TCP/UDP servislerini (SSH, oyun sunucusu, e-posta) Cloudflare arkasına alır.
- Accessİç uygulamalara VPN yerine identity ve device temelli erişim policy’leri koyar.
- GatewayÇalışanların DNS, HTTP ve ağ trafiğini filtreler; zararlı ve yasak siteleri engeller.
Bu sayfadaki fiyat ve özellik bilgileri 1 Eylül 2026 tarihinde Cloudflare’in resmî kaynaklarından doğrulanmıştır. Cloudflare fiyatlandırmasını önceden haber vermeden değiştirebilir; bağlayıcı bilgi içinresmî sayfaya bakın.