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

Yayınlanma tarihi 19 dk okuma

Bir Mordhau sunucusunun gerçekten hangi dört UDP portuna ihtiyaç duyduğu, 27015 sorgu portunu, 15000 beacon portunu ve RCON'u nasıl güvene alacağınız ve hangi saldırı büyüklüğünden sonra yalnızca sunucunun önündeki ağda yapılan filtrelemenin işe yaradığı.

Frontline turunun tam ortasında bütün oyuncuları bir anda kaybeden, ardından birkaç dakika çevrimdışı kalan ve sunucu listesinde artık görünmeyen bir Mordhau sunucusunun donanım sorunu yaşaması nadirdir. Vakaların büyük çoğunluğunda, bir Mordhau dedicated sunucusunun dışarıya açık tutmak zorunda olduğu dört UDP portundan birine bir saldırı yapılıyordur. Bu yazı önce Mordhau DDoS korumasında ek maliyet olmadan kendiniz neleri halledebileceğinizi, ardından bu önlemlerin fiziksel olarak nerede bittiğini, sonunda da sunucunun önündeki ağda neler olması gerektiğini gösteriyor.

Tüm bilgiler Debian 12, Debian 13, Ubuntu 22.04 LTS veya Ubuntu 24.04 LTS üzerinde çalışan resmî Mordhau dedicated sunucusu (Steam uygulama kimliği 629800, Unreal Engine 4) içindir. 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 yapılandırmada önce hiçbir şey değiştirmeyin ve sunucuyu yeniden başlatmayın, bunun yerine ölçüm değerlerini kaydedin (9. bölüm), çünkü saldırıdan sonra bu değerler kaybolur. Mordhau'da buna, birçok işletmecinin acı biçimde öğrendiği ikinci bir neden ekleniyor: Sunucu süreci kapanırken bellekteki durumunu Game.ini dosyasına geri yazar. Dosyayı sunucu çalışırken düzenleyen kişi, değişikliklerini bir sonraki duruşta kaybeder.

Mordhau sunucuları neden DDoS korumasına ihtiyaç duyar ve onlara kim saldırır

Mordhau sunucularına, adresleri herkese açık olduğu, bütün oyun trafiği UDP üzerinden çalıştığı ve bir kesinti anında herkes için görünür hâle geldiği için saldırılır. Sunucu tarayıcısındaki kayıt, IP adresi ile oyun portunu düz metin olarak içerir, çünkü oyuncular sunucuyu aksi hâlde bulamazdı. Herkese açık sunucu listeleri ve tracker'lar aynı verileri Steam sorgu portu üzerinden alır ve ikinci kez yayınlar. Adresiniz böylece bir sır değil, bir ürün bilgisidir.

Buna oyunun tekniği ekleniyor. Unreal Engine 4, hareketleri, isabetleri ve savunmaları UDP üzerinden iletir. UDP'de talep edilebilecek bir bağlantı kurulumu yoktur ve bir UDP paketinin 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. Mordhau'da bu, diğer birçok oyundan daha ağır tartıyor: Bir vuruş alışverişi saniyenin onda birleri düzeyinde belirlenir ve ek 200 milisaniyelik bir gecikme, sunucu gerçekten çökmeden çok önce yakın dövüşü oynanamaz hâle getirir. Bir turu yıkmak için küçük bir saldırının yetmesinin nedeni tam olarak budur. Bir DDoS saldırısının ayrıntıda ne olduğunu DDoS saldırısı nedir? yazısı anlatıyor.

Tipik tetikleyiciler gösterişsizdir: topluluklar arasındaki rekabet, banlanmış oyuncular, kaybedilmiş düellolar, Discord'daki kavga. Bir saldırı, kiralanmış booter hizmetleri işi hallettiği için sipariş verene ne beceri ne de anlamlı bir para harcaması getirir. İşletmeciler düzenli olarak, saldırıların tam olarak sunucu dolu olduğunda başladığını ve sunucu boşaldığı anda durduğunu bildiriyor. Bu bir rastlantı değil, birinin sunucu tarayıcısı kaydınızı izlediğine ve oyuncu sayısını tetikleyici olarak kullandığına dair bir ipucudur.

Mordhau'da asıl mesele olan portlar

Bir Mordhau dedicated sunucusu dışarıya tam olarak dört UDP portuna ihtiyaç duyar: 7777, 7778, 15000 ve 27015. Geri kalan her şey ya isteğe bağlıdır ya da açık ağa ait değildir. Portlar başlatma sırasında parametre olarak verilir:

