Oyun sunucusu DDoS koruması, oyun işletmeciliğinde "olursa" değil "olduğunda" diye konuşulan bir konudur. Kendi MMORPG sunucumuzu işletirken bunu birinci elden yaşıyoruz: rakip bir işletmeci, banlanan bir oyuncu veya sırf eğlence için saldıran biri, birkaç dolara kiralanan bir hizmetle sunucunuzu dakikalar içinde erişilemez hâle getirebilir. Web sitesine yapılan saldırıdan farklı olarak oyun sunucusunda saldırının bedeli anlıktır: oyuncular düşer, savaş ortasında bağlantı kopar, eşya kaybı itirazları gelir ve bir akşamlık kesinti sosyal medyada haftalarca konuşulur. Bu yazıda saldırı türlerini ve tek bir ürünle değil katmanlı bir yapıyla kurulan korumayı anlatıyoruz.
Oyun sunucuları neden farklı bir hedeftir?
Web sitelerinde trafik HTTP üzerinden gelir ve önüne bir ters vekil (reverse proxy) veya içerik dağıtım ağı koymak nispeten kolaydır. Oyun sunucuları ise genelde kendi ikili protokolleriyle TCP veya UDP üzerinden doğrudan konuşur; istemci sunucunun gerçek IP adresine bağlanır. Bu iki fark, web dünyasındaki hazır çözümlerin çoğunu devre dışı bırakır. Ayrıca oyun trafiği gecikmeye duyarlıdır: korumanın kendisi 50 ms eklerse oyuncular bunu hisseder. Yani koruma hem protokolü anlamalı hem de gecikme eklememelidir. Oyun altyapısındaki diğer darboğazları ayrı bir yazıda ele almıştık; DDoS, oradaki listenin en dışarıdan gelen maddesidir. Ek bir zorluk da ekonomidir: saldırının saatlik maliyeti saldırgan için çok düşük, sizin için kesinti ve itibar kaybı olarak çok yüksektir; savunma bu dengesizliği kabul ederek kurulur.
Saldırı türlerini ayırt etmek
Doğru savunma, saldırının hangi katmana geldiğini bilmekle başlar.
- Hacimsel (volumetrik) saldırılar: amaç bağlantı hattınızı doldurmaktır. UDP flood, DNS ve NTP yansıtma saldırıları bu gruptadır; onlarca, yüzlerce Gbps trafik üretilebilir. Sunucunuzun üstündeki hiçbir ayar bunu çözemez, çünkü trafik sunucuya ulaşmadan hat dolmuştur.
- Protokol saldırıları: SYN flood, ACK flood, parçalanmış paketler. Hattı doldurmasa bile sunucunun bağlantı tablosunu ve güvenlik duvarının durum takibini tüketir.
- Uygulama katmanı saldırıları: oyun protokolünü taklit eden paketler: binlerce sahte giriş isteği, karakter listesi sorgusu, oyuna giriş paketi. Hacmi küçüktür, bu yüzden hacimsel filtrelerden geçer; ama sunucu her birini işlemeye çalışırken gerçek oyunculara yanıt veremez.
Pratikte saldırganlar bunları karışık kullanır: önce hacimsel saldırıyla filtreleri meşgul eder, arkasından düşük hacimli uygulama katmanı saldırısıyla asıl hasarı verir.
Katman 1: Ağ kenarında hacim filtresi
Hacimsel saldırıya karşı tek gerçek çözüm, trafiğin sizin hattınıza ulaşmadan önce üst ağda (sağlayıcı veya koruma hizmeti tarafında) temizlenmesidir. Bu, sunucunuzun bulunduğu veri merkezinin DDoS temizleme kapasitesine sahip olması veya trafiğin bir temizleme merkezinden geçirilip tünelle size ulaştırılması anlamına gelir. Sunucu kiralarken sorulacak soru "DDoS koruması var mı" değil; "kaç Gbps’ye kadar, hangi katmanlarda ve oyun protokolleri için özel profil var mı" olmalıdır. Birçok sağlayıcının ücretsiz DDoS koruması, belirli bir eşiği aşan saldırıda IP adresinizi tamamen karartmaktır (null route); bu, saldırganın istediği sonuçtur. Trafiğin temizleme merkezinden geçirildiği modelde eklenen gecikmeyi mutlaka ölçün; Türkiye’deki oyuncular için yurt dışında temizlenen trafik, oyun deneyimini saldırı olmasa bile bozabilir.
Katman 2: Sunucu üzerinde protokol savunması
Hacim filtresinden geçen protokol saldırılarına karşı sunucunun kendisi hazırlanmalıdır. SYN cookies açılmalı, bağlantı takip (conntrack) tablosu büyütülmeli, nftables veya iptables ile IP başına yeni bağlantı hızı ve eşzamanlı bağlantı sayısı sınırlanmalıdır. Oyun portu dışındaki her port kapalı olmalı; sunucuda açık unutulmuş bir DNS veya NTP servisi, sizi başkasına yapılan saldırının yansıtıcısı yapar. Geçersiz bayrak kombinasyonları, hatalı boyutlu paketler ve oyun protokolünün hiç kullanmadığı paket türleri çekirdek düzeyinde düşürülmeli; bu kuralların ucuz olması önemlidir, çünkü saldırı anında her kural milyonlarca kez çalışır.
Katman 3: Oyun protokolünü tanıyan filtre
Asıl fark burada yaratılır ve bu katmanı hazır bir ürün sağlamaz; oyununuzu bilen biri yazar. Oyun sunucusu, her paketin geçerli bir oturuma ait olup olmadığını, el sıkışmanın tamamlanıp tamamlanmadığını ve paket sırasının protokole uyup uymadığını en erken aşamada denetlemelidir. Uygulanabilir önlemler: giriş aşamasında IP başına deneme sınırı ve kademeli bekleme; el sıkışmayı tamamlamayan bağlantıların kısa sürede düşürülmesi; henüz kimliği doğrulanmamış oturumlardan gelen pahalı isteklerin (karakter listesi, dünya verisi) reddedilmesi; oturum başına paket hızı sınırı ve sınırı aşanın sessizce kesilmesi. Bu kontroller oyun sunucusu kodunun en dış halkasında, ana döngüye girmeden önce çalışmalıdır; aksi halde saldırı paketleri tam da korumak istediğiniz döngüyü meşgul eder. Bu katmanın bir yan faydası daha var: aynı kurallar bot ve hile istemcilerinin ürettiği anormal paket desenlerini de yakalar; DDoS filtresiyle hile koruması burada kesişir.
Katman 4: Mimari kararlar
Bazı korumalar yazılımda değil, mimaride alınır. Giriş sunucusu ile oyun sunucularını ayırın; saldırı giriş sunucusuna gelirse içeride oynayanlar etkilenmez. Oyun sunucularının gerçek IP adreslerini oyuncu istemcisinden mümkün olduğunca gizleyin; istemci yalnızca bir yönlendirme katmanıyla konuşsun, böylece saldırgan arkadaki sunucuyu doğrudan hedefleyemez. Yama ve istemci indirme trafiğini oyun sunucusundan ayrı bir dağıtım katmanına taşıyın; yama günü trafiği saldırı gibi görünmesin ve saldırı yama dağıtımını durdurmasın. Web sitesi, forum ve panel oyun sunucusuyla aynı IP’de barınmasın; web tarafına gelen saldırı oyunu kapatmasın. Son olarak yedek bir IP bloğu ve hızlı DNS geçişi planı bulunsun; karartılan bir IP’den dakikalar içinde taşınabilmek saldırının ömrünü kısaltır. Saldırı sırasında ne olduğunu görebilmek de bir mimari karardır: paket sayacı, bağlantı sayısı ve kaynak IP dağılımı grafikleri olmadan hangi katmanın delindiğini anlayamazsınız.
Hazırlık ve tatbikat kontrol listesi
- Sağlayıcının DDoS temizleme kapasitesi (Gbps ve katman) ve null route politikası yazılı olarak biliniyor mu?
- Oyun protokolü için sağlayıcı tarafında özel koruma profili tanımlı mı?
- Sunucuda SYN cookies, conntrack boyutu ve IP başına hız sınırları ayarlı mı?
- Oyun portu dışındaki tüm portlar kapalı; DNS ve NTP gibi yansıtıcı servisler yok mu?
- Giriş aşamasında deneme sınırı ve kimliği doğrulanmamış oturum için istek reddi var mı?
- Giriş, oyun, yama ve web sunucuları ayrı IP’lerde mi?
- Saldırı anında trafik grafiği, paket türü ve kaynak dağılımı görülebiliyor mu?
- Yedek IP ve DNS geçiş planı test edildi mi; oyunculara bildirim kanalı hazır mı?
DDoS koruması bir ürün değil, bu dört katmanın birlikte çalıştığı bir düzendir ve her yeni saldırı tipinde güncellenir. Kendi sunucularımızda bu yapıyı işlettiğimiz için oyun sunucusu paketlerimiz ağ kenarı korumasıyla birlikte gelir; ayrıntıları oyun sunucusu hizmetimizde bulabilir, mevcut altyapınızın saldırı anında nerede kırılacağını birlikte test edebiliriz.