DayZ sunucusunu DDoS saldırılarına karşı koruma

Yayınlanma tarihi 19 dk okuma

Bir DayZ sunucusunun gerçekten hangi portlara ihtiyaç duyduğu, Steam sorgu portunu, BattlEye RCon'u, giriş kuyruğunu ve yeniden başlatmadan sonraki başlangıç aşamasını nasıl güvene alacağınız ve hangi saldırı hacminden sonra yalnızca sunucunun önündeki ağda yapılan filtrelemenin işe yaradığı.

Akşam oyunun tam ortasında bütün oyuncuları atan ve ardından dakikalarca sunucu tarayıcısından kaybolan bir DayZ sunucusunun donanım sorunu yaşaması nadirdir. Çoğunlukla bir saldırı sürüyordur, hem de tam oyuncuların en kalabalık olduğu ya da planlı yeniden başlatmanın yaklaştığı anda. DayZ sunucusunu DDoS saldırılarına karşı korumak isteyen kişi bu yüzden iki şeye birden ihtiyaç duyar: sunucuda temiz bir port açma düzeni ve sunucunun önündeki ağda yapılan filtreleme. Bu yazı önce ek maliyet olmadan kendiniz neleri güvene alabileceğinizi, ardından bu önlemlerin teknik olarak nerede bittiğini, sonunda da sunucunun önünde neler olması gerektiğini gösteriyor.

Tüm bilgiler, serverDZ.cfg dosyasıyla çalışan kendi DayZ dedicated sunucunuz içindir; Windows Server üzerinde mi yoksa Debian ve Ubuntu üzerinde bir uyumluluk katmanı üzerinden mi çalıştığı fark etmez. Bohemia Interactive, stable dal için üretime hazır yerel bir Linux sunucu programı dağıtmıyor; deneysel Linux derlemesi yalnızca deneysel istemcileri kabul ediyor. Linux komutları root kullanıcısı için yazılmıştır, normal kullanıcı olarak başlarına sudo ekleyin.

Saldırı şu anda sürüyorsa: serverDZ.cfg dosyasında şimdi hiçbir şey değiştirmeyin ve sunucuyu yeniden başlatmayın. Bir DayZ yeniden başlatması modları ve merkezi ekonomiyi yeniden yükler ve size, sunucunun kesinlikle çevrimdışı olduğu birkaç dakikaya mal olur. Önce ölçüm değerlerini kaydedin (“Kayıt tutma” bölümüne bakın), saldırıdan sonra bunlar kaybolur.

DayZ sunucuları neden bu kadar sık DDoS saldırılarının hedefi olur

DayZ, bir sunucuyu rahat bir hedefe dönüştüren birkaç özelliği bir arada taşıyor. Birincisi, bir topluluk sunucusu adresini kendiliğinden yayınlıyor: Oyunun sunucu tarayıcısında ve DZSA Launcher'da görünebilmesi için Steam sorgularını yanıtlaması gerekiyor ve bu yanıt IP adresi ile portu düz metin olarak taşıyor. Yani bir saldırganın hiçbir şeyi ortaya çıkarması gerekmez, yalnızca bir listeyi okuması yeter.

İkincisi, bir DayZ sunucusunun günlük akışı herkese açıktır. Pratikte bütün projeler her üç ila dört saatte bir otomatik olarak yeniden başlıyor, bunu sohbet mesajıyla duyuruyor ve planı Discord'a yazıyor. Tam bu zaman aralığına denk gelen bir saldırı iki kat etkili olur: Sunucu zaten o anda erişilebilir değildir ve bekleme alanında takılı kalan oyuncular başka yere gider.

Üçüncüsü, oyuncular için ortada duran şey büyüktür. DayZ'de yanlış dakikada yaşanan bir kesinti yalnızca hayal kırıklığı değil, kaybolan ekipman, yarıda kalan raidler ve dünyada korumasız duran bir üs anlamına gelir. İşte bu yüzden banlanmış oyuncular, birbirine düşman gruplar ve rakip projeler en sık görülen sipariş verenlerdir. Yaygın booter hizmetlerinden biri üzerinden yapılan bir saldırı, tetikleyen kişiye ne beceri ne de anlamlı bir para harcaması getirir.

Dördüncüsü, DayZ trafiğinin tamamı UDP üzerinden çalışır. UDP'de talep edilebilecek bir bağlantı kurulumu yoktur ve gönderen adresi sahte olabilir. Yani bir saldırganın yük oluşturmak için sunucunuza girmesi de sunucunuza doğru biçimde seslenmesi de gerekmez. Bundan üreticinin bile etkilendiğini Şubat 2025 gösterdi: Bohemia Interactive'in DayZ ve Arma Reforger için çevrimiçi hizmetleri bir haftadan uzun süre DDoS ateşi altında kaldı, 3 Şubat 2025'te doğrulandı ve 6 Şubat 2025'te hâlâ sona ermemişti, topluluk sunucuları da bundan etkilendi. Bir DDoS saldırısının ayrıntıda ne olduğunu DDoS saldırısı nedir? yazısı anlatıyor.

Bir DayZ sunucusunun portları: bilgi tablosu

Bir DayZ sunucusu yalnızca UDP konuşur. TCP oyun portu yoktur. DayZ'de gerçekten sabit olan tek değer, oyun portu olarak 2302 UDP'dir; geri kalan her şey yapılandırılabilir ve barındırıcıya göre değişir. Bu yüzden bir standart değere güvenmek yerine kendi başlatma satırınıza ve kendi serverDZ.cfg dosyanıza bakın.

