Arma 3 sunucusunu DDoS saldırılarına karşı koruma

Yayınlanma tarihi 19 dk okuma

Bir Arma 3 sunucusunun 2302 ila 2306 arasındaki beş UDP portundan hangilerine gerçekten ihtiyaç duyduğu, Steam sorgusunu, BattlEye RCon'u ve headless client'ı nasıl güvene alacağınız ve hangi paket hızından sonra yalnızca sunucunun önündeki ağda yapılan filtrelemenin işe yaradığı.

Bir Arma 3 sunucusunu DDoS saldırılarına karşı korumak isteyen kişinin işi tam olarak beş UDP portuyla: 2302 ila 2306. Akşam bir görevin tam ortasında bütün oyuncular için aynı anda kopan bir dedicated sunucunun donanım sorunu yaşaması nadirdir. Çoğunlukla tam bu port bloğuna bir saldırı yapılıyordur, hem de sunucu listesinin en yüksek oyuncu sayısını gösterdiği anda. 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ü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 dedicated bir Arma 3 sunucusu (SteamCMD uygulaması 233780) 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 şimdi hiçbir şey değiştirmeyin ve sunucuyu yeniden başlatmayın, önce “Kayıt tutma” bölümündeki ölçüm değerlerini kaydedin. Saldırıdan sonra bu değerler kaybolur.

Arma 3 sunucuları neden saldırıya uğrar ve DDoS koruması ne zaman gerekir

Arma 3, bir sunucuyu rahat bir hedefe dönüştüren birkaç özelliği bir arada taşıyor. Birincisi, sunucu adresini kendisi yayınlıyor: 2304 UDP portu üzerinden Steam ana sunucusuna kaydoluyor ve 2303 UDP portunda gelen sorguları ad, harita, oyuncu sayısı ve mod listesiyle yanıtlıyor. Bu iki port olmadan sizi kimse bulamaz, bu iki portla birlikte IP adresiniz her sunucu tarayıcısında ve sunucu tarayıcısını sorgulayan her durum sayfasında görünür.

İkincisi, oyuncu kitlesi sabit saatlere bağlı. Altis ve Tanoa üzerindeki Life rol yapma projeleri, Exile, Antistasi ve King of the Hill akşamları ve hafta sonu doluyor; dolayısıyla akşam saat 20.00'deki bir kesinti mümkün olan en yüksek görünürlüğe sahip. Üçüncüsü, projeler arasında rekabet, banlanmış oyuncular ve iç çatışmalar var; bir saldırı ise tetikleyen kişiye ne beceri ne de anlamlı bir para harcaması getiriyor.

Teknik tarafta belirleyici nokta buna ekleniyor: Arma 3 tamamen UDP üzerinden çalışır, oyunun işletimi için TCP gerekmez. UDP'de talep edilebilecek bir bağlantı kurulumu yoktur ve gönderen adresleri sahte olabilir. Yani bir saldırganın yük oluşturmak için sunucunuza girmesi de sunucunuza doğru biçimde seslenmesi de gerekmez. Buna bir de şu ekleniyor: Bir Arma 3 sunucusunun simülasyon döngüsü özünde tek bir işlem çekirdeğinde çalışır. Yeterince paket gönderen kişi, makinenin başka kaç çekirdeği olduğundan bağımsız olarak bu tek çekirdeğin işlem zamanını tüketir. Bir DDoS saldırısının ayrıntıda ne olduğunu DDoS saldırısı nedir? yazısı anlatıyor.

Asıl mesele olan portlar

Bir Arma 3 sunucusu fabrika ayarında 2302 ila 2306 UDP bloğunu kullanır. -port=2302 başlatma parametresi yalnızca ilk portu belirler, kalan dördü bundan sabit biçimde türer: oyun portu artı 1'den artı 4'e kadar. Aynı makinede birden fazla sunucu örneği çalıştıranlar bu yüzden portlar arasında en az 100 fark bırakır (2302, 2402, 2502), yoksa örnekler birbirinin ardıl portlarını kapar.

