Terraria sunucusunu DDoS saldırılarına karşı koruma
Terraria'nın neden yalnızca TCP konuştuğu, sunucunun gerçekten hangi portlara ihtiyaç duyduğu, serverconfig.txt, TShock ve 7878'deki REST API'yi 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ığı.
Terraria sunucusunu DDoS saldırılarına karşı korumak isteyen kişi özel bir durumla karşı karşıyadır: Terraria yalnızca TCP konuşur. Oyun trafiği tam olarak tek bir port üzerinden, 7777 TCP üzerinden akar ve oyun hiçbir UDP portu açmaz. Ağda oyun sunucusu koruması üzerine dolaşan tavsiyelerin neredeyse tamamı UDP oyunları için yazılmıştır ve burada ya boşa düşer ya da yanlış yere denk gelir.
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 Terraria sunucusu (vanilla, TShock veya tModLoader) 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, ölçüm değerlerini kaydedin (“Kayıt tutma” bölümüne bakın), saldırıdan sonra bu değerler kaybolur.
Neden özellikle Terraria sunucuları DDoS saldırılarına uğrar
Terraria sunucuları rahat bir hedeftir, çünkü adresleri zorunlu olarak herkese açıktır. Vanilla Terraria'nın yerleşik bir sunucu tarayıcısı yoktur: Oyuncular “Multiplayer” ve “Join via IP” üzerinden bağlanır, yani birinin önceden duyurmuş olması gereken bir adres üzerinden. Yeni oyuncu isteyen kişi sunucusunu terraria-servers.com, tserverweb.com veya topg.org gibi liste sayfalarına kaydeder ya da adresi Discord üzerinden dağıtır. Bu yolların her biri saldırgana, oyuncuya verdiğinin aynısını verir: düz metin olarak IP adresi ve port.
Bir Terraria sunucusu, donanımda, dünyada ve mod listesinde hiçbir şey değişmediği hâlde sürekli çevrimdışı oluyorsa, bunun en olası açıklaması bir saldırıdır. Buna bir projenin tipik durumu ekleniyor: sabit oyun saatleri, rakip sunucular, banlanmış oyuncular ve toplulukta kavga. Bir saldırı, onu sipariş edene ne beceri ne de anlamlı bir para harcaması getirir; bir Terraria server booter, ayda birkaç euroya abonelik olarak satılıyor. Bir DDoS saldırısının teknik olarak ne olduğunu ve nasıl kurulduğunu DDoS saldırısı nedir? yazısı anlatıyor.
Terraria TCP üzerinden çalışır, UDP üzerinden değil
Bu, pratikte diğer her oyun sunucusundan en önemli farktır. Dedicated Terraria sunucusu bağlantıları bir TCP dinleyicisiyle kabul eder (oyun motorunda Terraria.Net.Sockets.TcpSocket sınıfı) ve hiçbir UDP soketi açmaz. Bunun, savunmanızın tamamını belirleyen dört sonucu vardır:
- Tam olarak kurulmuş bir TCP bağlantısının kaynak adresi sahte olamaz. Saldırganın el sıkışmayı tamamlamak için sunucunun SYN-ACK yanıtını alması gerekir. Yani gerçekten bağlı olan kişi gerçek bir adresten gelir. IP yasakları ve bağlantı üst sınırları bu yüzden Terraria'da bir UDP oyununa göre belirgin biçimde daha iyi işler.
- Bir SYN flood'u ise pekâlâ sahte adreslerle yapılabilir, çünkü el sıkışmayı hiç tamamlamaz. Bu türe karşı hiçbir IP yasağı yardımcı olmaz, yalnızca SYN cookie'leri ve önündeki ağda yapılan filtreleme işe yarar.
- 7777 portuna kabul edilen her TCP bağlantısı, yalnızca kernel'de değil, oyun sürecinde de kaynak tüketir. Bu da slot tükenmesini, en az bant genişliğiyle yapılan en etkili saldırı hâline getirir.
- Bir UDP flood'u buna rağmen sunucunuzu vurur. Paketlerin hattınızı doldurması için kabul edilmeleri gerekmez. Terraria'nın UDP konuşmaması hattı korumaz, yalnızca oyun sürecinin paketlerin kendisini işlemesini engeller.
Bir istisna var: Dedicated sunucu -steam ve -lobby friends ya da -lobby private ile başlatıldığında bağlantı Steam ağı üzerinden, yani 27000 ila 27100 aralığındaki UDP portları üzerinden akar. Bu başka bir işletim kipidir ve IP adresi üzerinden erişilen klasik sunucu değildir.
Asıl mesele olan portlar
Bir Terraria sunucusunun açık ağda tam olarak tek bir porta ihtiyacı vardır: 7777 TCP. Bu tablodaki geri kalan her şey ya internete hiç ait değildir ya da yalnızca kendi adresinize aittir.
| Ne için | Port | Protokol | Nerede ayarlanır | Açık ağa ait mi? |
|---|---|---|---|---|
| Terraria oyun trafiği | 7777 | TCP | serverconfig.txt: port=7777 |
evet, tek port olarak |
| UDP üzerinden Terraria | yok | yok | oyun hiçbir UDP soketi açmaz | hayır |
| Sorgu ve durum portu | yok | yok | Vanilla Terraria'nın kendine ait bir sorgu protokolü yoktur | hayır |
| RCON | yok | yok | Terraria'da RCON yoktur, uzaktan yönetim yalnızca TShock üzerinden | hayır |
| TShock REST API | 7878 | TCP | tshock/config.json: RestApiPort |
hayır |
| tModLoader sunucusu | 7777 | TCP | aynı serverconfig.txt |
evet, tek port olarak |
Steam kipi (-steam -lobby) |
27000 ila 27100 | UDP | yalnızca Steam işletim kipinde | hayır |
| Pterodactyl Wings | 8080 | TCP | panel arka plan süreci | hayır, yalnızca kendi adresiniz |
| Pterodactyl SFTP | 2022 | TCP | panel SFTP | hayır, yalnızca kendi adresiniz |
| SSH | 22 | TCP | /etc/ssh/sshd_config |
yalnızca kendi adresiniz |
Terraria'nın ne bir sorgu portu ne de RCON tanıması, güvene alma açısından iyi bir haberdir: Counter-Strike, Rust veya ARK'ta yansıtma saldırıları için düzenli olarak kötüye kullanılan iki uç nokta burada basitçe yoktur. Karşılığında saldırı yüzeyi 7777 portunda o kadar daha yoğunlaşır ve TShock kullanan kişi 7878 portuyla kendisine ikinci bir yüzey ekler.
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 Terraria 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: aslında 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:7777 “bütün internetten erişilebilir” anlamına gelir, 127.0.0.1:7878 ise “yalnızca yerel” demektir ve güvenlik duvarı kuralına ihtiyaç duymaz. Bu listede Terraria süreciniz için bir UDP kaydı görünüyorsa sunucu Steam kipinde çalışıyordur. Saldırganın bakışını, dışarıdan yapılan bir port taraması verir:
nmap -Pn -p- --min-rate 1000 SUNUCU.IP.ADRESİNİZ
2. Yalnızca 7777 TCP'yi açık bırakma, geri kalan her şeyi kapatma
Terraria için dışarıya tek bir izin yeter. Bir UDP kuralına ihtiyacınız yoktur ve 7777 için bir UDP kuralı basitçe yanlış olur: Hiçbir şeyin dinlemediği bir porta trafik geçirir. 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/tcp comment 'Terraria'
ufw allow from 203.0.113.10 to any port 7878 proto tcp comment 'TShock REST'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose
203.0.113.10 adresini kendi adresinizle değiştirin. Kurtarma yolu da dâhil tam rehberi Kendinizi dışarıda bırakmadan UFW güvenlik duvarı kurma yazısında bulabilirsiniz. Bir panel işleten kişi 8080 ve 2022 portlarını da kendi adresine sınırlar.
3. serverconfig.txt: parolayı, maxplayers ve secure değerlerini doğru ayarlama
Terraria sunucusunun merkezî yapılandırma dosyasının adı serverconfig.txt olup başlatmada -config serverconfig.txt ile verilir. Güvene alma için dört direktif belirleyicidir:
port=7777
maxplayers=16
password=UzunRastgeleBirParola
secure=1
upnp=0
banlist=banlist.txt
password=, normal yolu izleyen katılım flood'larına karşı en etkili ücretsiz önlemdir. Nedeni protokolde yatar: Bir istemci önce sürüm kimliğiyle (örneğin Terraria279) 1 numaralı mesajı gönderir, parola ayarlanmışsa sunucu 37 numaralı mesajla yanıt verir, istemcinin 38 numaralı mesajla doğru biçimde yanıtlaması gerekir ve ancak bundan sonra sunucu 3 numaralı mesajla oyuncu slotu dâhil izni gönderir. Doğru parola olmadan bir saldırgan, bir katılımın pahalı kısmı olan dünya aktarımına asla ulaşamaz.
maxplayers 1 ila 255 arasındaki değerleri alır, fabrika ayarı 16'dır (1.4.0.1 sürümünden önce 8'di). 255 üst sınırı keyfî bir sayı değildir: Terraria oyuncuları tek bir baytla adresler. maxplayers değerini gerçekten ihtiyacınız olandan yüksek ayarlamayın, çünkü her slot bir saldırganın işgal edebileceği bir kaynaktır. secure=1 yerleşik hile denetimini açar (komut satırında -secure), upnp=0 ise sunucunun bir yönlendiricide kendi başına port açmasını engeller.
4. TShock'u güvene alma: 7878'deki REST API ve giriş flood'u
TShock, Terraria için en yaygın sunucu eklentisidir ve REST API ile birlikte ikinci, tam yetkin bir saldırı yüzeyi getirir. Fabrika ayarında 7878 TCP portunda durur ve serverconfig.txt dosyasında değil, tshock/config.json dosyasında yapılandırılır. Teslim durumunda kapalıdır ("RestApiEnabled": false) ve ihtiyaç duymadığınız sürece tam olarak öyle kalmalıdır.
İhtiyaç duyarsanız şu değerler önemlidir:
"RestApiEnabled": true,
"RestApiPort": 7878,
"EnableTokenEndpointAuthentication": true,
"LogRest": true,
"RESTMaximumRequestsPerInterval": 5,
"RESTRequestBucketDecreaseIntervalMinutes": 1
Bunda iki şey önemlidir. Birincisi, EnableTokenEndpointAuthentication değeri false olduğu sürece /status uç noktası token olmadan sunucu adını, portu, oyuncu sayısını ve oyuncu adlarını verir. Bu, durum sayfaları ve Discord botları için rahattır ve aynı zamanda bir saldırının ne zaman değeceğini bilmek isteyen her saldırgan için ücretsiz bir keşiftir. İkincisi, /v2/token/create uç noktası kullanıcı adı ve paroladan bir erişim token'ı üretir ve 7878 portu açık olduğu anda dışarıdan erişilebilir: yönetici hesabınıza karşı, bu arada işlem zamanı da tüketen bir parola deneme saldırısı. RESTMaximumRequestsPerInterval ve RESTRequestBucketDecreaseIntervalMinutes değerlerinden oluşan kova bunu yavaşlatır, ama bir güvenlik duvarı kuralının yerini tutmaz.
Oyuna erişimin kendisi için başka TShock değerleri geçerlidir. MaximumLoginAttempts 3'tedir ve üç başarısız denemeden sonra bir oyuncuyu dışarı atar. RequireLogin (standart false) her oyuncu için bir hesap şart koşar. EnableIPBans (standart true) ve KickProxyUsers (standart true) bir TCP oyununda özellikle etkilidir, çünkü kurulmuş bir bağlantının kaynak adresi sahte olamaz. Sıkça saldırı olarak bildirilen griefing'e karşı ise TileKillThreshold (60), TilePlaceThreshold (20), TileLiquidThreshold (15) ve ProjectileThreshold (50) eşik değerleri işe yarar; her biri saniyedeki eylem sayısıdır.
5. Kaynak adres başına bağlantıları sınırlama ve SYN cookie'lerini denetleme
Terraria TCP üzerinde çalıştığı için en etkili yerel kural, kaynak adres başına eşzamanlı bağlantılar için bir üst sınırdır. Gerçek bir oyuncuya tam olarak bir tanesi yeter:
iptables -I INPUT -p tcp --dport 7777 --syn -m connlimit --connlimit-above 3 --connlimit-mask 32 -j DROP
iptables -I INPUT -p tcp --dport 7777 --syn -m hashlimit --hashlimit-name terraria_syn --hashlimit-mode srcip --hashlimit-above 10/min --hashlimit-burst 20 -j DROP
İlk kural, bir adres eşzamanlı olarak üçten fazla bağlantı açık tuttuğu anda yeni bağlantıları düşürür. İkincisi aynı kaynaktan gelen bağlantı denemelerinin hızını, 20'lik bir esneme payıyla dakikada ona sınırlar. İki sayı da başlangıç değeridir, kesin doğrular değil: Ortak bir bağlantının arkasındaki durumlarda (ev arkadaşlığı, okul ağı, mobil operatör) sunucu aynı adres altında birden fazla meşru oyuncu görür. Ö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. El sıkışmayı hiç tamamlamayan sahte SYN paketlerine karşı bu kuralların hiçbiri yardımcı olmaz, kernel'in kendisi yardımcı olur. Şu üç değeri denetleyin:
sysctl net.ipv4.tcp_syncookies net.ipv4.tcp_max_syn_backlog net.core.somaxconn
net.ipv4.tcp_syncookies 1 olmalıdır; Debian ve Ubuntu'da kural olarak zaten öyledir. SYN cookie'leri yarı açık bağlantıların kuyruğundan vazgeçer ve durumu istemcinin yanıtından yeniden kurar; böylece hat dolu olmadığı sürece bir SYN flood'u boşa düşer. net.core.somaxconn Linux 5.4'ten bu yana 4096, öncesinde ise 128'dedir: Değer küçükse kernel, tamamen kurulmuş bağlantıları oyun süreci onları kabul edemeden düşürür.
6. Slot tükenmesini önleme: bir port taraması sunucunuzu neden doldurur
Slot tükenmesi, bir Terraria sunucusuna yapılan en ucuz etkili saldırıdır: Saldırgan, sunucunun oyuncu slotu sayısı kadar TCP bağlantısını 7777 portuna açar ve bunları açık tutar. Bu ona neredeyse hiç bant genişliğine mal olmaz, ama sunucuyu doldurur. Gerçek oyuncular “Server is full” görür ve hattınızda dikkat çekici hiçbir şey olmadığı hâlde artık içeri giremez. İşletmecilerin Terraria'da saldırıya uğradıklarını sıkça fark etmemelerinin nedeni tam olarak budur.
Nedeni sayma biçiminde yatar: Bir bağlantı, istemci sürüm kimliğini hiç göndermeden önce kabul edilir. Geçmişte bu tür hayalet bağlantılar, TCP oturumu zaman aşımına uğrayana kadar dolu kalıyordu. 1.4.5 serisi bunu hafifletti; orada hemen tekrar bağlantısını kesen istemciler için artık slot ayrılmıyor. Ancak 1.4.5.7 ve 1.4.5.8'in ilk sürümlerinde, bir TCP bağlantısı açılıp el sıkışma tamamlanmadığı anda dedicated sunucu, ele alınmamış bir ObjectDisposedException ile çöküyordu. Bunun için bir nc -z ya da bir izleme sisteminin erişilebilirlik denetimi yetiyordu. Hata birkaç hafta içinde sessizce giderildi, eski konteyner imajlarında kısmen hâlâ duruyor. Bu yüzden sunucu sürümünüzü güncel tutun; bu burada bir genel geçer söz değil, somut bir erişilebilirlik sorusudur.
İki ayar ek olarak yardımcı olur. TShock kullanan kişi MaxSlots değerini istediği oyuncu sayısına, serverconfig.txt dosyasındaki maxplayers değerini ise iki yer daha yükseğe ayarlar: O zaman TShock, oyun süreci fazla bağlantıları son boşluğa almak yerine onları düzgün bir mesajla düşürür. Önceki bölümdeki bağlantı üst sınırı ise tam olarak, tek bir adresin bütün slotları bir defada işgal etmesini engelleyen kuraldır.
7. UPnP'yi kapatma ve adresi kendiniz yayınlamama
Terraria sunucusu fabrika ayarında portunu UPnP ile bir yönlendiricide açmayı dener. Kiralanmış bir sunucuda bu etkisizdir, bir ev ağında ise daha sonra haberiniz olmayacak portlar açar. Bunu serverconfig.txt dosyasında upnp=0 ile ya da komut satırında -noupnp ile kapatın.
Burada ayrıca hüsnükuruntu yerine dürüstlük işe yarar: IP adresiniz gizli tutulamaz. Bir kez bağlanmış olan her oyuncu onu bilir ve bir liste sayfasındaki kayıt onu zaten yayınlar. Etkili olan iki alışkanlıktır. Çıplak IP adresini hiçbir yerde kendiniz yayınlamayın, oyuncularınızı bir hostname üzerinden bağlayın: Terraria istemcisi bir hostname'i çözer, yani ciddi durumda bütün bağlantı yolları kopmadan adresi değiştirebilirsiniz. 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.
8. Durum sorgularını geçirmek yerine önbelleğe alma
Terraria'nın bir sorgu protokolü olmadığı için durum sayfaları, Discord botları ve liste sayfaları sunucunuzun durumunu iki yoldan biriyle belirler: 7777 portuna gerçek bir TCP bağlantısı kurup kendilerini istemci olarak tanıtırlar ya da TShock REST API'yi sorgularlar. İkisi de sunucunuza iş yükler ve ikisi de sorgulayanların sayısıyla birlikte büyür.
Karşı önlem hiçbir şeye mal olmaz: Sorguyu asla ziyaretçinin tarafından yapmayın. Tek bir hizmetin durumu sabit aralıklarla almasını sağlayın (30 ya da 60 saniye yeter), sonucu önbelleğe alın ve bütün ziyaretçilere önbellekteki durumu sunun. Böylece çok ziyaret edilen bir durum sayfası, ziyaretçi başına bir sorgu yerine aralık başına bir sorgu üretir. Bunun için REST API'yi kullanan kişi 7878 portunu bu tek hizmetin adresine sınırlar.
9. Kayıt tutma, böylece ciddi durumda veriniz olsun
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. Bir olay sırasında beş komut yeter:
sar -n DEV 1 10
ss -s
ss -tn state syn-recv | wc -l
ip -s link show eth0
tcpdump -ni eth0 tcp port 7777 -c 200 -q
Üçüncü komut Terraria'ya özgü olandır: Yarı açık bağlantıları sayar. İki basamaklı bir değer normaldir, dört ya da beş basamaklı olan bir SYN flood'udur. ss -s bunun yanında TCP bağlantılarının toplam sayısını gösterir ve oyunda kimse yokken bu sayı yaklaşık olarak maxplayers değerinize denk geliyorsa bir slot tükenmesi görüyorsunuz. 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 değerlendireceğiniz DDoS saldırısını tanıma 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. Bu büyüklükteki oyun sunucusu projelerine yapılan saldırılar genellikle 5 ila 50 Gbit/s arasındadır, yani hattınızın beş ila elli katı. O durumda connlimit kuralınızın arkada iyi olup olmaması artık bir rol oynamaz, çünkü oyuncularınızın paketleri daha öncesinde geçemez. Terraria sunucusunda CPU kullanımının normal göründüğü lag sıçramaları tam olarak böyle oluşur.
İkinci büyüklük paket hızıdır ve sıkça 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. Bir SYN flood'unda sınır daha da aşağıdadır, çünkü her SYN paketi bir durum kararı tetikler: Standart bir Linux'un bağlantı kabulünü felce uğratmak için, hat dolmadan çok önce saniyede birkaç on bin SYN paketi bile yeter. İşletmeciler bunu “doluluk hiç de yüksek değildi, buna rağmen her şey gitti” biçiminde yaşar.
Üçüncü nokta ise Terraria'da en sık gözden kaçandır: Bir saldırgan sizin protokolünüze göre davranmaz. Hiçbir UDP portunda bir şey dinlemediği hâlde adresinize UDP flood'ları ve yansıtma trafiği gönderir. Sunucunuz bu paketleri doğru biçimde düşürür, ama paketler hattınızı çoktan doldurmuştur ve tek bir paket bile oyun sürecine ulaşmadan Terraria sunucunuz çevrimdışı olur. Gerçekte hangi büyüklüklerin görüldüğünü sınıflandırmak için: KernelHost sunucularında başka şeylerin yanı sıra 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. Terraria için bu somut olarak şu anlama gelir: 7777 TCP'ye yönelen SYN flood'ları ve bağlantı flood'ları burada son bulur, ağ kartınızda değil.
İ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ı 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, 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 7777 TCP'de neye izin verildiğini ayarlarsınız ve bunun için bir talep yazmak zorunda kalmadan geri kalan her şeyi kapatabilirsiniz.
- Değişiklikler gerçek zamanlı etki eder, yani süren bir saldırı sırasında ince ayar yapabilirsiniz, örneğin kaynak adres başına izin verilen bağlantı hızını daha sıkı çekebilirsiniz.
- Uygulamaya uygun koruma profili. Terraria gibi TCP oyunları ve herhangi bir TCP ya da UDP portunda çalışan kendi ya da değiştirilmiş uygulamalarınız için uygun profiller var.
İ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 |
| Terraria için profil | TCP oyun sunucuları için otomatik profil | 7777 TCP için kendi kural setiniz, tModLoader ve TShock 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 |
Terraria 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. Sunucusunu şu anda başka bir yerde işleten kişi bu korumayı sonradan ekleyemez, ancak KernelHost'a taşınarak elde eder: Filtreleme ağın bir parçasıdır, sunucudaki bir ek değil.
Sık yapılan hatalar ve çözümleri
“Sunucu dolu, ama içinde kimse yok”: Bu bir slot tükenmesidir. ss -tn dst :7777 | wc -l ile gerçekte kaç bağlantının açık olduğunu denetleyin ve bunu oyuncu listesiyle karşılaştırın (sunucu konsolu: playing). Sayılar uyuşmuyorsa slotları yabancı bağlantılar işgal ediyordur. Karşı ilaçlar, kaynak adres başına bağlantı üst sınırı, bir sunucu parolası ve güncel bir sunucu sürümüdür.
“7777 UDP'yi açtım ve hiçbir şey değişmiyor”: Doğru, çünkü 7777 UDP'de hiçbir şey dinlemiyor. Terraria yalnızca TCP kullanır. UDP izni doğrudan zarar vermez, ama gereksiz bir açıklıktır ve başka bir oyun için yazılmış bir rehberin kopyalandığının kesin işaretidir.
“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ı denetleyin. Sayaçlar sıfırda kalıyorsa kurala ulaşılmıyor.
“Hiçbir saldırı yokken oyuncular dışarı atılıyor”: connlimit sınırınızı fazla sıkı çekerseniz bu, ortak bağlantıların arkasındaki oyuncuları vurur. TCP'de bu, UDP oyunlarına göre daha çabuk olur, çünkü bir kesintiden sonra yeniden bağlanma hemen yeni bir bağlantı üretirken eski bağlantı hâlâ TIME_WAIT durumunda bekler. Değeri kademeli olarak yükseltin ve eşleşme sayaçlarını izleyin.
“Sunucu takılıyor, hat sakin”: Bunun nedeni bir saldırıdan çok bir mod ya da bir eklentidir. tModLoader altında her ek mod aynı süreçte işlem zamanı tüketir ve çok varlık içeren bir dünya, fazladan tek bir paket gelmeden bir çekirdeği tamamen doldurur. sar -n DEV 1 10 dikkat çekici bir şey göstermiyorsa bu bir DDoS saldırısı değildi.
“Ö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 Terraria sunucusunun tam olarak tek bir açık porta ihtiyacı vardır: 7777 TCP. Oyun hiçbir UDP soketi açmaz, bir sorgu protokolü ve RCON'u yoktur.
- 7878 TCP portundaki TShock REST API ikinci saldırı yüzeyidir.
RestApiEnableddeğerinifalsebırakın ya da portu kendi adresinize sınırlayın. serverconfig.txtdosyasındaki bir sunucu parolası en etkili ücretsiz önlemdir, çünkü 37 numaralı mesaja doğru yanıt vermeyen bir saldırgan dünya aktarımına asla ulaşamaz.- Terraria'da en ucuz saldırı slot tükenmesidir: 7777 portuna kabul edilen her TCP bağlantısı, anlamlı bir bant genişliği olmadan bir yer işgal eder. Buna karşı kaynak adres başına bir üst sınır, bir parola ve güncel bir sunucu sürümü işe yarar.
- Terraria TCP kullandığı için kurulmuş bir bağlantının kaynak adresi sahte olamaz: IP yasakları burada UDP oyunlarına göre daha iyi işler. Sahte SYN flood'larına karşı ise yalnızca SYN cookie'leri ve önündeki ağda yapılan filtreleme yardımcı olur.
- Bir UDP flood'u, Terraria sunucunuz UDP konuşmadığı hâlde onu felce uğratır, çünkü oyun süreci herhangi bir şey görmeden hattı doldurur.
- Yaklaşık olarak uplink bant genişliğinizin büyüklüğünden sonra yalnızca sunucunun önündeki ağ belirleyicidir. KernelHost'ta bu filtreleme iki kademelidir, kalıcı olarak etkindir ve her sunucu paketinde ek ücret olmadan bulunur.
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
Bir Terraria sunucusu hangi porta ve hangi protokole ihtiyaç duyar?
Terraria'nın UDP yerine TCP kullanması neden önemlidir?
Terraria sunucum kimse oynamadığı hâlde Server is full bildiriyor. Bu nedir?
Bir sunucu parolası saldırılara karşı işe yarar mı?
7878 portundaki TShock REST API'yi nasıl güvene alırım?
maxplayers değerine kaç oyuncu yazmalıyım?
Bir DDoS saldırısına iptables veya UFW ile karşı koyabilir miyim?
Terraria sunucum hangi saldırı büyüklüğünden sonra bunu tek başına başaramaz?
Terraria hiç UDP kullanmadığı hâlde bir UDP saldırısı beni neden vurur?
KernelHost'taki sunucum bir saldırı sırasında çevrimdışı olur mu?
KernelHost'ta DDoS koruması ek ücretli mi?
Ek olarak Advanced DDoS Protection'a ne zaman ihtiyaç duyarım?
2026 KernelHost GmbH. Tüm hakları saklıdır. Bu rehber telif hakkıyla korunmaktadır. Yazının başka web sitelerinde tamamen, kısmen ya da düzenlenmiş biçimde yayımlanması, yazılı iznimiz olmadan serbest değildir. Kaynak belirtilerek ve bağlantı verilerek yapılan alıntılar ise memnuniyetle karşılanır.