Port Protokol Ne için Nerede ayarlanır Açık ağa ait mi
2302 UDP Oyun portu, sesli iletişim dâhil bütün oyun trafiği başlatma satırındaki -port=2302 evet
2303 ila 2305 UDP Engine'in birlikte kullandığı, oyun portunun üzerindeki blok -port değerinden türer genellikle evet
2305 veya 27016 UDP Steam sorgu portu: sunucu tarayıcısındaki ve DZSA Launcher'daki kayıt serverDZ.cfg dosyasındaki steamQueryPort evet, yoksa sunucu görünmez olur
serbestçe seçilebilir, yaygın olarak 2305 veya 2310 UDP BEC ya da DaRT gibi yönetim araçları için BattlEye RCon BEServer_x64.cfg dosyasındaki RConPort hayır
22 TCP İşletim sisteminin SSH erişimi sshd_config yalnızca kendi adresiniz için
3389 TCP Windows sunucularında uzak masaüstü sistem ayarı hayır
8080 ve 2022 TCP Bir oyun panelinin web arayüzü ve SFTP'si, burada Pterodactyl örneğinde panel yapılandırması hayır

İki değer düzenli olarak karışıklık yaratıyor, bu yüzden açıklaması burada. Steam sorgu portu: Bohemia'nın birlikte verdiği örnek yapılandırma steamQueryPort = 2305; ayarlarken barındırıcıların büyük bir bölümü 27016 UDP kullanıyor. İki değer de geçerlidir, belirleyici olan yalnızca kendi dosyanızdaki değerdir. BattlEye RCon portu: Burada hiçbir bağlayıcı standart yoktur. Yaygın kural oyun portu artı üç, yani 2305'tir, başka barındırıcılar 2310 kullanır. DayZ 1.13'ten bu yana BattlEye, BEServer_x64.cfg dosyasındaki RConPort parametresini güvenilir biçimde değerlendiriyor, öncesinde port zor tahmin edilirdi.

Bundan, birçok işletmecinin düştüğü bir tuzak çıkar: steamQueryPort ile RConPort değerlerini asla aynı değere ayarlamayın. Yapılandırmanız Steam sorgusu için 2305'i öngörüyorsa RCon başka bir porta, örneğin 2310'a aittir.

Steam sorgu portu neden en hassas porttur

Steam sorgu portu üç sorguyu yanıtlar: A2S_INFO, A2S_PLAYERS ve A2S_RULES. A2S_INFO sunucu adını, haritayı, oyuncu sayısını ve sürümü verir, A2S_PLAYERS bağlı oyuncuların adlarını, A2S_RULES ise ayarlanmış sunucu değişkenlerini. Bu yanıtların her biri, kendisini tetikleyen istekten belirgin biçimde daha büyüktür ve portu iki kat tehlikeli yapan tam olarak budur.

Hedef olarak sizin için bu şu anlama gelir: Bir saldırgan istek başına birkaç baytla sorgu portunuzu meşgul edebilirken sunucunuz her seferinde eksiksiz bir yanıt derleyip gönderir. Üçüncü kişiler için ise şu anlama gelir: Bir saldırgan sunucunuzu sahte gönderen adresiyle sorgulayıp yanıtları asıl hedefine yönlendirebilir. Sunucunuz o zaman yalnızca kurban değil, aynı zamanda amplifikasyon aracıdır. Valve bu yüzden Aralık 2020'de A2S_INFO'ya bir challenge sorgusu ekledi: Sunucu önce bir rastgele sayıyla yanıtlar ve soran tarafın bu sayıyı geri göndermesi gerekir. Bu, amplifikasyonu zayıflatır ama sona erdirmez, çünkü her sorgu bu yoldan geçmez.

DayZ'nin burada başka oyunlarda olmayan bir özelliği var: Size iki ayrı sunucu listesi sorgu gönderir, yerleşik topluluk sunucu tarayıcısı ve yaygın olarak kullanılan DZSA Launcher. Bu yüzden sorgu portunu öylece kapatmak bir seçenek değildir, çünkü o zaman doğrudan bağlantı çalışmaya devam ettiği hâlde projeniz iki listeden de kaybolmuş olur. Doğru yanıt, kapatmak değil sınırlamaktır.

Para harcamadan önce kendiniz neler yapabilirsiniz

Bu bölüm en uzunu ve bu bilinçli bir tercih. Düzgün yapılandırılmış bir DayZ sunucusu, nerede barındırıldığından bağımsız olarak küçük ve orta ölçekli saldırılara kendi gücüyle dayanır.

1. Envanter: DayZ sunucunuz gerçekten hangi portları açıyor

Tek bir güvenlik duvarı kuralı yazmadan önce sunucunuzun dışarıya ne sunduğuna bakın. Tahmin etmeyin, bakın. Linux altında:

ss -lnup
ss -lntup

Windows Server altında komut istemi aynı tabloyu verir:

netstat -ano -p UDP | findstr "2302 2303 2304 2305 27016"

İlgi çekici olan, yerel adresi gösteren sütundur. 0.0.0.0:2302 “bütün internetten erişilebilir” anlamına gelir, 127.0.0.1:2310 ise “yalnızca yerel” demektir ve bir açma kuralına ihtiyaç duymaz. Ardından bir rehbere güvenmek yerine gerçek değerleri doğrudan yapılandırma dosyalarınızdan okuyun:

grep -iE "steamQueryPort|maxPlayers|password|enableWhitelist|verifySignatures" serverDZ.cfg
grep -iE "RConPort|RestrictRCon" battleye/BEServer_x64.cfg

Saldırganın bakışını, başka bir makineden çalıştırılan ve dışarıdan yapılan bir UDP port taraması verir:

nmap -Pn -sU -p 2302-2310,27015-27020 SUNUCU.IP.ADRESİNİZ