./MordhauServer.sh FFA_ThePit -log -Port=7777 -QueryPort=27015 -BeaconPort=15000 -RconPort=27020
Port Protokol Ne için Şununla ayarlanır
7777 UDP Oyun portu: Unreal Engine 4 ağ katmanının bütün oyun trafiği -Port=
7778 UDP Steam portu, oyun portu artı bir olarak ortaya çıkar türetilmiş
15000 UDP Beacon portu: oyuncu haritayı yüklerken slotu ayırır -BeaconPort=
27015 UDP Steam sorgu portu (A2S): sunucu tarayıcısına adı, haritayı ve oyuncu sayısını verir -QueryPort=
serbestçe seçilebilir TCP Source RCON protokolüne göre RCON, fabrika ayarında açık değil Game.ini dosyasındaki RconPort= ya da -RconPort=
22 TCP İşletim sisteminin SSH erişimi, oyuna ait değil sistem hizmeti

Bu sırada iki şey düzenli olarak yanlış anlaşılır. Birincisi: 15000 beacon portu bir yan unsur değildir. Beacon, bir oyuncunun katıldığı anda slotu ayırır, ki oyuncu haritayı yükledikten sonra tekrar dışarı düşmesin. 15000 bloke edilmiş ya da aşırı yüklenmişse, 7777 portu yanıt veriyor olsa bile oyuncular artık içeri giremez. İkincisi: RCON Mordhau'da önceden yapılandırılmış değildir. Ancak RconPassword ve RconPort değerlerini ayarladığınızda etkin olur ve o zaman da UDP değil TCP üzerinden çalışır.

Bir Mordhau sunucusunun en önemli göstergeleri bir bakışta:

Gösterge Değer
Dedicated sunucunun Steam uygulama kimliği 629800 (oyun istemcisi: 629760)
Linux'ta yapılandırma dizini Mordhau/Saved/Config/LinuxServer/
Windows'ta yapılandırma dizini Mordhau\Saved\Config\WindowsServer\
Yapılandırma dosyaları Game.ini (oyun ve oturum), Engine.ini (ağ ve tickrate)
Standart tickrate 60, NetServerMaxTickRate üzerinden 120'ye çıkarılabilir
Yaygın slot sayısı MaxSlots üzerinden 64'e kadar, koop modlarında belirgin biçimde daha az
Tickrate 60'ta oyuncu ve yön başına paket saniyede 60 paket mertebesinde
Dolu bir 64 slotluk sunucunun oyun trafiği yön başına saniyede 4.000 paket mertebesinde
1 Gbit/s'e sığan paket hızı (64 baytlık paketler) saniyede yaklaşık 1,49 milyon paket
Bir A2S_INFO sorgusunun büyüklüğü 25 bayt, yanıt ise bunun katlarıdır

Mordhau'da görülen saldırı kalıpları

Dört kalıp, bir Mordhau sunucusuna karşı yürütülen hemen her şeyi kapsar ve her biri farklı bir portu vurur.

  • 7777 oyun portuna UDP flood'u. Bu bir booter'ın standart saldırısıdır: sunucu tarayıcısında yazan porta olabildiğince çok sahte paket. Bir güvenlik açığını değil, bant genişliği ile paket hızını hedefler ve biri bağlantısını kaybetmeden çok önce ilk olarak lag sıçramaları biçiminde kendini gösterir.
  • 27015 sorgu portuna sorgu flood'u. Bir A2S_INFO sorgusu 25 bayt büyüklüğündedir, sunucu adı, harita, oyun modu ve oyuncu sayısını içeren yanıt ise bunun katlarıdır. Yani saldırgan az yatırım yapar ve sizde hesaplama işi ile giden trafik zorlar.
  • Kendi sorgu portunuz üzerinden yansıtma. Burada sunucunuz hedef değil, araçtır: Saldırgan sahte gönderen adresiyle sorgular gönderir ve sunucunuz kurbana yanıt verir. Bunu 27015 portunda açıklanamayacak kadar yüksek giden trafik ve sağlayıcınızın kötüye kullanım bildirimi olarak fark edersiniz.
  • 15000 beacon portu üzerinden katılım ve slot tükenmesi. Bant genişliği yakmak yerine otomatik katılımlar ayrılmış slotları işgal eder. Sunucu çalışmaya devam eder, ama doludur ve gerçek oyuncular artık içeri giremez.

RCON açık biçimde ağda durduğu anda buna beşinci bir kalıp ekleniyor: RCON portuna karşı saniyelik aralıkla oturum açma denemeleri. Bu nadiren hacimseldir, ama işlem zamanına mal olur ve beş vakanın içinde tek bir isabetin sunucuyu tamamen elinizden aldığı tek vakadı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 Mordhau 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: sunucuda ne dinliyor?

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

ss -lntup