Port Protokol Ne için Açık ağa ait mi
2302 (oyun portu) UDP Oyun trafiği ve VON, yerleşik sesli iletişim evet
2303 (oyun portu artı 1) UDP Steam sorgusu: A2S sorgularını ad, harita, oyuncu sayısı, mod ve imza listesiyle yanıtlar evet, yoksa sunucu tarayıcısındaki kayıt görünmez
2304 (oyun portu artı 2) UDP Steam ana sunucusu: sunucunun Steam ana sunucusuna kaydı evet
2305 (oyun portu artı 3) UDP VON, Bohemia'ya göre rezerve ve şu anda kullanılmıyor hayır
2306 (oyun portu artı 4) UDP BattlEye trafiği, bunun içinde RCon arayüzü (beserver_x64.cfg dosyasındaki RConPort) hayır, yalnızca yönetici adresleriniz
2344 ve 2345 (giden) TCP ve UDP Sunucunun arma31.battleye.com adresine BattlEye bağlantısı giden yönde izin verin, gelen yönde hiçbir şey açmayın
3306 TCP Her Life çerçevesinin veritabanı bağlantısı olan extDB3 için MySQL hayır, 127.0.0.1 adresine bağlayın
22 TCP SSH erişimi hayır, yalnızca kendi adresleriniz

Bu sekiz satırdan tam olarak üçü açık internete aittir: 2302, 2303 ve 2304 UDP. Geri kalan her şey yönetimdir ve açık yönetim portları, Arma 3 sunucularında önlenebilir hataların en sık görülenidir.

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 Arma 3 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 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:2302 “bütün internetten erişilebilir” anlamına gelir, 127.0.0.1:3306 ise “yalnızca yerel” demektir ve güvenlik duvarı kuralına ihtiyaç duymaz. Bir Life sunucusunda oyunun yanında orada düzenli olarak MariaDB, fraksiyon sayfası için bir web sunucusu, bir TeamSpeak veya ses hizmeti ve unutulmuş bir panel görünür. Saldırganın bakışını, dışarıdan yapılan bir port taraması verir:

nmap -Pn -sU -p 2300-2320 SUNUCU.IP.ADRESİNİZ
nmap -Pn -p- --min-rate 1000 SUNUCU.IP.ADRESİNİZ

İlk komut oyunun UDP bloğunu gösterir, ikincisi TCP üzerinde açık olan her şeyi. Bir Arma 3 sunucusunun oyunun işletimi için açık tek bir TCP portuna ihtiyacı yoktur.

2. Yalnızca Arma 3'ün gerçekten ihtiyaç duyduğu portları açık bırakma

Dışarıya üç UDP portu yeter, geri kalan her şey kısıtlanır. UFW ile bu şöyle görünür, hem de tam bu sırayla, ki kendinizi dışarıda bırakmayın:

ufw allow from 203.0.113.10 to any port 22 proto tcp comment 'SSH'
ufw allow 2302:2304/udp comment 'Arma 3 oyun, Steam sorgu, Steam ana sunucu'
ufw allow from 203.0.113.10 to any port 2306 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 değiştirin. 2305 portu kapalı kalır, çünkü Bohemia onu rezerve ve şu anda kullanılmıyor olarak listeler. ufw default allow outgoing satırı önemlidir: BattlEye sunucudan arma31.battleye.com adresine bir bağlantı kurar ve bunun için giden yönde TCP ile UDP üzerinde 2344, TCP üzerinde ise 2345 portuna ihtiyaç duyar. Giden yönü topluca kapatan kişi kendi anti-cheat sistemini kapatmış olur. Değişiklikten sonra gerçek bir katılımla BattlEye'ın oyuncularınızı hâlâ geçirdiğini kontrol edin. Kurtarma yolu da dâhil tam rehber Kendinizi dışarıda bırakmadan UFW güvenlik duvarı kurma yazısında.

Veritabanı hiçbir durumda açık ağa ait değildir. Altis Life ve diğer Life çerçeveleri extDB3 eklentisi üzerinden bir MySQL veritabanıyla konuşur ve erişim bilgileri @extDB3/extdb3-conf.ini dosyasında düz metin olarak durur. /etc/mysql/mariadb.conf.d/50-server.cnf dosyasında şu satırın bulunduğunu kontrol edin:

bind-address = 127.0.0.1

3. Sunucu tarayıcısından düşmeden Steam sorgu portunun riskini azaltma

2303 UDP portu, herkese açık bir Arma 3 sunucusunun en hassas noktasıdır. Bu port A2S sorgularını, yani Steam sunucu tarayıcısının standart sorgusunu yanıtlar: A2S_INFO adı, haritayı ve oyuncu sayısını verir, A2S_PLAYERS oyuncu listesini, A2S_RULES ise mod ve imza listesini. Bir sorgu küçük bir UDP paketidir, yanıt ise bunun katlarıdır. US-CERT, TA14-017A uyarısında Steam protokolünü 5,5 bant genişliği amplifikasyon faktörüyle listeler; Arma 3'te yanıt özellikle büyük olur, çünkü mod listesinin tamamı yanıtla birlikte gönderilir.

Bundan iki şey çıkar. Birincisi, bir saldırgan sahte gönderen adresiyle sorgular gönderdiğinde sunucunuz üçüncü kişilere karşı amplifikasyon aracı olarak kötüye kullanılabilir. İkincisi ve sizin için daha önemlisi, her sorgu, simülasyonu taşıyan o tek çekirdeğin işlem zamanını tüketir. Bohemia 2015'ten bu yana konuyla ilgili bir kayıt tutuyor (T83469): Oyun portuna veya Steam sorgu portuna gönderilen sahte UDP paketleri CPU'yu %100'e çıkarıp sunucuyu donduruyordu ve sorgu portu üzerinden başarılı bir saldırı için 4 Mbit/s bile yetiyordu. Arma 3'te paket hızının bant genişliğinden daha tehlikeli olmasının nedeni budur.

İlk kaldıraç yanıt boyutudur. server.cfg dosyasındaki steamProtocolMaxDataSize direktifi, sunucunun sorgu yanıtına kaç bayt koyabileceğini belirler. Büyük mod listelerine sahip işletmeciler bu değeri 2048 veya üzerine çıkarır, çünkü aksi hâlde logda “Query data overflow, Mods/Signatures will not be correctly received by clients” uyarısı görünür. Ancak her artış, tam olarak saldırganın güçlendirdiği yanıtı büyütür. Bu yüzden değeri mod listenizin izin verdiği en düşük seviyede tutun ve kullanılmayan modları başlatma komutundan çıkarın:

steamProtocolMaxDataSize = 2048;

İkinci kaldıraç, yalnızca sorgu portunu etkileyen ve kaynak adres başına uygulanan bir hız sınırlamasıdır. 2303 UDP portunu topluca kapatmayın: Sorgu yanıtı olmadan sunucunuz sunucu tarayıcısından ve her durum sayfasından kaybolur, yeni oyuncular da onu bulamaz. Meşru bir sunucu tarayıcısı dakikada birkaç kez sorgular, saniyede yüzlerce kez değil.

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

BattlEye, Arma 3'ün anti-cheat sistemidir ve server.cfg dosyasında BattlEye = 1; ile açılır. Buna ait uzaktan yönetim arayüzü olan BattlEye RCon kendine ait bir UDP protokolüdür ve BattlEye/beserver_x64.cfg dosyasında yapılandırılır (_x64 ekli dosya, bugün yaygın olan arma3server_x64 sunucusu için geçerlidir):

RConPassword AlfanumerikParolanız
RConPort 2306
RConIP 127.0.0.1
MaxPing 350
RestrictRCon 0

Üç nokta belirleyicidir. RCon parolası tamamen alfanümerik olmalıdır; özel karakterler BattlEye'ın protokol ayrıştırıcısını sessizce yoldan çıkarır ve sessiz bir hatayla çalışan bir RCon erişimi, kritik anda sahip olmadığınız bir erişimdir. RConIP direktifi RCon'un hangi adreste dinlediğini belirler: Orada 127.0.0.1 yazıyorsa arayüz yalnızca yerel olarak erişilebilir ve RCon aracınız ona bir SSH yönlendirmesi üzerinden ulaşır. RConPort ise oyun bloğunun üzerinde olmalıdır; yaygın olan, oyun portu artı 4, yani 2306'dır. RCon'u dışarıya açmak zorunda olan kişi portu yalnızca yönetici ekibinin sabit adresi için açar.