2. Yalnızca başlatma satırının ve serverDZ.cfg dosyasının gerçekten ihtiyaç duyduğu portları açma

DayZ için dışarıya iki açma yeter: oyun portu bloğu ve sorgu portu. Geri kalan her şey kendi adresinize kısıtlanır ya da hiç yayınlanmaz. UFW ile bu şöyle görünür, hem de tam bu sırayla, ki kendinizi dışarıda bırakmayın:

ufw allow 22/tcp comment 'SSH'
ufw allow 2302:2305/udp comment 'DayZ oyun portu'
ufw allow 27016/udp comment 'DayZ Steam Query'
ufw allow from 203.0.113.10 to any port 2310 proto udp comment 'BattlEye RCon'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

203.0.113.10 adresini kendi adresinizle, 27016'yı ise gerçekten kendi steamQueryPort satırınızda duran değerle değiştirin. Kurtarma yolu da dâhil tam rehberi Kendinizi dışarıda bırakmadan UFW güvenlik duvarı kurma yazısında bulursunuz. Bir Windows sunucusunda aynı ilke geçerlidir: port grubu başına bir gelen kural, kendi adresinize sınırlanmış uzak masaüstü, geri kalan her şey engelli.

3. Steam sorgu portunu kapatmak yerine sınırlama

Kaynak adres başına bir üst sınır, gerçek sunucu listelerini sorgu flood'undan ayırır. Bir sunucu tarayıcısı size saniye aralıklarıyla sorar, bir saldırgan milisaniye aralıklarıyla:

iptables -I INPUT -p udp --dport 27016 -m hashlimit --hashlimit-name dayz_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p udp --dport 2302 -m hashlimit --hashlimit-name dayz_game --hashlimit-mode srcip --hashlimit-above 600/sec --hashlimit-burst 900 -j DROP

İlk kural, aynı kaynaktan gelen Steam sorgularını saniyede kalıcı olarak ondan fazla olduğunda düşürür, ikincisi oyun paketlerini saniyede 600'den fazla olduğunda. İki sayı da başlangıç değeridir, kesin doğrular değil. 60 oyuncuyla dolu bir sunucu boş bir sunucudan belirgin biçimde daha fazla paket üretir ve fazla sıkı ayarlayan kişi kendi oyuncularını dışarı atar ya da sunucu listesinden düşer. Önce normal işletimde bir hafta ölçün.

Salt iptables kuralları bir yeniden başlatmadan sonra kaybolur. Debian ve Ubuntu'da şöyle kaydedilir:

apt-get install -y iptables-persistent
netfilter-persistent save

UFW altında bu tür kurallar /etc/ufw/before.rules dosyasına aittir, çünkü aksi hâlde bir sonraki ufw reload komutunda kaybolurlar. Buna ek olarak Steam sunucu kütüphanesi, bağlantısız paketler için kendi frenini taşır: STEAM_GAMESERVER_RATE_LIMIT_200MS ortam değişkeni, 200 milisaniyelik bir pencerede ayarlanan değerden fazlası geldiği anda bir adresin bütün A2S paketlerini düşürür.

Üçüncü nokta hiçbir şeye mal olmaz: Discord botunuz ya da proje sayfanız oyuncu durumunu gösteriyorsa sunucuyu ziyaretçinin tarafından sorgulamayın, sonucu sabit aralıklarla önbelleğe alın. Böylece çok ziyaret edilen bir durum sayfası, ziyaretçi başına bir sorgu yerine aralık başına bir sorgu üretir.

4. BattlEye RCon'u açık ağdan çekme

BattlEye, DayZ'nin anti-cheat bileşenidir ve serverDZ.cfg dosyasında BattlEye = 1; ile açılır. Uzaktan yönetim ise kendi dosyasında durur: BEServer_x64.dll dosyasının yanındaki BattlEye dizinindeki BEServer_x64.cfg dosyasında, ki bu dizini başlatma satırı -BEpath= ile belirler:

RConPassword UzunRastgeleParolanız
RConPort 2310
RestrictRCon 0

Buna dair üç kural. Birincisi: RCon portu UDP'dir, TCP değil. Yanlışlıkla proto tcp diyen bir güvenlik duvarı kuralı hiçbir şeyi filtrelemez ve aynı zamanda yönetim araçlarını boşa çalıştırır. İkincisi: Portu yöneticilerinizin adreslerine sınırlayın. Sabit adresi olmayan kişi portu dışarıdan tamamen kapatır ve yönetim aracını, SSH ya da uzak masaüstü üzerinden erişilebilen sunucunun kendisinde başlatır. Üçüncüsü: RestrictRCon 1, RCon üzerinden yürütülebilen komutları sınırlar ve birden fazla kişinin erişimi olduğu anda doğru ayardır.

Açık bir RCon portu aynı anda iki şeydir: parola denemeye bir davet ve flood yapılabilecek bir başka UDP portu. Açma yalnızca bir avuç adres için geçerli olduğu anda ikisi de ortadan kalkar.

5. Giriş kuyruğu, beyaz liste ve slot tükenmesi

DayZ bağlantıları hepsini aynı anda değil, bir kuyruk üzerinden işler. serverDZ.cfg dosyasındaki beş değer bu kuyruğu yönetir:

maxPlayers = 60;
loginQueueConcurrentPlayers = 5;
loginQueueMaxPlayers = 100;
guaranteedSlots = 10;
maxPing = 200;