İlgi çekici olan, yerel adresi gösteren sütundur. 0.0.0.0:7777 ve [::]:7777 “bütün internetten erişilebilir” anlamına gelir, 127.0.0.1:27020 ise “yalnızca yerel” demektir ve güvenlik duvarı kuralına ihtiyaç duymaz. Oyunun yanında orada sıklıkla bir web paneli, bir veritabanı hizmeti ve çoktan unutulmuş bir ses hizmeti de görünür. Saldırganın bakışını dışarıdan yapılan bir tarama verir; UDP için kısa bir port listesiyle, çünkü tam bir UDP taraması çok yavaştır:

nmap -Pn -sU -p 7777,7778,15000,27015 SUNUCU.IP.ADRESİNİZ
nmap -Pn -p- --min-rate 1000 SUNUCU.IP.ADRESİNİZ

2. Yalnızca Mordhau'nun gerçekten ihtiyaç duyduğu dört portu açık bırakma

Mordhau için dışarıya dört UDP izni yeter, geri kalan her şey 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 7777/udp comment 'Mordhau oyun'
ufw allow 7778/udp comment 'Mordhau Steam'
ufw allow 15000/udp comment 'Mordhau Beacon'
ufw allow 27015/udp comment 'Mordhau Query'
ufw allow from 203.0.113.10 to any port 27020 proto tcp comment 'Mordhau RCON'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

203.0.113.10 adresini kendi adresinizle değiştirin. Önemli olan, burada yazmayan şeydir: bir web paneli için izin yok, bir veritabanı için yok, bir dosya sunucusu için yok. Ek olarak açık her port, oyunla hiçbir ilgisi olmayan ek bir hedeftir. Kurtarma yolu da dâhil tam rehberi Kendinizi dışarıda bırakmadan UFW güvenlik duvarı kurma yazısında bulursunuz.

3. Sunucu listesinden düşmeden 27015 sorgu portunu sınırlama

Sorgu portunu sınırlayabilirsiniz, ama kapatamazsınız. 27015 UDP kapatıldığında sunucunuz sunucu tarayıcısından kaybolur, çünkü oyuncu sayısı, harita adı ve sunucu adı tam olarak bu port üzerinden sorulur. Kaynak adres başına bir üst sınır, görünürlüğe mal olmadan sorunu çözer:

iptables -I INPUT -p udp --dport 27015 -m hashlimit --hashlimit-name mh_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP

Düzenli bir sunucu tarayıcısı sunucunuzu dakikada birkaç kez sorar, saniyede birkaç kez değil. Kaynak adres başına saniyede on sorgu böylece her gerçek oyuncu için cömert, her bot için sıkıdır. Ardından eşleşme sayacından kuralın gerçekten etki edip etmediğini kontrol edin:

iptables -L INPUT -n -v | head -20
tcpdump -ni eth0 udp port 27015 -c 200 -q

Yansıtma sorusunun yanıtı da burada. Bir yansıtmada sunucunuza saldırılmaz, amplifikasyon aracı olarak kötüye kullanılır: Sorgular sahte gönderen adresiyle gelir ve yanıtlarınız yabancı bir kurbanı vurur. Buna karşı kaynak adres başına bir hız sınırlaması en etkili yerel önlemdir, çünkü sahte bir gönderen adresi yalnızca sunucunuz gönüllü ve sınırsız biçimde yanıt verdiği sürece işe yarar.

4. RCON'u açık ağdan çekme

RCON Mordhau'da hiçbir durumda sınırsız biçimde internete ait değildir. Erişim Game.ini dosyasında, [/Script/Mordhau.MordhauGameSession] bölümünde açılır:

[/Script/Mordhau.MordhauGameSession]
ServerName=Mordhau Sunucum
MaxSlots=64
ServerPassword=
AdminPassword=UzunRastgeleBirParola
RconPassword=BaşkaUzunRastgeleBirParola
RconPort=27020

Mordhau, Source RCON protokolünü konuşur, yani TCP, ve bu yüzden her yaygın RCON aracıyla birlikte çalışır. Oturum açma bilgilerini tek tek deneyen betikler de tam olarak bunu kullanır. Üç kural bu vakayı kapsıyor. Birincisi: RconPassword ve AdminPassword, sunucu adının varyasyonları değil, iki farklı, uzun ve rastgele paroladır. İkincisi: RCON portu için verdiğiniz izni, yukarıdaki UFW bloğunda olduğu gibi yalnızca kendi adresinizle sınırlarsınız. Üçüncüsü, sabit bir adresiniz yoksa: Portu dışarıdan kapalı bırakın ve ona bir SSH port yönlendirmesi üzerinden ulaşın, ardından yerel olarak 127.0.0.1:27020 adresine bağlanın:

ssh -N -L 27020:127.0.0.1:27020 root@SUNUCU.IP.ADRESİNİZ

RCON buna rağmen açık kalmak zorundaysa, en azından kaynak adres başına eş zamanlı bağlantıları sınırlayın. Bir RCON aracı bir bağlantıya ihtiyaç duyar, bir bruteforce betiği yüzlercesine:

iptables -I INPUT -p tcp --dport 27020 --syn -m connlimit --connlimit-above 3 --connlimit-mask 32 -j DROP

5. 15000 beacon portunu katılım sellerine karşı güvene alma

Beacon portu, bir Mordhau sunucusunun hafife alınan saldırı noktasıdır. Oyun, katılan bir oyuncunun slotunu, oyuncu hâlâ yüklerken bu port üzerinden ayırır. Hızlı biçimde ardı ardına katılım başlatan bir bot böylece, oyuna hiç varmadan slotları işgal eder. Sunucu çevrimiçi kalır ve buna rağmen dolu görünür. Kaynak adres başına bir üst sınır bunu yakalar, çünkü gerçek bir oyuncu katılım başına tam olarak bir kez beacon gönderir, saniyede yirmi kez değil:

iptables -I INPUT -p udp --dport 15000 -m hashlimit --hashlimit-name mh_beacon --hashlimit-mode srcip --hashlimit-above 20/sec --hashlimit-burst 40 -j DROP
iptables -I INPUT -p udp --dport 7777 -m hashlimit --hashlimit-name mh_game --hashlimit-mode srcip --hashlimit-above 400/sec --hashlimit-burst 600 -j DROP

İkinci kural oyun portuna yöneliktir ve ölçülü davranmak gerekir. Tickrate 60'ta sunucu, bağlı her oyuncuyla yön başına saniyede 60 paket mertebesinde alışveriş yapar. Kaynak adres başına saniyede 400 paketlik bir sınır değeri böylece her gerçek oyuncuya bol hava bırakır ve buna rağmen açıkça flood yapan her kaynağı vurur. Daha sıkı ayarlamadan önce normal işletimde bir hafta ölçün: Fazla sıkı ayarlayan kişi kendi oyuncularını dışarı atar ve ardından bunu bir saldırı sanır.

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.

6. Game.ini ve Engine.ini: gerçekten işe yarayanlar

Mordhau'nun iki yapılandırma dosyası var ve ikisi de Linux'ta Mordhau/Saved/Config/LinuxServer/, Windows'ta Mordhau\Saved\Config\WindowsServer\ dizininde durur. Game.ini sunucu adını, slotları, paroları, yönetici listesini, harita rotasyonunu ve mod.io'dan gelen mod kimliklerini düzenler, Engine.ini ise ağ davranışını. İkisini de yalnızca sunucu durdurulmuşken düzenleyin, aksi hâlde sunucu süreci kapanırken değişikliklerinizin üzerine bellekteki durumu yazar.

Saldırı yüzeyi için gerçekten önemli olan üç ayar var. Birincisi bir ServerPassword: Davet edilmemiş olan herkesi uzak tutar, ama herkese açık bulunabilirliğe mal olur ve 7777 portuna gelen bir sele karşı hiç yardımcı olmaz, çünkü saldırgan zaten katılmak istemiyor. İkincisi gerçekçi bir MaxSlots sayısı: Mordhau 64 oyuncuya kadar tasarlanmıştır ve her ek slot, CPU'nuzun hizmet vermek zorunda olduğu ek bir paket kaynağıdır. Üçüncüsü Engine.ini dosyasındaki tickrate:

[/Script/OnlineSubsystemUtils.IpNetDriver]
NetServerMaxTickRate=60
LanServerMaxTickRate=60

[IpDrv.TcpNetDriver]
NetServerMaxTickRate=60

Bir Mordhau sunucusunun standart tickrate değeri 60'tır. 120'ye çıkarmak, oyuncu başına paket hızını ve CPU yükünü iki katına çıkarır ve böylece tam olarak saldırı altında ihtiyaç duymadığınız şeydir. Tickrate 120 ile çalışan bir 64 slotluk sunucu, normal işletimde bile yön başına saniyede 8.000 paket mertebesinde üretir. Kalıcı olarak ateş altında olan kişi, 60 ile 120'ye göre belirgin biçimde daha kararlı gider.

7. Bağlantı izlemesini ve alma arabelleklerini rahatlatma

Sık gözden kaçan bir darboğaz kernel'in bağlantı izlemesidir. Her UDP akışı için kendine ait bir kayıt tutar ve on binlerce sahte gönderen adresinden oluşan bir sel tabloyu saniyeler içinde doldurur. Tablo dolduğunda sunucu meşru paketleri de düşürür ve logda “nf_conntrack: table full” satırı görünür. Durumu ve üst sınırı şu komutlar gösterir:

sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
dmesg -T | grep -i conntrack | tail -20