Bir şey burada net olmalı: BattlEye bir anti-cheat sistemidir, DDoS koruması değil. Bağlanmış olan oyuncuları denetler. Sunucunuzu flood ile dolduran bir saldırgan ise zaten katılmak istemiyor.

5. Headless client'ı sabit adrese bağlama

Headless client, grafiği olmayan ikinci bir Arma 3 örneğidir; bir oyuncu gibi sunucuya bağlanır ve yapay zekâ hesaplamasını sunucudan devralır. Büyük görevlerde bu, elde edilebilecek en önemli performans kazancıdır, çünkü aksi hâlde yapay zekâ simülasyonla aynı çekirdekte durur. Bu özellik server.cfg dosyasında etkinleştirilir:

headlessClients[] = {"127.0.0.1"};
localClient[] = {"127.0.0.1"};

İyi haber: Sunucu bu kayıtlar olmadan hiçbir headless client bağlantısına izin vermez. Kötü haber: localClient[] direktifi, kayıtlı adrese sınırsız bant genişliği ve pratikte hiç gecikme denetimi tanımaz. Oraya yalnızca 127.0.0.1 adresini ya da kendi headless client sunucunuzun sabit adresini yazın, asla bütün bir adres aralığını yazmayın. İstemci -client -connect=127.0.0.1 -port=2302 -password=... ile başlatılır ve maxPlayers değerinden bir slot kullanır. Bunu hesabınıza katın, yoksa oyuncularınız dolu bir sunucuyla karşılaşır.

6. Katılımı, imzaları ve oylamaları sertleştirme

Bu ayarlar hattınızı korumaz, ama normal katılım yolundan gelen her şeyi kapatır: değiştirilmiş istemciler, oyun içinde betik çalıştırma ve oylama istismarı. Aşağıdaki satırlar, herkese açık her sunucunun server.cfg dosyasına aittir:

verifySignatures = 2;
BattlEye = 1;
kickDuplicate = 1;
allowedFilePatching = 0;
maxPlayers = 64;
disconnectTimeout = 30;
maxPing = 200;
maxDesync = 150;
maxPacketLoss = 50;
kickClientsOnSlowNetwork[] = {1, 1, 1, 1};
voteThreshold = 1.5;
voteMissionPlayers = 100;
onUnsignedData = "kick (_this select 0)";
onHackedData = "kick (_this select 0)";