loginQueueConcurrentPlayers kaç oyuncunun aynı anda içeri alınacağını belirler (ön ayar 5), loginQueueMaxPlayers kuyruğun kendisini sınırlar (yaygın değerler 100 ile 500 arasında). Slot tükenmesi tam burada başlar: Bir saldırganın bant genişliğine ihtiyacı yoktur, yalnızca kuyruğu doldurmaya yetecek kadar hesaba ya da bağlantı denemesine ihtiyacı vardır. Sunucu teknik olarak kusursuz çalıştığı hâlde gerçek oyuncular artık içeri giremez. guaranteedSlots, tam bu durumda sunucuya kendiniz girebilmeniz için ekibinize yer ayırır.

Buna karşı yerleşik beyaz liste yardımcı olur. enableWhitelist = 1; ile etkinleştirilir ve ardından, satır başına bir Steam64 kimliği içeren profiles/whitelist.txt dosyasını okur. Listede olmayan her kimlik bağlantıda reddedilir. Dosya sunucu başlangıcında okunur, yani değişiklikler bir yeniden başlatma gerektirir. serverDZ.cfg dosyasındaki ek bir password benzer biçimde çalışır ama daha zayıftır, çünkü bir parola elden ele geçer, bir Steam64 kimliği ise geçmez.

Bu arada bir şey net olmalı: Beyaz liste oyuncu yerlerinizi korur, hattınızı korumaz. Sunucunuzu flood ile dolduran bir saldırgan zaten katılmak istemiyor. Paketleri reddedilir, ama buna rağmen ulaşmıştır ve mesele tam olarak budur.

6. Modlar, imza doğrulaması ve yeniden başlatmadan sonraki zaman aralığı

Modlar DayZ'de yalnızca bir konfor konusu değil, aynı zamanda saldırı yüzeyinin bir parçasıdır. serverDZ.cfg dosyasındaki dört ayar her durumda yapılmış olmalıdır:

verifySignatures = 2;
forceSameBuild = 1;
allowFilePatching = 0;
BattlEye = 1;

verifySignatures = 2 her PBO dosyasını ilgili .bisign imzasına karşı denetler ve bunun için keys klasöründe uygun .bikey dosyalarına ihtiyaç duyar. forceSameBuild = 1 sunucudakiyle tam olarak aynı oyun sürümünü talep eder. allowFilePatching = 0 değiştirilmiş oyun dosyalarıyla başlayan istemcileri reddeder. Bu ayarların hiçbiri hacimsel bir saldırıyı durdurmaz, ama üçü birlikte, değiştirilmiş bir istemcinin sunucunuzu yoldan çıkardığı yolu kapatır.

İkinci nokta daha önemlidir ve neredeyse her zaman gözden kaçar: başlangıç aşaması. Bir DayZ sunucusu başlangıçta önce başlatma satırındaki mod listesini, ardından bütün loot tablolarıyla merkezi ekonomiyi yükler. Çok sayıda modu olan bir sunucuda bu rahatça birkaç dakika sürer ve bu süre boyunca sunucu tek bir Steam sorgusunu bile yanıtlamaz:

./DayZServer -config=serverDZ.cfg -port=2302 -profiles=./profiles -BEpath=./battleye -mod=@CF;@Modunuz;@BirBaskaMod -cpuCount=4 -dologs -adminlog -netlog -freezecheck

Pratikte her proje her üç ila dört saatte bir yeniden başladığı ve bu planı bir de duyurduğu için, zaman aralığını bir saldırganın yakalaması çok kolaydır. Üç karşı önlem etkilidir ve hiçbir şeye mal olmaz. Mod listesini mümkün olduğunca kısa tutun, her ek mod tam bu aralığı uzatır. Yeniden başlatma saatlerini tam saat yerine küsuratlı değerlere koyun. Ve başlangıcınızın gerçekten ne kadar sürdüğünü tahmin etmek yerine bir kez ölçün: timeStampFormat = "Full"; ve ayarlanmış bir logFile ile süre daha sonra logda durur.

7. Bağlantı izleme, alma arabelleği ve kernel parametreleri

Sık gözden kaçan bir darboğaz, kernel'in bağlantı izlemesidir. UDP bağlantı tanımasa da kernel yine de kaynak ve hedef adres çifti başına bir kayıt oluşturur. Tablo dolduğunda sunucu meşru paketleri de düşürür ve logda “nf_conntrack: table full” yazar. Durumu ve üst sınırı şu komut gösterir:

sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max

Salt bir oyun sunucusu için temiz çözüm, oyun trafiğini hiç izlettirmemek ve buna ek olarak ağ kartının alma arabelleğini ile kuyruğunu büyütmektir:

iptables -t raw -A PREROUTING -p udp --dport 2302 -j NOTRACK
iptables -t raw -A OUTPUT -p udp --sport 2302 -j NOTRACK
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.rmem_default=1048576
sysctl -w net.core.netdev_max_backlog=5000
sysctl -w net.netfilter.nf_conntrack_max=524288

Dikkat: NOTRACK ile durum bilgisi tutan kurallar birbirini dışlar. Oyun portunu izlemeden çıkaran kişi bu port için artık -m conntrack --ctstate içeren bir kural kullanamaz, yoksa açma kuralı işlemez. Kalıcı olması için sysctl değerleri /etc/sysctl.d/ dizinine aittir, yoksa bir sonraki yeniden başlatmadan sonra kaybolurlar.

8. IP adresiniz sunucu tarayıcısında duruyor

Burada hayalcilik yerine dürüstlük işe yarar: Herkese açık bir DayZ sunucusunun IP adresi gizli tutulamaz. Bir kez bağlanmış her oyuncu onu bilir, sunucu tarayıcısı onu yayınlar ve DZSA Launcher onu önbelleğe alır. Bir adres değişikliği size saatler kazandırır, nadiren günler.