Buna karşı iki şey yardımcı olur. Üst sınırı yükseltirsiniz ya da oyun portlarını izlemenin tamamen dışında tutarsınız. İkincisi bir oyun sunucusunda çoğunlukla daha iyi yoldur, çünkü UDP'nin zaten izlenmesi gereken bir durumu yoktur:

iptables -t raw -I PREROUTING -p udp --dport 7777 -j NOTRACK
iptables -t raw -I PREROUTING -p udp --dport 15000 -j NOTRACK
iptables -t raw -I PREROUTING -p udp --dport 27015 -j NOTRACK

Daha büyük alma arabellekleri ve ağ kartının daha derin bir kuyruğu da mantıklıdır, ki kısa zirveler hemen düşürmeye yol açmasın:

sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.rmem_default=4194304
sysctl -w net.core.netdev_max_backlog=5000

Kalıcı olarak bu değerler /etc/sysctl.d/ altındaki bir dosyaya aittir, örneğin 99-gameserver.conf dosyasına. Anlamak açısından önemli: Daha büyük arabellekler büyük bir saldırıya karşı dayanıklılığınızı artırmaz, yalnızca kısa bir sapmanın daha baştan paketlere mal olmasını engeller.

8. Adresiniz sunucu listesinde duruyor ve bu değiştirilemez

Burada hayalcilik yerine dürüstlük işe yarar: Herkese açık bir Mordhau sunucusunun IP adresi gizli tutulamaz. Sunucu tarayıcısı kaydında durur, sorgu portunu düzenli olarak okuyan üçüncü kişilerin herkese açık sunucu listelerinde durur ve bir kez bağlanmış olan her oyuncu onu bilir. Bu yüzden bir adres değişikliği saatler kazandırır, nadiren günler, çünkü saldırgan yeni adresi eskisiyle aynı yolla bulur.

Bunun için üç alışkanlık etkilidir. Ham IP adresini hiçbir yerde kendiniz yayınlamayın, yani ne Discord kanalında ne de proje sayfasında. Oyuncularınızı bir ana bilgisayar adı üzerinden bağlayın, ki kötü durumda bir adres değişikliği bütün bağlantıları kırmasın. Ve eski DNS kayıtlarını temizleyin, çünkü önceki adrese işaret eden, unutulmuş bir A kaydı her değişikliği etkisiz kılar. Aynısı test sunucuları için de geçerlidir: Aynı makinede herkese açık biçimde erişilebilir her ikinci sunucu, ana sunucunun adresini açık eder.

9. Her şey normal çalışırken ölçme

En önemli adım, neredeyse hiç kimsenin önceden atmadığı adımdır: sunucu sakin ç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. apt-get install -y vnstat sysstat ile ölçüm kalıcı olarak arka planda çalışır. 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 7777 or udp port 15000 or udp port 27015' -c 200 -q

tcpdump için şu geçerlidir: her zaman -c ile sınırlayın, çünkü tam yük altında alınan bir paket kaydı hâlihazırda aşırı yüklü bir sunucuya ek yük getirir. Özellikle ip -s link çıktısındaki düşürülen paket sayaçlarına dikkat edin. CPU aynı zamanda sakin dururken artan dropped değerleri, sorunun hesaplama gücü değil paket hızı olduğuna dair en belirgin ipucudur. Değerleri nasıl yorumlayacağınız DDoS saldırısını tanıma yazısında. Sunucuyu SteamCMD ile düzgün biçimde nasıl kurup güncel tutacağınızı ise SteamCMD ile oyun sunucusu kurma yazısı anlatıyor.

Bu önlemler nerede biter: 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.

Bir kez birlikte hesaplayalım. Tipik bir oyun sunucusu 1 Gbit/s'lik bir hatta bağlıdır, bu saniyede 125 megabayt eder ve biri bundan fazlasını gönderdiği anda hat dolar. 64 slotlu dolu bir Mordhau sunucusu bunun yalnızca bir kesrine ihtiyaç duyar: Tickrate 60'ta oyun trafiği yön başına saniyede 4.000 paket mertebesindedir. Kiralanmış bir booter ise zorlanmadan 5 ila 50 Gbit/s verir, yani hattınızın beş ila elli katını. O zaman arkadaki iptables kuralınızın iyi olup olmadığı artık bir rol oynamaz, çünkü oyuncularınızın paketleri daha öncesinde geçemez.

İkinci büyüklük paket hızıdır ve sıklıkla bant genişliğinden önce vurur. 64 baytlık küçük paketlerde 1 Gbit/s'lik bir hatta saniyede yaklaşık 1,49 milyon paket sığar. Normal bir sunucu kernel'i, CPU ve ağ kartına bağlı olarak bunların birkaç yüz binini işler, ardından düşürmeye başlar. Yani hattınızı üçte birine bile doldurmayan bir saldırı, düşürme işlemi için işlem zamanı harcandığı için Mordhau sunucunuzu buna rağmen felç edebilir. İşletmeciler bunu “doluluk hiç de yüksek değildi, buna rağmen her şey gitti” biçiminde yaşar.