verifySignatures = 2 ayarı tüm eklentiler için sürüm 2 imza doğrulamasını zorunlu kılar ve modlu, herkese açık her sunucu için asgari gereksinimdir. allowedFilePatching = 0 ayarı, -filePatching ile başlatılmış istemcilerin katılımını reddeder (1 değeri yalnızca headless client'lara izin verir, 2 değeri herkese). kickDuplicate = 1 aynı kimliğin ikinci bağlantısını dışarı atar. kickClientsOnSlowNetwork[] her kayıt için, maxPing, maxPacketLoss, maxDesync ve disconnectTimeout değerlerinden gelen dört eşiğin yalnızca loglanacağına (0) mı yoksa uygulanacağına (1) mı karar verir. disconnectTimeout 5 ila 90 saniye arasındaki değerleri kabul eder. 1'in üzerindeki bir voteThreshold değeri oylamaları ulaşılamaz hâle getirir ve böylece bir sunucuyu tek bir saldırı paketi olmadan rahatsız etmenin en sevilen yolunu, yani oylamayla görev değişimini bitirir.

7. Kaynak adres başına paket ve bağlantı hızlarını sınırlama

Küçük saldırılara ve özensiz botlara karşı kaynak adres başına bir üst sınır işe yarar. Arma 3 yalnızca UDP kullandığı için hashlimit modülüyle çalışılır ve sorgu portu, oyun portuna göre belirgin biçimde daha sıkı bir sınır alır:

iptables -I INPUT -p udp --dport 2303 -m hashlimit --hashlimit-name a3_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p udp --dport 2302 -m hashlimit --hashlimit-name a3_game --hashlimit-mode srcip --hashlimit-above 900/sec --hashlimit-burst 1200 -j DROP
iptables -I INPUT -p udp --dport 2302:2306 -m length --length 0:27 -j DROP

İlk kural, aynı kaynaktan gelen sorguları saniyede kalıcı olarak ondan fazla olduğunda düşürür; ikincisi oyun paketlerini saniyede kalıcı olarak 900'den fazla olduğunda; üçüncüsü ise kullanılabilir veri yükü olmayan UDP paketlerini. Üç sayı da başlangıç değeridir, kesin doğrular değil: 80 oyuncuyla dolu bir Life sunucusu, altı kişilik bir Antistasi turundan belirgin biçimde daha fazla paket üretir ve fazla sıkı ayarlayan kişi kendi oyuncularını dışarı atar. Önce normal işletimde bir hafta ölçün.

Buna dair iki not. 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. Sık gözden kaçan bir darboğaz da kernel'in bağlantı izlemesidir: UDP de orada kayıt oluşturur ve çok sayıda sahte adresten gelen bir sorgu flood'u 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 komut gösterir:

sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max

8. basic.cfg: bant genişliği, paket boyutları ve ek dosyalar

Bir Arma 3 sunucusunun ikinci yapılandırma dosyasının adı basic.cfg olup -cfg= parametresiyle yüklenir, -config= ise server.cfg dosyasını yükler. Bu dosya ağ davranışını yönetir ve doğrudan güvenlikle ilgili tam olarak bir değer içerir:

MaxMsgSend = 1024;
MaxSizeGuaranteed = 512;
MaxSizeNonguaranteed = 256;
MinBandwidth = 15000000;
MaxBandwidth = 100000000;
MinErrorToSend = 0.001;
MinErrorToSendNear = 0.01;
MaxCustomFileSize = 0;
class sockets { maxPacketSize = 1400; };

MaxCustomFileSize, oyuncuların yanında getirdiği ve sunucunun diğer herkese dağıttığı yüz ve ses dosyaları için bayt cinsinden azami boyuttur. 0 değeri bu dağıtımı kapatır. Böylece tek bir istemcinin hiçbir saldırı altyapısına ihtiyaç duymadan sunucunuzun bant genişliğini işgal ettiği bir yol ortadan kalkar. MinBandwidth, sunucunun güvenceli kabul ettiği bant genişliğidir; yol gösterici değer, oyuncu sayısı çarpı 256 kbit/s, yani 64 slot için yaklaşık 16 Mbit/s'tir. Fazla iyimser değerler yükü ve desenkronizasyonu artırır, çünkü sunucu sonradan düşürdüğü mesajlar üretir. MaxMsgSend simülasyon adımı başına paket sayısını sınırlar ve desenkronizasyona karşı ilk kaldıraçtır; standart değer olan 128, modern sunucular için fazla düşük tutulmuştur.

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. apt-get install -y vnstat sysstat ile ölçüm kalıcı olarak arka planda çalışır ve server.cfg dosyasındaki logFile = "arma3server.log"; satırı size buna ek olarak sunucunun bakışını verir. 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 portrange 2302-2306 -c 200 -q

Portların karşılaştırması aydınlatıcıdır. Yük neredeyse tamamen 2303'te ise bu bir sorgu flood'udur ve işlem zamanını vurur. Yük sürekli yeni gönderen adresleriyle 2302 ila 2306 arasında eşit dağılıyorsa bu sahte bir UDP flood'udur ve hattı vurur. 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. Sunucunun en baştan düzgün biçimde nasıl kurulup güncellendiği ise SteamCMD ile oyun sunucusu kurma yazısında.

Bu önlemler nerede biter

Ş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. İkinci büyüklük paket hızıdır ve Arma 3'te neredeyse her zaman önce o 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 paketleri düşürmeye başlar; Arma 3 simülasyonu ise buna ek olarak tek bir çekirdeğe bağlıdır.

Gösterge Değer
Standart port bloğu 2302 ila 2306 UDP, oyunun işletimi için TCP yok
Sorgu portu oyun portu artı 1, standart 2303 UDP
RCon portu (BattlEye) RConPort ile serbestçe seçilebilir, yaygın olan oyun portu artı 4, yani 2306 UDP
Birden fazla örnekte port aralığı en az 100 (2302, 2402, 2502)
Normal işletimde bant genişliği yol gösterici değeri oyuncu sayısı çarpı 256 kbit/s, yani 64 slotta yaklaşık 16 Mbit/s
Steam protokolünün amplifikasyon faktörü US-CERT TA14-017A uyarısına göre 5,5
Etkili bir saldırının belgelenmiş alt sınırı sorgu portuna gelen 4 Mbit/s, bir Arma 3 sunucusunu dondurmaya yetti (Bohemia kaydı T83469)
Paket cinsinden 1 Gbit/s 64 baytlık paket boyutunda saniyede yaklaşık 1,49 milyon paket
KernelHost'ta filtrelenen zirve değerler saniyede 41,5 milyon pakette 473,4 Gbit/s, ayrıca 112,2 Gbit/s'lik bir UDP flood'u

4 Mbit/s'lik satır en rahatsız edici olanıdır. Arma 3'te bir saldırının etkili olması için büyük olması gerekmez: Yalnızca doğru porta yeterince paket göndermesi gerekir. İşletmeciler bunu “doluluk hiç de yüksek değildi, buna rağmen her şey gitti” biçiminde yaşar. Tersinden bakıldığında hacimsel saldırılar için basit fizik geçerlidir: 473,4 Gbit/s söz konusuysa her yerel ayar anlamsızdır, çünkü oyuncularınızın paketleri daha öncesinde geçemez hâle gelir. 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. 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. Sabit bir oyuncu kitlesi ve bir rekabet ortamı olan bir Life sunucusu için bu, istisna değil kuraldı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:

  • 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 ve 2303 UDP'de neye izin verildiğini ayrı ayrı ayarlarsınız, böylece sorgu portunu oyun portuna göre belirgin biçimde daha sıkı işletebilirsiniz.
  • 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.
  • Her oyuna uygun koruma profili, aynı şekilde herhangi bir TCP veya UDP portunda çalışan değiştirilmiş ve 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, örneğin 2302 ve 2303 ayrı ayrı
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 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

Arma 3 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.

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

“Portu 2302'den 2402'ye taşıdım, saldırı devam etti”: Bu beklenen sonuçtur. Sunucu yeni portunu kendisi Steam ana sunucusuna bildirir ve sunucu listesi onu hemen yeniden yayınlar. Port değişikliği yalnızca eski bir ekran görüntüsündeki eski bir adresi kullanan birine karşı işe yarar.

“2303'ü tamamen kapattım, artık bizi kimse bulamıyor”: Tam olarak bu olur. Steam sorgu portunda yanıt olmadığında sunucu tarayıcısındaki kayıt görünmez ve her durum sayfası ile her Discord botu sunucuyu çevrimdışı gösterir. Doğru olan, kaynak adres başına bir hız sınırlamasıdır, kapatma değil.

“Logda NetServer::SendMsg: cannot find channel yazıyor”: Bu mesaj, sunucu artık var olmayan bir bağlantıya yazmak istediğinde gelir. Kural olarak kopan oyuncu bağlantılarına ve performans düşüşlerine eşlik eder (Bohemia bunu T83936 altında izliyor), zorunlu olarak bir saldırıya değil. Önce arayüzün paket hızının gerçekten dikkat çekici olup olmadığını kontrol edin.

“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, 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.

“Yeni güvenlik duvarından beri BattlEye bütün oyuncuları atıyor”: Sunucu artık arma31.battleye.com adresine ulaşamıyor. TCP ve UDP üzerinde 2344, TCP üzerinde ise 2345 giden portları açık kalmalıdır, yoksa sunucunun anti-cheat bağlantısı kopar.

“Ö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 Arma 3 sunucusunun dışarıya tam olarak üç UDP portuna ihtiyacı vardır: oyun ve ses için 2302, Steam sorgusu için 2303 ve Steam ana sunucusuna kayıt için 2304. Oyunun TCP'ye ihtiyacı yoktur.
  • 2306 UDP portu BattlEye'ı ve RCon arayüzünü taşır ve yalnızca kendi yönetici adreslerinize aittir; bu, beserver_x64.cfg dosyasındaki RConPort ve RConIP direktifleriyle belirlenir.
  • 2303 Steam sorgu portu en hassas noktadır: US-CERT TA14-017A'ya göre Steam protokolünün amplifikasyon faktörü 5,5'tir ve her sorgu, simülasyonu taşıyan çekirdeğin işlem zamanını tüketir. Kapatmak yerine sınırlamak gerekir.
  • steamProtocolMaxDataSize değerini mod listesinin izin verdiği kadar küçük tutun ve basic.cfg dosyasında MaxCustomFileSize = 0; ayarını yapın: İkisi de sunucunuzun sorulmadan gönderdiği veri miktarını küçültür.
  • Arma 3'te belirleyici olan paket hızıdır, bant genişliği değil. Bohemia 2015'ten bu yana T83469 altında, sorgu portuna gelen 4 Mbit/s'nin bile bir sunucuyu dondurmaya yettiğini belgeliyor.
  • Yerel önlemler hatta son bulur. 1 Gbit/s saldırı hacminden veya saniyede birkaç yüz bin paketten sonra yalnızca sunucunun önündeki ağda yapılan filtreleme belirleyicidir.
  • KernelHost'ta iki kademeli sürekli koruma her sunucu paketinde ek ücret olmadan dâhildir, teslimden itibaren etkindir ve null routing kullanmaz. Advanced DDoS Protection ise ayda 50,00 EUR'dan başlayarak buna dedicated bir koruma IP'si ve port başına kendiniz yönetebileceğiniz kurallar ekler.

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

Arma 3 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. Aydınlatıcı olan, yükün portlar arasındaki dağılımıdır: Neredeyse her şey 2303 UDP üzerindeyse bu bir Steam sorgu flood'udur ve işlem zamanını vurur. Yük sürekli yeni gönderen adresleriyle 2302 ila 2306 arasında dağılıyorsa bu sahte bir UDP flood'udur ve hattı vurur. İki değer de dikkat çekmiyor, sunucu buna rağmen takılıyorsa bunun nedeni çoğunlukla görev ya da yapay zekâ yüküdür.
Bir Arma 3 sunucusu gerçekten hangi portlara ihtiyaç duyar?
Dışarıya tam olarak üç UDP portuna: oyun trafiği ve yerleşik sesli iletişim VON için 2302, Steam sorgusu için 2303 ve Steam ana sunucusuna kayıt için 2304. Bohemia, 2305 portunu rezerve ve şu anda kullanılmıyor olarak listeler; 2306 portu ise RCon dâhil BattlEye trafiğini taşır ve yalnızca yönetici adreslerinize aittir. Arma 3'ün oyunun işletimi için TCP'ye ihtiyacı yoktur. -port başlatma parametresi yalnızca ilk portu belirler, kalan dördü bundan sabit biçimde oyun portu artı 1 ila artı 4 olarak türer.
2303 Steam sorgu portunu öylece kapatabilir miyim?
Hayır. 2303 UDP portunda yanıt olmadığında sunucunuz Steam sunucu tarayıcısından kaybolur ve her durum sayfası ile her Discord botu onu çevrimdışı bildirir. Yeni oyuncular da onu artık bulamaz. Doğru olan, kaynak adres başına bir hız sınırlamasıdır: Gerçek bir sunucu tarayıcısı dakikada birkaç kez sorgular, bir saldırgan ise saniyede yüzlerce kez. Buna ek olarak steamProtocolMaxDataSize değerini mod listenizin izin verdiği en düşük seviyede tutmak yardımcı olur, çünkü bu değer doğrudan yanıtın boyutunu belirler.
Steam sorgu yansıtması nedir ve neden Arma 3 sunucularını vurur?
Steam sorgu yansıtması, bir saldırganın sahte gönderen adresiyle çok sayıda oyun sunucusuna sorgu göndermesi ve bu sunucuların yanıtlarının asıl kurbanda toplanması anlamına gelir. US-CERT, TA14-017A uyarısında Steam protokolünün bant genişliği amplifikasyon faktörünü 5,5 olarak veriyor. Arma 3'te yanıt özellikle büyük olur, çünkü mod ve imza listesinin tamamı yanıtla birlikte gönderilir. Sunucunuz iki yönden etkilenir: Üçüncü kişilere karşı amplifikasyon aracı olarak kullanılabilir ve her sorgu, simülasyonu taşıyan o tek çekirdeğin işlem zamanını tüketir.
BattlEye, Arma 3 sunucumu DDoS saldırılarına karşı korur mu?
Hayır. BattlEye bir anti-cheat sistemidir ve zaten bağlanmış olan oyuncuları denetler. Sunucunuzu UDP paketleriyle dolduran bir saldırgan katılmak istemiyordur ve BattlEye'ın denetleyecek bir şeyi olmadan önce paketleri çoktan ulaşmış olur. Buna rağmen herkese açık bir sunucuda BattlEye zorunludur. Özel dikkat gereken yer RCon arayüzüdür: beserver_x64.cfg dosyasında belirlenen RConPort üzerinde UDP ile çalışır, yaygın olan 2306'dır ve RConIP ile 127.0.0.1 adresine ya da sabit bir yönetici adresine sınırlanmalıdır.
Şimdi hızlıca IP adresini veya portu değiştirmek işe yarar mı?
Yalnızca kısa süre. Sunucu adresini ve portunu kendisi Steam ana sunucusuna bildirir ve sunucu listesi ikisini de dakikalar içinde yeniden yayınlar. Bu yüzden 2302'den 2402'ye bir port değişikliği yalnızca eski bir ekran görüntüsündeki eski bir bilgiyi kullanan birine karşı işe yarar. Adres değişikliği zaman kazandırır, ama yeni adres sunucu listesinde yeniden herkese açık durduğu sürece sorunu çözmez. Ayrıca eski DNS kayıtlarını da düşünün: Önceki adrese işaret eden, unutulmuş bir A kaydı her değişikliği etkisiz kılar.
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. Mantıklı olan, 2303 UDP için sıkı ve 2302 UDP için belirgin biçimde daha geniş tutulmuş, kaynak adres başına hashlimit kurallarıdır. Hacimsel saldırılar ise sunucunun önündeki ağda son bulmalıdır.
Arma 3 sunucum hangi büyüklükten sonra bunu tek başına başaramaz?
Çoğu işletmecinin beklediğinden daha erken. Bohemia 2015'ten bu yana T83469 kaydı altında, bir Arma 3 sunucusunu dondurmak için Steam sorgu portuna gelen 4 Mbit/s sahte sorgunun bile yettiğini belgeliyor, çünkü simülasyon özünde tek bir işlem çekirdeğinde çalışır. Hacimsel saldırılarda ise fizik geçerlidir: Tipik bir oyun sunucusu 1 Gbit/s'lik bir hatta bağlıdır, bu saniyede 125 megabayt eder ve 64 baytlık paketlerde saniyede yaklaşık 1,49 milyon paket demektir. Normal bir sunucu kernel'i bunların yalnızca birkaç yüz binini işler.
Headless client'ı doğru biçimde nasıl güvene alırım?
server.cfg dosyasındaki iki satır üzerinden: headlessClients[] ve localClient[]. Bu kayıtlar olmadan sunucu hiçbir headless client bağlantısına izin vermez. Oraya yalnızca 127.0.0.1 adresini ya da kendi headless client makinenizin sabit adresini yazın, asla bütün bir adres aralığını yazmayın, çünkü localClient[] kayıtlı adrese sınırsız bant genişliği ve pratikte hiç gecikme denetimi tanımaz. Ayrıca her headless client'ın maxPlayers değerinden bir slot kullandığını göz önünde bulundurun.
KernelHost'taki 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.
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, örneğin 2302 ve 2303 UDP'yi 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.

Arma 3 Arma 3 DDoS koruması Altis Life Oyun sunucusu koruması BattlEye Headless Client Port 2302 Advanced DDoS Protection