Daha etkili olan iki alışkanlıktır. Ham IP adresini hiçbir yerde ayrıca yayınlamayın, yani ne sabitlenmiş Discord gönderisinde ne de proje sayfasında. Ve DNS kayıtlarınızı temizleyin: Önceki adrese işaret eden, unutulmuş bir A kaydı her değişikliği etkisiz kılar ve değişikliklerin çoğu tam bunda başarısız olur. Eski sunucuda hâlâ bir durum hizmeti çalıştıran kişi yeni adresi de hemen ele verir.

9. Kayıt tutma, böylece saldırı anında tahmin yürütmek zorunda kalmazsınız

En önemli adım, neredeyse hiç kimsenin önceden atmadığı adımdır: her şey normal çalışırken bir karşılaştırma temeli oluşturmak. Normal değer olmadan bir olaydan sonra saniyede 40.000 paketin çok mu olduğunu yoksa sadece cumartesi akşamı mı olduğunu söyleyemezsiniz. Sunucu tarafında bunun için yerleşik logları açarsınız:

timeStampFormat = "Short";
logAverageFps = 300;
logPlayers = 300;
logFile = "server_console.log";

logAverageFps burada DayZ'nin verdiği en dürüst değerdir. Oyuncu sayısı aynı kalırken sunucu kare hızı düşüyorsa bu bir mod ya da ekonomi sorunudur. Kare hızı sabit kalırken oyuncular dışarı atılıyorsa sorun ağdadır. Sistem tarafında ölçümler apt-get install -y vnstat sysstat ile kalıcı olarak arka planda çalışır ve bir olay sırasında dört komut yeter:

sar -n DEV 1 10
ip -s link show eth0
dmesg -T | tail -50
tcpdump -ni eth0 udp port 2302 -c 200 -q

tcpdump için şu geçerlidir: her zaman -c ile sınırlayın, tam yük altında alınan bir paket kaydı hâlihazırda aşırı yüklü bir sunucuya ek yük getirir. Değerleri nasıl yorumlayacağınız DDoS saldırısını tanıma yazısında.

Kendi korumanızın bittiği yer: bant genişliği ve paket hızı

Şimdi hiçbir yapılandırma dosyasının çözemeyeceği bölüm. Buraya kadarki tüm önlemler sizin sunucunuzda, yani hattın sonunda çalışır. Bir güvenlik duvarı kuralı, kabloyu çoktan geçmiş bir paket hakkında karar verir. Paketi düşürebilirsiniz, ama gönderilmemiş hâle getiremezsiniz.

Gösterge Değer Bunun DayZ sunucunuz için anlamı
Tipik bir oyun sunucusunun bağlantısı 1 Gbit/s saniyede 125 megabayt, sonrasında hat dolar
64 baytlık paketlerde paket hızı 1 Gbit/s içinde saniyede yaklaşık 1,49 milyon paket normal bir sunucu kernel'i bunların yalnızca birkaç yüz binini işler
Oyun sunucusu projelerine yönelik yaygın saldırı hacmi 5 ila 50 Gbit/s bağlantınızın beş ila elli katı
KernelHost sunucularında filtrelenen zirve değer saniyede 41,5 milyondan fazla pakette 473,4 Gbit/s'nin üzerinde bu büyüklükte hiçbir yerel ayar artık işlemez
KernelHost'ta bir oyun sunucusuna karşı filtrelenen UDP flood'u 112,2 Gbit/s'nin üzerinde sunucunun önündeki ağda son bulmalıdır
serverDZ.cfg dosyasında maxPlayers ön ayarı 60 saniyedeki paket cinsinden kendi normal değerinizi ölçmeniz gerekir, o değer proje başına farklıdır

DayZ'de paket hızı çoğu zaman bant genişliğinden önce vurur ve bunun basit bir nedeni var: Oyun trafiği az sayıda büyük paketten değil, çok sayıda küçük UDP paketinden oluşur. Bu yüzden hattınızı üçte birine kadar bile doldurmayan bir saldırı yine de sunucunuzu felç edebilir, çünkü işlem zamanı düşürme işine gider. İşletmeciler bunu “doluluk hiç de yüksek değildi, buna rağmen herkeste lag sıçramaları oldu ve sırayla dışarı atıldılar” biçiminde yaşar.

Hacimsel saldırılar sunucunun önündeki ağda son bulmalıdır. Bu bir ürün iddiası değil, fizik.

DayZ DDoS koruması: KernelHost buna karşı ne koyuyor

Her sunucuda çalışan sürekli koruma

KernelHost'un DDoS koruması iki kademeli kuruludur ve siz herhangi bir şeyi açmak, sipariş etmek veya yapılandırmak zorunda kalmadan kalıcı olarak etkindir:

  • 1. kademe: küresel scrubbing ağında 17 Tbps mitigasyon kapasitesi. Hacimsel saldırılar, veri merkezine ulaşmadan önce kaynaklarına yakın bir noktada temizlenir.
  • 2. kademe: Frankfurt am Main'de 3,2 Tbps ile Arbor gerçek zamanlı filtreleme. Doğrudan sunucunun önünde protokole özgü kalıplar tanınır ve paket paket düşürülür.

İki özellik belirleyicidir. Koruma kalıcı olarak çalışır ve önce bir saldırıya tepki vermek zorunda değildir, yani başlangıçta sunucunun kayıp olduğu dakikalar yaşanmaz. Ayrıca null routing kullanılmaz: IP adresiniz ağda kalır, yalnızca zararlı paketler düşürülür. IP adresini ağdan çeken kişi, sizin açınızdan saldırganla aynı sonuca ulaşır. Hangi oyunların ve protokollerin kapsandığını Gerçek zamanlı oyun sunucusu DDoS koruması yazısı listeliyor.

Sürekli ateş altındaki projeler için Advanced DDoS Protection