Gerçekte hangi mertebelerin görüldüğünü sınıflandırmak için: KernelHost sunucularında bunlar arasında bir ses sunucusuna saniyede 41,5 milyondan fazla pakette 473,4 Gbit/s'nin üzerinde bir saldırı ve bir oyun sunucusuna 112,2 Gbit/s'nin üzerinde bir UDP flood'u filtrelendi. Bunun için yerel bir ayar yoktur. Hacimsel saldırılar sunucunun önündeki ağda son bulmalıdır.

KernelHost buna karşı ne koyuyor

Her sunucuda dâhil olan 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. Konum Frankfurt am Main'dir. Hangi oyunların ve protokollerin kapsandığını Gerçek zamanlı oyun sunucusu DDoS koruması yazısı listeliyor.

Kalıcı olarak ateş altındaki Mordhau sunucuları için Advanced DDoS Protection

Bazı sunuculara 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, asgari süresi ve kurulum ücreti olmayan Advanced DDoS Protection var. Fark, daha fazla kapasitede değil, kontrolde:

  • Frankfurt çekirdek ağından verilen ve sunucunuzun kendi ağı içinde geçirildiği dedicated koruma IP'si. Sizin tarafınızda hiçbir değişiklik gerekmez.
  • Müşteri panelinde kendiniz yönetebileceğiniz, port ve protokol başına koruma kuralları: 7777 UDP'de neye izin verildiğini, 15000 UDP'de neye ve 27015 UDP'de neye izin verildiğini, bunun için bir talep yazmak zorunda kalmadan ayrı ayrı belirlersiniz.
  • Değişiklikler gerçek zamanlı etki eder, yani bir bakım penceresini beklemek yerine süren bir saldırı sırasında ince ayar yapabilirsiniz.
  • Oyuna uygun koruma profili. UDP üzerindeki Unreal Engine oyun sunucuları ve Steam sorgu portları için hazır profiller var, aynı şekilde herhangi bir TCP veya UDP portunda çalışan değiştirilmiş ve kendi uygulamalarınız için de.

Advanced DDoS Protection, KernelHost'ta çalışan sunuculara yöneliktir. Mordhau sunucunuz şu anda başka bir yerdeyse ve düzenli olarak ağdan vuruluyorsa, bu filtrelemeye giden yol taşınmadır.

İ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 yaygın oyunlar için optimize edilmiş profiller, Unreal Engine sunucuları dâhil oyuna uygun profil, değiştirilmiş uygulamalar 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

Mordhau sunucularının çoğu için, dâhil olan sürekli koruma düzgün bir yapılandırmayla birlikte yeterlidir. Advanced DDoS Protection ise birinin meseleyi kişisel almasına verilen yanıttır.

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

“27015 portunu kapattım, şimdi sunucum artık listede görünmüyor”: Bu beklenen sonuçtur. Steam sorgu portu sunucu tarayıcısına adı, haritayı ve oyuncu sayısını verir. O olmadan sunucunuz artık görünmez ya da erişilemez olarak gösterilir. Doğru olan, bir kapatma değil kaynak adres başına bir hız sınırlamasıdır.

“Sunucu çalışmasına rağmen oyuncular içeri giremiyor”: Önce 15000 UDP portunu kontrol edin. Beacon, yükleme sırasında slotu ayırır. Port kapalı, fazla sıkı filtrelenmiş ya da aşırı yüklenmişse, 7777 portu yanıt veriyor ve sunucu tarayıcıda duruyor olsa bile katılım askıda kalır.

“Game.ini dosyasındaki değişikliklerim yeniden başlatmadan sonra yine kayboldu”: Dosyayı sunucu çalışırken düzenlediniz. Mordhau sunucu süreci kapanırken bellekteki durumunu geri yazar ve bu sırada sizin sürümünüzün üzerine yazar. Sunucuyu durdurma, düzenleme, başlatma; bu sırayla.

“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 veya /etc/ufw/before.rules dosyasındaki bir kayıt yardımcı olur) ya da saldırı hacimseldir ve kural, çoktan dolmuş 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.

“Sunucu çalışıyor, ama herkeste lag sıçramaları var ve isabetler geç varıyor”: Önce CPU sakin kalırken gelen paket hızının artıp artmadığına bakın. Bir saldırının kalıbı tam olarak budur. Paket hızı normal kalıyor ve CPU %100'de duruyorsa bu bir DDoS saldırısı değil, çoğunlukla fazla yüksek bir tickrate, fazla çok slot ya da bir moddur.

