Bir oyun sunucusu DDoS saldırısı, kötü niyetli trafiğin sunucunuzun bant genişliğini ya da işlem kapasitesini doldurarak gerçek oyuncuları dışarıda bırakmasıyla başlar. Metin2, Minecraft ya da kendi yazdığınız bir C++ sunucusu fark etmez: kalıcı bir çözüm tek bir araca değil, üst üste binen katmanlara dayanır. Bu rehberde anti-DDoS sağlayıcısından çekirdek seviyesi firewall kurallarına kadar pratik bir savunma hattı kuruyoruz.
DDoS saldırıları oyun sunucularını nasıl hedefler
Oyun trafiği çoğunlukla düşük gecikme gerektirir ve UDP üzerinden akar; bu da saldırganlar için iki klasik vektör açar:
- Hacimsel (volumetric) saldırılar: UDP flood, DNS/NTP amplifikasyonu gibi yöntemlerle hattınızı Gbps mertebesinde doldurur. Bunları sunucu üzerinde durduramazsınız; trafik upstream'de temizlenmelidir.
- Protokol saldırıları: SYN flood, ACK flood gibi yöntemler bağlantı tablolarını ve
conntrackkapasitesini tüketir. - Uygulama katmanı saldırıları: Sahte login paketleri ya da sunucu protokolünüzün zayıf noktalarını hedefleyen istekler; bunlar düşük bant genişliğiyle bile CPU'yu boğabilir.
Doğru savunma, her vektörü kendi katmanında ele alır. Tek bir iptables kuralının her şeyi çözeceğini düşünmek en sık yapılan hatadır.
Birinci katman: Anti-DDoS sağlayıcı
Hacimsel saldırılara karşı tek gerçekçi savunma, yeterli temizleme (scrubbing) kapasitesine sahip bir sağlayıcının arkasında durmaktır. OVH/So you Start, Path.net ve oyun odaklı GRE tünel sağlayıcıları, trafiği kendi temizleme merkezlerinden geçirip yalnızca temiz paketleri sunucunuza iletir.
Sağlayıcı seçerken şunlara bakın:
- Temizleme kapasitesi (Tbps): Reklam edilen toplam değil, tek bir IP'ye ayrılan koruma önemlidir.
- Oyun protokolü farkındalığı: Genel HTTP/TCP filtreleri UDP oyun trafiğini yanlış pozitif olarak düşürebilir. Path.net gibi oyun odaklı çözümler özel kurallar sunar.
- Gecikme: Trafik temizleme merkezinden geçtiği için birkaç ms ek gecikme normaldir; oyuncularınıza coğrafi olarak yakın bir PoP seçin.
Cloudflare Spectrum, TCP tabanlı oyunlar ve proxy edilebilen protokoller için iyi bir seçenek olsa da, ham UDP oyun sunucuları için genellikle özel anlaşma gerektirir.
İkinci katman: Çekirdek ve firewall sertleştirmesi
Sağlayıcı hacimsel trafiği temizlese de, sunucunun kendisi protokol saldırılarına karşı sertleştirilmelidir. SYN flood'a karşı ilk adım SYN cookie'leri etkinleştirmektir:
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.core.somaxconn=1024
Bağlantı takip tablosunun (conntrack) taşmasını önlemek için kapasiteyi yükseltin:
sysctl -w net.netfilter.nf_conntrack_max=262144
Bu değerleri kalıcı kılmak için /etc/sysctl.d/99-ddos.conf içine yazın ve sysctl --system ile uygulayın.
Üçüncü katman: Rate limit ve bağlantı sınırları
Oyun portunuza gelen bağlantıları kaynak IP başına sınırlamak, düşük hacimli protokol saldırılarını eler. nftables ile IP başına eşzamanlı bağlantıyı ve yeni bağlantı hızını sınırlamak temiz bir yaklaşımdır:
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif "lo" accept
# IP başına 30'dan fazla eşzamanlı bağlantıyı reddet
tcp dport 30000 ct count over 30 drop
# Saniyede 20 yeni bağlantıyla sınırla
tcp dport 30000 ct state new limit rate over 20/second drop
tcp dport 30000 accept
}
}
Klasik iptables tercih ediyorsanız aynı mantık connlimit ve hashlimit modülleriyle kurulur:
iptables -A INPUT -p tcp --dport 30000 -m connlimit --connlimit-above 30 -j DROP
iptables -A INPUT -p tcp --dport 30000 -m hashlimit \
--hashlimit-mode srcip --hashlimit-above 20/sec \
--hashlimit-name game -j DROP
UDP oyun sunucuları için hashlimit ile paket hızını sınırlayabilirsiniz, ancak eşikleri gerçek oyuncu davranışına göre ayarlayın; çok agresif limitler yasal trafiği keser.
Dördüncü katman: Uygulama ve davranış filtreleri
En sinsi saldırılar, geçerli görünen ama sunucu mantığınızı zorlayan paketlerdir. Burada savunma uygulama içinde olmalı:
- Login throttling: Aynı IP'den birim zamanda kabul edilen oturum açma denemesini sınırlayın.
- Whitelist/allowlist: Yönetim portlarını (SSH, MySQL, panel) yalnızca bilinen IP'lere açın; oyun portunu herkese açık tutun.
- fail2ban: Log üzerinden anormal davranışı yakalayıp saldırgan IP'leri otomatik banlamak için kullanın. Özel bir filtre ve jail tanımıyla oyun sunucusu loglarınıza bağlayabilirsiniz.
- Paket doğrulama: Sunucu protokolünüzde el sıkışma (handshake) sırasında geçersiz/eksik paketleri erken reddedin; CPU'yu bunları işlemekle harcamayın.
İzleme: saldırıyı erken görmek
Savunma kadar görünürlük de önemlidir. vnstat ile bant genişliğini, iftop ile canlı bağlantıları izleyin; daha kalıcı bir kurulum için Prometheus + Grafana ya da basitçe Netdata kurun. Anormal trafiği erken yakalamak, kuralları saldırı sürerken ayarlamanıza imkân verir. Ayrıca conntrack -L | wc -l ile aktif bağlantı sayısını anlık kontrol edebilirsiniz.
Sık Sorulan Sorular
Sadece iptables ile DDoS'tan korunabilir miyim?
Hayır. iptables protokol ve düşük hacimli saldırılara karşı etkilidir, ancak hattınızı dolduran hacimsel bir saldırıyı sunucu üzerinde durduramazsınız; paketler zaten ağ arayüzünüze ulaştığında iş işten geçmiştir. Hacimsel koruma upstream'de, yani sağlayıcı seviyesinde yapılmalıdır.
Cloudflare oyun sunucumu korur mu?
Cloudflare'in standart proxy'si HTTP/HTTPS içindir ve ham oyun trafiğini geçirmez. TCP/UDP oyun protokolleri için Cloudflare Spectrum gibi ayrı bir ürün gerekir ve bu genellikle ücretli plan ya da özel anlaşma ister.
Oyun portu için rate limit ne olmalı?
Sabit bir değer yoktur; oyuncu sayınıza ve protokolünüze bağlıdır. Önce normal trafiği iftop ve conntrack ile ölçün, ortalama bağlantı hızının belirgin üzerine bir eşik koyun, sonra yanlış pozitif olmadığından emin olarak kademeli sıkılaştırın.
Sunucunuz saldırı altında mı, yoksa kalıcı bir koruma mı kurmak istiyorsunuz? Anti-DDoS sağlayıcı seçiminden firewall sertleştirmesine kadar oyun sunucunuzun savunma hattını birlikte kurabiliriz. Benimle iletişime geçin.