Bazı projelere ara sıra değil, hedefli biçimde ve haftalar boyunca saldırılır. Bunun için ayda 50,00 EUR'dan başlayan, PrePaid ve asgari süresi olmayan Advanced DDoS Protection var. Fark, daha fazla kapasitede değil, kontrolde:

  • Dedicated koruma IP'si: Frankfurt çekirdek ağından verilir ve sunucunuz kendi ağı içinde bu adrese geçirilir. Sizin tarafınızda hiçbir değişiklik gerekmez.
  • Kendiniz yönetebileceğiniz, port ve protokol başına koruma kuralları: Müşteri panelinde 2302 UDP'de neye izin verildiğini, sorgu portunda neye ve RCon portunda neye izin verildiğini ayrı ayrı ayarlarsınız. DayZ'de kaldıraç tam olarak bu ayrımdır, çünkü oyun trafiği ile sorgu trafiği tamamen farklı görünür.
  • Değişiklikler gerçek zamanlı etki eder, yani bir talep açıp beklemek yerine süren bir saldırı sırasında ince ayar yapabilirsiniz.
  • Oyuna uygun koruma profili, çok sayıda modu olan sunucular ve herhangi bir TCP ya da UDP portundaki kendi uygulamalarınız için de.

İki kademenin karşılaştırması

Özellik Dâhil olan sürekli DDoS koruması Advanced DDoS Protection
Fiyat her sunucu paketinde dâhil, ek ücret olmadan ayda 50,00 EUR'dan başlar, PrePaid
Filtreleme kapasitesi 17 Tbps küresel scrubbing artı Frankfurt am Main'de 3,2 Tbps ile Arbor gerçek zamanlı filtreleme aynı iki kademeli filtreleme
IP adresi sunucunuzun IP adresi ek dedicated koruma IP'si
Kural seti otomatik profiller, yapılandırma gerekmez müşteri panelinde port ve protokol başına kendi kurallarınız
Değişiklikler otomatik olarak birlikte ilerler gerçek zamanlı etki eder, bir saldırı sırasında da
Oyun profili DayZ dâhil yaygın oyunlar için optimize edilmiş profiller oyuna uygun profil, çok sayıda modu olan sunucular için de
Null routing hayır hayır
Süre sunucu paketine bağlı PrePaid, asgari süre yok, fesih bildirim süresi yok, kurulum ücreti yok

DayZ projelerinin çoğu için, dâhil olan sürekli koruma düzgün bir sunucu yapılandırmasıyla birlikte yeterlidir. Advanced DDoS Protection ise birinin meseleyi kişisel almasına verilen yanıttır. DayZ sunucusunu şu anda başka bir yerde işleten kişi bu korumayı sonradan ekleyemez: Koruma ağın bir parçasıdır ve KernelHost'ta duran sunucular için geçerlidir. Oraya giden yol bir taşınmadır, bir ek ürün değil.

Sık yapılan hatalar ve çözümleri

“Sunucum DZSA Launcher'dan ve sunucu tarayıcısından kayboldu, ama doğrudan bağlantıyla girebiliyorum”: Bu çoğu durumda bir saldırı değil, sorgu portudur. Ya steamQueryPort içinde güvenlik duvarındakinden farklı bir değer duruyordur ya da fazla sıkı bir hız sınırlaması sunucu listesinin sorgularını düşürüyordur. Bir saldırıdan şüphelenmeden önce iki değeri birbirine karşı kontrol edin.

“Portları filtrelediğimden beri RCon bağlanmıyor”: BattlEye RCon UDP üzerinden çalışır. Aynı porta proto tcp ile yapılan bir açma hiçbir şey sağlamaz. Ayrıca RConPort ile steamQueryPort değerlerinin yanlışlıkla aynı değerde olup olmadığını kontrol edin.

“IP adresini değiştirdim ve iki saat sonra yine çevrimdışıydım”: Saldırgan yeni adresi eskisiyle aynı kaynaktan almıştır, çoğunlukla sunucu tarayıcısından, bir Discord durum botundan ya da eski bir DNS kaydından. Bir adres değişikliği zaman kazandırır, çözüm değildir.

“Saldırı her gün tam yeniden başlatma anında geliyor”: Bu tesadüf değil. Yeniden başlatma planı Discord'da duruyor ve oyun içinde duyuruluyor, modlar ile ekonomi yüklenirken sunucu da zaten yanıt vermiyor. Daha kısa bir mod listesi, küsuratlı yeniden başlatma saatleri ve bir saldırıya tepki vermek yerine kalıcı olarak çalışan bir filtreleme bu kalıbın etkisini alır.

“Bütün oyuncularda lag sıçramaları var, ama ağ sakin”: O zaman bu bir DDoS saldırısı değildi. Önce logAverageFps içinde sunucu kare hızının düşüp düşmediğine, ardından merkezi ekonomiye ve mod listesine bakın. sar -n DEV 1 10 dikkat çekmiyorsa sorun ağda değildir.

“iptables kurallarım etki etmiyor”: Üç neden sıktır. Kurallar UFW zincirlerinin arkasında duruyor ve hiç ulaşılmıyordur, son yeniden başlatmadan sonra kaybolmuşlardır (o zaman netfilter-persistent save komutu ya da /etc/ufw/before.rules dosyasındaki bir kayıt yardımcı olur) ya da saldırı hacimseldir ve kural, zaten dolu olan bir hatta doğru biçimde çalışıyordur. iptables -L INPUT -n -v komutuyla eşleşme sayaçlarının artıp artmadığını kontrol edin. Sayaçlar sıfırda kalıyorsa kurala ulaşılmıyor.