“Sağlayıcım 27015 portundan giden kötüye kullanım bildiriyor”: Sunucunuz bir yansıtma için amplifikasyon aracı olarak kötüye kullanıldı. Sorgular sahte gönderen adresiyle geldi, yanıtı ise sunucunuz yabancı bir kurbana verdi. 27015 UDP portunda kaynak adres başına bir hız sınırlaması bunu bitirir.

“Ö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 Mordhau dedicated sunucusunun dışarıya tam olarak dört UDP portuna ihtiyacı vardır: 7777 (oyun), 7778 (Steam), 15000 (beacon) ve 27015 (Steam sorgusu). Geri kalan her şey kapalı kalır.
  • RCON Mordhau'da Source RCON protokolüne göre TCP üzerinden çalışır ve ancak Game.ini dosyasındaki RconPassword ile RconPort değerleriyle etkin olur. Portu kendi adresinizle sınırlayın.
  • 27015 UDP portunu sınırlayabilirsiniz, ama kapatamazsınız: O olmadan sunucunuz sunucu tarayıcısından kaybolur, çünkü oyuncu sayısı, harita ve ad bu port üzerinden sorulur.
  • 15000 UDP beacon portudur ve yükleme sırasında slotu ayırır. Bloke edilmiş ya da aşırı yüklenmişse, sunucu çalışıyor olsa bile oyuncular içeri giremez.
  • Game.ini ve Engine.ini dosyalarını yalnızca sunucu durdurulmuşken düzenleyin, çünkü sunucu süreci kapanırken bellekteki durumu geri yazar.
  • Yerel güvenlik duvarı kuralları bant genişliğinde son bulur: 1 Gbit/s saniyede 125 megabayt eder ve 64 baytlık paketlerde saniyede yaklaşık 1,49 milyon paket demektir. Bunun üzerinde yalnızca sunucunun önündeki ağ belirleyicidir.
  • KernelHost'ta iki kademeli sürekli koruma her sunucu paketinde ek ücret olmadan dâhildir, teslimden itibaren etkindir ve null routing kullanmaz. Filtrelemeyi kendisi yönetmek isteyen kişi bunu ayda 50,00 EUR'dan başlayan Advanced DDoS Protection ile alır.

Mordhau sunucunuz 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

