- #1
Konu Sahibi
: serkankacan
[REHBER] vSRO Güvenlik Mimarisi: Saldırı Türleri ve Korunma Yöntemleri
Sunucu Modülleri, Port Güvenliği, SQL Injection ve Exploit Önleme Rehberi
Sunucu Modülleri, Port Güvenliği, SQL Injection ve Exploit Önleme Rehberi
Merhaba değerli forum sakinleri,
Bir vSRO sunucusu açarken en kritik adımlardan biri sistem güvenliğini doğru kurgulamaktır. Silkroad Online sunucu dosyaları (vSRO v1.188) orijinal kaynak kodları (source code) elimizde olmayan, sızdırılmış ikili dosyalar (binary) üzerinde çalıştığı için yapısal zafiyetlere açıktır.
Bu rehberde sunucunuzu tehdit eden temel saldırı vektörlerini, sunucu modüllerinin görevlerini ve almanız gereken kesin önlemleri ele alıyoruz.
1. Saldırı Vektörleri Nelerdir?
Bir Silkroad sunucusuna yapılabilecek saldırılar temelde 4 kategoriye ayrılır:
- Hack (Sistem İhlali & Yetkisiz Erişim): Veritabanı veya sunucu modüllerindeki açıkları kullanarak en yüksek yetkiyle (SA/Admin) sisteme sızma girişimidir. En tehlikeli saldırı türüdür.
- Exploit (Protokol & Paket İstismarı): Sunucu dosyalarının (GameServer, ShardManager vb.) beklemediği biçimde bozuk paket göndererek modülü çökertme (crash) işlemidir.
- DDoS (Distributed Denial of Service): Sunucunun ağ bant genişliğini (bandwidth) veya paket işleme kapasitesini (PPS) tüketerek gerçek oyuncuların düşmesini sağlayan hacimsel saldırılardır.
- Botnet (Zombi Ağları): Ele geçirilmiş binlerce cihazdan aynı anda sahte TCP bağlantıları açarak kapı kilitlenmesi (syn flood / handshake exhaustion) oluşturan organize saldırılardır.
2. HACK Saldırıları ve Korunma Yolları
Silkroad mimarisinde en bilinen ihlal yöntemi, SMC üzerinden GlobalManager'a gönderilen SQL Injection (
'select 1,1 --) sorgularıdır. Aynı mantık web panellerinde (kayıt, şifre sıfırlama, silk yükleme) de geçerlidir. Web üzerinden yapılan başarılı bir SQL Injection saldırısı, saldırgana xp_cmdshell ile doğrudan Windows işletim sisteminde komut çalıştırma yetkisi verebilir.Nasıl Korunulur?
- Parametreli Sorgular Kullanın (Prepared Statements): Tek tırnak temizleme (
Replace("'", "''")) pratik bir çözüm olsa da gelişmiş encoding bypass yöntemlerini her zaman engellemez. Web panelinizde daima Parametreli Sorgu (SqlCommand with Parameters) veya ORM (Entity Framework, Dapper vb.) kullanın.
C#:
// Hatalı / Güvensiz Kullanım:
string query = "SELECT * FROM TB_User WHERE StrUserID = '" + TextBox1.Text + "'";
// Güvenli / Parametreli Kullanım:
SqlCommand cmd = new SqlCommand("SELECT * FROM TB_User WHERE StrUserID = @UserID", conn);
cmd.Parameters.AddWithValue("@UserID", TextBox1.Text.Trim());
- GlobalManager Portunu Dış Dünyaya Kapatın: SMC bağlantısı sadece yerel ağdan (127.0.0.1) veya güvenli bir VPN / RDP üzerinden yapılmalıdır.
- SQL Server Portunu (1433) Asla Dışarı Açmayın: Veritabanı ve web sitesi aynı sunucuda değilse, portu sadece web sunucusunun statik IP adresine izin verecek şekilde güvenlik duvarında sınırlandırın.
3. Sunucu Modüllerini Tanıyalım (srNodeData.ini & Port Yapısı)
Doğru bir güvenlik duvarı (Firewall) yapılandırması için her modülün ne iş yaptığını ve dışarıya açık olup olmaması gerektiğini bilmeniz gerekir:
| Modül Adı | srNodeData Girişi | Varsayılan Port | Dış Erişim Durumu | Görevi |
|---|---|---|---|---|
| GlobalManager | [entry0] | Özel Port | KAPALI | Tüm modüllerin durumunu kontrol eder. SMC bu modüle bağlanır. |
| MachineManager | [entry1] | Özel Port | KAPALI | Birden çok sunucunun senkronize çalışmasını sağlar. |
| GatewayServer | [entry2] | 15779 | AÇIK (Guard İle) | Oyuna giriş ve erişim yetkilerini kontrol eder. |
| DownloadServer | [entry4] | 15881 | AÇIK | Oyun güncellemelerini (patch) launcherlara gönderir. |
| FarmManager | [entry5] | Özel Port | KAPALI | Sunucu kümeleme (server farm) yapısını izler ve yönetir. |
| AgentServer | [entry7] | 15884 | AÇIK (Guard İle) | Oyuncuların aktif oturumlarını ve bağlantılarını taşır. |
| ShardManager | Dahili | Dahili | KAPALI | Oyunun zamanlanmış görevlerini (schedule) ve cash sistemini yönetir. |
| GameServer | Dahili | Dahili | KAPALI | Oyun içi dünyayı, fizik motorunu ve harita eylemlerini simüle eder. |
| SQL Server | Dahili | 1433 | KAPALI | Tüm oyun ve hesap veritabanlarını barındırır. |
| FTP / IIS | Dahili | 21 / 80 / 443 | KONTROLLÜ | Guild simgeleri ve web sitesi içindir. Dizin listeleme kapalı olmalıdır. |
Altın Kural' Alıntı:srNodeData.ini içerisindeki portlardan GatewayServer (entry2), DownloadServer (entry4) ve AgentServer (entry7) haricindeki tüm portlar dış erişime mutlaka kapatılmalıdır!
4. EXPLOIT Tehditleri ve Korunma Yolları
Sistemdeki zafiyetler genellikle yazılım geliştirilirken gözden kaçmış noktalardır. Elimizde resmi kaynak kodları (source) bulunmadığından doğrudan exe üzerinde müdahale etmek zordur.
Exploit Korumasında Neler Yapılmalı?
- ASM ve Reverse Engineering: Exe dosyalarını ileri düzey Assembly bilgisi ile debug ederek doğrudan yamalamak (patch).
- Exploit / Guard Yazılımları Kullanmak: En yaygın ve pratik yöntemdir. Güvenilir bir Guard/Filter araya girerek gelen bozuk ve manipüle paketleri sunucuya ulaşmadan düşürür.
Özet Güvenlik Kontrol Listesi:
- ✔ GatewayServer, DownloadServer ve AgentServer dışındaki tüm portlar güvenlik duvarından kapatıldı.
- ✔ SQL Server portu (1433) dış erişime kapatıldı.
- ✔ Web panelinde SQL Injection'a karşı tek tırnak kontrolü veya parametreli sorgular uygulandı.
- ✔ IIS üzerinde dizinlere göz atma (Directory Browsing) ve gereksiz FTP erişimleri kapatıldı.
- ✔ Güvenilir bir exploit koruma / Guard programı sisteme dahil edildi.
Sorularınızı ve eklemek istediklerinizi konu altından paylaşabilirsiniz. Herkese iyi forumlar!