“Önceki sağlayıcım IP adresimi kapattı”: Bu null routing'dir. Sağlayıcı bununla kendi ağını korur, sizin için sonuç başarılı bir saldırıyla aynıdır, genellikle sonrasında saatlerce de sürer. Tereddüt ederseniz filtreleme mi yapıldığını yoksa null routing mi uygulandığını sorun. Yanıt, erişilebilirliğiniz hakkında herhangi bir donanım bilgisinden daha çok şey belirler.

“tcpdump çıktısında dikkat çekici bir şey görmüyorum”: Trafik zaten önündeki ağda filtreleniyorsa sunucuya beklendiği gibi hiçbir şey ulaşmaz. Filtreleme çalışırken normal durum budur. Tersi de geçerlidir: Hat doyuma ulaştığında, ölçüm yapmak istediğiniz SSH oturumu bile size ulaşmayabilir. O durumda müşteri panelindeki, konuk sistemin ağından bağımsız çalışan VNC konsolunu kullanın.

Kısaca özetle

  • Bir DayZ sunucusunun dışarıya tam olarak iki şeye ihtiyacı vardır: 2302 UDP'den başlayan oyun portu bloğu ve kendi steamQueryPort satırınızdaki Steam sorgu portu. Geri kalan her şey kısıtlanır ya da kapatılır.
  • BattlEye RCon portunun bağlayıcı bir standardı yoktur, UDP üzerinden çalışır ve BEServer_x64.cfg dosyasında RConPort ile ayarlanır. Asla açık ağa ait değildir ve asla sorgu portuyla aynı değerde olmamalıdır.
  • Sorgu portunu kapatmak yerine sınırlayın: Onu kapatan kişi, doğrudan bağlantı çalışmaya devam etse de sunucu tarayıcısından ve DZSA Launcher'dan kaybolur.
  • Beyaz liste, guaranteedSlots ve giriş kuyruğu oyuncu yerlerinizi slot tükenmesine karşı korur, ama hattınızı bant genişliğine karşı korumaz.
  • Bir DayZ sunucusunun en tehlikeli zaman aralığı, her üç ila dört saatte bir yapılan planlı yeniden başlatmadır, çünkü modlar ile merkezi ekonomi dakikalarca yüklenir ve bu anın ne zaman olduğu herkese açıktır.
  • Yaklaşık 1 Gbit/s saldırı hacminden ya da saniyede birkaç yüz bin paketten sonra kararı yalnızca sunucunun önündeki ağ verir, artık güvenlik duvarınız değil.
  • KernelHost'ta iki kademeli sürekli koruma her sunucu paketinde dâhildir, ek ücret olmadan ve null routing olmadan. Ayda 50,00 EUR'dan başlayan Advanced DDoS Protection ise kuralları port başına kendiniz yönetmek istediğinizde buna eklenir.

Projeniz hâlihazırda KernelHost'ta çalışıyorsa filtreleme, siz hiçbir şey yapmak zorunda kalmadan etkindir. Buna rağmen dikkat çekici bir durum fark ederseniz, IP adresiniz için filtreleme kurallarının yeniden ayarlanması amacıyla bir destek talebi açın. Süren bir saldırı sırasında bize ek olarak +43 650 8209883 numarasındaki WhatsApp acil durum sohbeti üzerinden ulaşabilirsiniz.

Sıkça sorulan sorular