Bir Mordhau sunucusu için hangi portları açık bırakmam gerekir?
Tam olarak dördünü ve dördü de UDP üzerinden: oyun trafiği için 7777, Steam portu olarak 7778 (oyun portu artı bir), katılımda slotu ayıran beacon için 15000 ve sunucu tarayıcısının adı, haritayı ve oyuncu sayısını okuduğu Steam sorgusu için 27015. Bunlar başlatma sırasında -Port=, -QueryPort= ve -BeaconPort= üzerinden ayarlanır. RCON isteğe bağlıdır, serbestçe seçilmiş bir portta TCP üzerinden çalışır ve sınırsız biçimde açık ağa ait değildir. Bir web paneli ya da bir veritabanı gibi geri kalan her şey kapalı kalır.
Mordhau sunucum şu anda çevrimdışı. Bir DDoS saldırısının sürdüğünü 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ışmıyorken gelen paketler normal değerin çok üzerine çıkıyorsa bu bir saldırıdır. Ağ sayaçları dikkat çekmiyor ve CPU buna rağmen %100'de duruyorsa neden çoğunlukla fazla yüksek bir tickrate, fazla çok slot ya da bir moddur. Normal değerleri saldırı gelmeden önce ölçün, yoksa karşılaştırma imkânınız olmaz.
Sorgu flood'larını durdurmak için 27015 portunu öylece kapatabilir miyim?
Hayır. 27015 UDP kapatıldığında Mordhau sunucunuz sunucu tarayıcısından kaybolur, çünkü ad, harita ve oyuncu sayısı tam olarak bu Steam sorgu portu üzerinden okunur. Doğru olan, kaynak adres başına bir hız sınırlamasıdır, örneğin iptables'ın hashlimit modülüyle saniyede on sorgu. Gerçek bir sunucu tarayıcısı dakikada birkaç kez sorar, bir bot ise saniyede birkaç kez. Aynı kural bu arada sunucunuzun, yabancı bir kurbana yapılan bir yansıtma için amplifikasyon aracı olarak kötüye kullanılmasını da engeller.
Bir Mordhau sunucusunda 15000 portu ne için var?
15000 UDP beacon portudur. Mordhau, katılan bir oyuncunun slotunu, oyuncu haritayı hâlâ yüklerken bu port üzerinden ayırır, ki yükleme sonrasında tekrar dışarı düşmesin. Port başlatma sırasında -BeaconPort= ile ayarlanır. Pratikte bu şu anlama gelir: 15000 kapalı, fazla sıkı filtrelenmiş ya da bir katılım seliyle aşırı yüklenmişse, sunucu tarayıcıda duruyor ve 7777 portu yanıt veriyor olsa bile oyuncular artık içeri giremez. Slotlara yapılan bir saldırı, büyük bir bant genişliğine hiç ihtiyaç duymadan tam olarak bu kalıbı kullanır.
Bir Mordhau sunucusunda RCON'u nasıl güvene alırım?
RCON Mordhau'da önceden yapılandırılmış değildir ve ancak Game.ini dosyasında [/Script/Mordhau.MordhauGameSession] bölümünde RconPassword ile RconPort değerlerini ayarladığınızda etkin olur. Erişim Source RCON protokolünü konuşur ve böylece TCP üzerinden çalışır. Üç önlem yeter: AdminPassword değerinden farklı, uzun ve rastgele bir parola, yalnızca kendi adresiniz için verilen bir güvenlik duvarı izni ve adresiniz değişiyorsa 127.0.0.1 üzerine bir SSH port yönlendirmesiyle erişim. Port açık kalmak zorundaysa, kaynak adres başına eş zamanlı bağlantıları connlimit ile sınırlayın.
Şimdi hızlıca IP adresini değiştirmek işe yarar mı?
Yalnızca kısa süre. Herkese açık bir Mordhau sunucusunun adresi, sunucu tarayıcısı kaydında düz metin olarak durur ve üçüncü kişilerin herkese açık sunucu listeleri onu sorgu portu üzerinden sürekli yeniden okur. Bu yüzden saldırgan yeni adresi çoğunlukla saatler içinde bulur. Bir değişiklik zaman kazandırır, ama sorunu çözmez. Daha etkili olan, ham IP adresini hiçbir yerde kendiniz yayınlamamak, oyuncuları bir ana bilgisayar adı üzerinden bağlamak ve eski DNS kayıtlarını silmektir, çünkü unutulmuş bir A kaydı her adres değişikliğini etkisiz kılar.
Game.ini dosyasındaki değişikliklerim bir yeniden başlatmadan sonra neden kayboluyor?
Çünkü dosyayı sunucu çalışırken düzenlediniz. Mordhau sunucu süreci yapılandırmasını bellekte tutar ve kapanırken bu durumu Game.ini dosyasına geri yazar. Bu sırada sizin sürümünüzün üzerine yazar. Bu yüzden doğru sıra her zaman şudur: sunucuyu durdurma, Game.ini ya da Engine.ini dosyasını düzenleme, sunucuyu başlatma. Bu bir saldırı sırasında da geçerlidir ve ateş altında önce ölçmeniz, ancak ondan sonra yapılandırmanız gerekmesinin nedeni de budur.
Mordhau 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. 64 slotlu dolu bir Mordhau sunucusu tickrate 60'ta yön başına yalnızca saniyede 4.000 paket mertebesinde ihtiyaç duyar. Kiralanmış booter'lar ise 5 ila 50 Gbit/s verir. Aynı ölçüde önemli olan paket hızıdır: 1 Gbit/s'e 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. Yani bir saldırı, bant genişliği sonuna kadar kullanılmamış olsa bile sizi felç edebilir.
Mordhau sunucum KernelHost'ta 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 ve filtrelemenin çalışması için bir şey bildirmeniz gerekmez.
KernelHost'ta DDoS koruması ek ücretli mi?
Hayır. İki kademeli sürekli koruma her sunucu paketinde ek ücret olmadan bulunur ve teslimden itibaren etkindir. Onu ne sipariş etmeniz ne açmanız ne de yapılandırmanız gerekir ve Mordhau sunucunuzun bütün portları için, yani bir RCON portu için olduğu gibi 7777, 7778, 15000 ve 27015 için de geçerlidir. Sunucu paketini değiştirmek ya da başka bir makineye taşınmak bunu değiştirmez.
Mordhau sunucum için ek olarak Advanced DDoS Protection'a ne zaman ihtiyaç duyarım?
Sunucunuza ara sıra değil hedefli biçimde ve haftalar boyunca saldırıldığında ve filtrelemeyi kendiniz yönetmek istediğinizde. Dedicated bir koruma IP'si alırsınız ve koruma kurallarını port ile protokol başına, yani 7777 UDP, 15000 UDP ve 27015 UDP için ayrı ayrı, müşteri panelinde kendiniz yönetirsiniz. Değişiklikler gerçek zamanlı etki eder, yani süren bir saldırı sırasında ince ayar yapabilirsiniz. Fiyat ayda 50,00 EUR'dan başlar, PrePaid, asgari süre ve kurulum ücreti olmadan. Bu teklif KernelHost'ta çalışan sunucular için geçerlidir.

Mordhau Mordhau DDoS koruması Oyun sunucusu koruması Unreal Engine 4 Port 7777 Port 27015 RCON Advanced DDoS Protection