DayZ sunucum şu anda çevrimdışı. Bunun bir DDoS saldırısı olduğunu nasıl anlarım?
CPU yüküne değil, arayüzün paket hızına bakın. sar -n DEV 1 10 ile saniyedeki paket ve bayt sayısını, ip -s link show eth0 ile düşürülen paket sayaçlarını görürsünüz. Sunucunun kendisi neredeyse hiç çalışmazken gelen paketler normal değerin çok üzerine çıkıyorsa bu bir saldırıdır. Ağ sayaçları dikkat çekmiyor ve buna rağmen her şey takılıyorsa logAverageFps değerine bakın: Oyuncu sayısı aynı kalırken sunucu kare hızı düşüyorsa sorun bir modda ya da merkezi ekonomidedir, ağda değil.
Bir DayZ sunucusu gerçekten hangi portlara ihtiyaç duyar?
Dışarıya tam olarak iki şeye: 2303 ila 2305 bloğuyla birlikte 2302 UDP oyun portuna ve serverDZ.cfg dosyasında steamQueryPort altında duran Steam sorgu portuna. DayZ yalnızca UDP konuşur, bir TCP oyun portu yoktur. BEServer_x64.cfg dosyasındaki BattlEye RCon portu, 22 TCP üzerindeki SSH, 3389 TCP üzerindeki uzak masaüstü ve bir oyun panelinin portları ise açık ağa ait değildir, yöneticilerinizin adreslerine sınırlanır.
DayZ'de Steam sorgu portu 2305 mi yoksa 27016 mı?
İkisi de görülür, bu yüzden tahmin etmek yerine bakmanız gerekir. Bohemia Interactive'in birlikte verdiği örnek yapılandırma steamQueryPort = 2305 ayarlar, barındırıcıların büyük bir bölümü ise 27016 UDP kullanır. Geçerli olan yalnızca kendi serverDZ.cfg dosyanızda duran değerdir ve güvenlik duvarında tam olarak bu portun açık olması gerekir. Port engelliyse sunucunuz oyunun sunucu tarayıcısından ve DZSA Launcher'dan kaybolur, doğrudan bağlantı ise çalışmaya devam eder. Bu durum düzenli olarak saldırı sanılır ama saldırı değildir.
BattlEye RCon portunu nerede ayarlarım ve açık ağa ait midir?
BattlEye RCon portu, BattlEye dizinindeki BEServer_x64.cfg dosyasında RConPort satırıyla, RConPassword ve RestrictRCon ile birlikte ayarlanır. Bağlayıcı bir standart değer yoktur: Yaygın kural oyun portu artı üç, yani 2305'tir, başka barındırıcılar 2310 kullanır. DayZ 1.13'ten bu yana BattlEye bu parametreyi güvenilir biçimde değerlendirir. Port TCP değil UDP üzerinden çalışır ve yalnızca yöneticilerinizin adreslerine aittir. steamQueryPort ile aynı değerde olmamasına dikkat edin.
DayZ'de beyaz liste bir DDoS saldırısına karşı işe yarar mı?
Slot tükenmesine karşı evet, hacimsel saldırılara karşı hayır. Beyaz liste serverDZ.cfg dosyasında enableWhitelist = 1 ile etkinleştirilir ve ardından satır başına bir Steam64 kimliği içeren profiles/whitelist.txt dosyasını okur, değişiklikler ise yalnızca bir yeniden başlatmadan sonra etki eder. guaranteedSlots ile birlikte, yabancıların giriş kuyruğunu doldurup gerçek oyuncuların içeri girememesini engeller. Hattınızı flood ile dolduran bir saldırgan ise zaten katılmak istemiyordur: Paketleri reddedilir ama çoktan ulaşmıştır. Buna karşı yalnızca sunucunun önündeki ağda yapılan bir filtreleme yardımcı olur.
DayZ sunucularına yapılan saldırılar neden sıklıkla tam yeniden başlatma anında geliyor?
Çünkü yeniden başlatma planı herkese açıktır ve zaman aralığı teknik olarak elverişlidir. Pratikte her DayZ projesi her üç ila dört saatte bir otomatik olarak yeniden başlar, bunu oyun içinde duyurur ve Discord'a yazar. Sunucu başlangıçta önce başlatma satırındaki mod listesini, ardından merkezi ekonomiyi yükler ve bu süre boyunca tek bir Steam sorgusunu bile yanıtlamaz. Tam o anda başlayan bir saldırı, zaten süren bir kesintiyi uzatır. Daha kısa mod listeleri, küsuratlı yeniden başlatma saatleri ve kalıcı olarak çalışan bir filtreleme bu kalıbın etkisini alır.
Bir DDoS saldırısına iptables veya UFW ile karşı koyabilir miyim?
Küçük saldırılara ve özensiz botlara karşı evet, hacimsel saldırılara karşı hayır. Sunucudaki bir güvenlik duvarı kuralı, hattınızı çoktan geçmiş paketler hakkında karar verir. Hat doyuma ulaştığında oyuncularınızın paketleri, kural setiniz ne kadar iyi olursa olsun daha öncesinde geçemez. Buna rağmen mantıklı olan, sorgu portunda kaynak adres başına bir hız sınırlaması, oyun portu için bir NOTRACK ve daha büyük alma arabellekleridir. Hacimsel saldırılar ise sunucunun önündeki ağda son bulmalıdır.
DayZ sunucum hangi saldırı büyüklüğünden sonra bunu tek başına başaramaz?
Tipik bir oyun sunucusu 1 Gbit/s'lik bir hatta bağlıdır, bu saniyede 125 megabayt eder. Oyun sunucusu projelerine yönelik saldırılar genellikle 5 ila 50 Gbit/s arasındadır. Paket hızı da aynı ölçüde önemlidir: 1 Gbit/s içinde 64 baytlık paketlerde saniyede yaklaşık 1,49 milyon paket sığar, normal bir sunucu kernel'i ise bunların yalnızca birkaç yüz binini işler. DayZ çok sayıda küçük UDP paketi gönderdiği için paket hızı çoğunlukla bant genişliğinden önce vurur: Hat üçte birine kadar bile dolmamışken sunucu durur.
KernelHost'taki DayZ sunucum bir saldırı sırasında çevrimdışı olur mu?
Hayır. Null routing kullanılmaz. IP adresiniz ağda kalır, yalnızca zararlı paketler düşürülür. Koruma iki kademelidir: küresel scrubbing ağında 17 Tbps mitigasyon kapasitesi ve Frankfurt am Main'de 3,2 Tbps ile Arbor gerçek zamanlı filtreleme. Koruma kalıcı olarak çalışır ve önce bir saldırıya tepki vermek zorunda değildir, yani başlangıçta sunucunun kayıp olduğu dakikalar yaşanmaz. Büyüklük fikri vermek için: KernelHost sunucularında saniyede 41,5 milyondan fazla pakette 473,4 Gbit/s'yi aşan saldırılar filtrelendi.
KernelHost'ta DDoS koruması ek ücretli mi ve Advanced DDoS Protection'a ne zaman ihtiyaç duyarım?
İki kademeli sürekli koruma her sunucu paketinde ek ücret olmadan bulunur ve teslimden itibaren etkindir, onu ne sipariş etmeniz ne de açmanız gerekir. Advanced DDoS Protection'a, projenize ara sıra değil hedefli biçimde ve haftalar boyunca saldırıldığında ve filtrelemeyi kendiniz yönetmek istediğinizde ihtiyaç duyarsınız. Dedicated bir koruma IP'si alırsınız ve koruma kurallarını port ile protokol başına, yani 2302 UDP, sorgu portu ve RCon portu için ayrı ayrı, müşteri panelinde kendiniz yönetirsiniz. Değişiklikler gerçek zamanlı etki eder. Fiyat ayda 50,00 EUR'dan başlar, PrePaid, asgari süre ve kurulum ücreti olmadan.

DayZ DayZ DDoS koruması Oyun sunucusu koruması Port 2302 Steam sorgu portu BattlEye serverDZ.cfg Advanced DDoS Protection