Skydda Unturned-servern mot DDoS-attacker

Publicerad den 21 min läsning

Vilka portar en Unturned-server verkligen behöver, varför 27017 är överflödig sedan 2021, hur du begränsar förfrågningsflod, anslutningsflod och tilläggslast, och från vilken attackstorlek bara filtrering i nätet framför servern hjälper.

En Unturned-server som på kvällen försvinner ur serverlistan i några minuter och därvid kastar ut alla spelare med en tidsöverskridning har sällan ett hårdvaruproblem. Oftast pågår en attack, och det precis när det är som mest liv. Den här artikeln visar först vad du kan säkra själv utan extra kostnad, därefter var de åtgärderna tar slut rent tekniskt, och till sist vad som då måste hända i nätet framför servern.

Alla uppgifter gäller Unturned Dedicated Server (U3DS, SteamCMD-app-ID 1110390) under Debian 12, Debian 13, Ubuntu 22.04 LTS eller Ubuntu 24.04 LTS. Kommandona är skrivna för root, som vanlig användare sätter du sudo framför. Pågår attacken just nu, ändra först ingenting i konfigurationen och starta inte om servern: säkra mätvärdena (avsnitt 10), efter attacken är de borta.

Varför just Unturned-servrar angrips

Unturned-servrar angrips för att deras adress är offentlig, speltrafiken löper över UDP och en attack varken kräver kunnande eller nämnvärda pengar av den som utlöser den. Alla tre punkterna gäller här starkare än hos de flesta andra spel.

En publik Unturned-server offentliggör sin IP-adress av sig själv. Den måste göra det, annars skulle ingen hitta den: Steams serverlista frågar den direkt, och tredjepartslistor som unturned-servers.net eller BattleMetrics för upp IP-adress och port i klartext. unturned-servers.net kontrollerar enligt egen uppgift var femte minut om servern tar emot UDP-anslutningar på serverporten. För en angripare är det inget arbete, utan ett formulär.

Till det kommer spelarskaran. Unturned är gratis, tröskeln in ligger på noll, och mellan roleplay- och survivalprojekt råder verklig konkurrens om samma spelare. En bannlyst spelare, en kränkt före detta admin eller ett grannprojekt behöver ingen åtkomst till din server för att göra den obrukbar i en timme. Vad en DDoS-attack tekniskt är och varför förfalskade avsändaradresser gör den så svår att spåra förklaras i artikeln Vad är en DDoS-attack?.

Portarna som det faktiskt handlar om

En Unturned-server upptar exakt två på varandra följande UDP-portar: det värde som är satt i Commands.dat och det värdet plus ett. I standardinställningen är det 27015 och 27016. Den officiella dokumentationen från Smartly Dressed Games beskriver uppdelningen så här: den första porten bär serverlistans förfrågningar, den andra speltrafiken. Satt blir bara den första, den andra följer automatiskt.

Name Min Unturned-server
Port 27015
MaxPlayers 24
Map PEI
Mode Normal
Perspective Both
Owner 76561198000000000

Commands.dat ligger under U3DS/Servers/<Instans>/Server/Commands.dat. Dess format är egensinnigt och en vanlig felkälla: ett kommando per rad, inget likhetstecken, värdet åtskilt med ett mellanslag, och kommandona är känsliga för versaler och gemener. Rader som börjar med // är kommentarer.

Den viktigaste punkten för brandväggen lyder: port 27017 behövs inte längre sedan version 3.21.30.0 från den 21 november 2021. Dessförinnan krävde en Unturned-server tre portar, eftersom Steam-förfrågan låg på port plus två. Med den uppdateringen delar förfrågan porten med servern själv, och den tredje porten utgick. Routeranvisningar, leverantörswikier och foruminlägg nämner 27017 trots det än i dag. En öppen 27017 ger dig ingen fördel längre, den är ren angreppsyta.

Lika viktigt: Unturned har ingen inbyggd RCON-port. Den officiella dokumentationen känner bara till konsolinmatning och konsolutmatning, som går att ersätta via gränssnittet ICommandInputOutput. Varje fjärrstyrning du ser på en Unturned-server kommer från ett tillägg och har med sig en egen TCP-port. Den porten måste du själv hitta och själv begränsa, för ingen har säkrat den åt dig.

Egenskap Värde (standard) Protokoll Var det ställs in
Förfrågningsport (Steam A2S, serverlistan) 27015 UDP Port i Commands.dat
Spelport 27016 (Port plus ett) UDP går inte att ställa in separat
Tredje porten 27017 utgår sedan 3.21.30.0 (21.11.2021) inget stäng
Andra servern på samma maskin 27017, den tredje 27019 UDP Port, avstånd två
RCON ingen inbyggd port TCP bara via tillägg tilläggets konfiguration
Bindningsadress alla gränssnitt inget Bind i Commands.dat
Paket per spelare och sekund 50,0 UDP Max_Packets_Per_Second
Högsta tillåtna ping 750 ms inget Max_Ping_Milliseconds
Anslutningsfrekvens per tidsfönster 10 försök på 40,0 sekunder inget Rate_Limit_Kick_Threshold
Kö 8 platser, högst 64 inget Queue_Size i Commands.dat
Anti-cheat VAC och BattlEye, båda aktiva inget VAC_Secure, BattlEye_Secure
Steam-förfrågans förstärkningsfaktor 5,5 (US-CERT TA14-017A) UDP protokollegenskap
Normal inkommande paketfrekvens vid 24 spelare runt 1 200 paket per sekund UDP 24 gånger 50
Mättnad av en 1 Gbit/s-ledning 125 MB/s, runt 1,49 milj. paket per sekund vid 64 byte inget ledningens fysik
Attacker filtrerade på KernelHost-servrar 473,4 Gbit/s vid 41,5 milj. paket per sekund; 112,2 Gbit/s UDP-flod UDP mätvärden ur driften

Vad du kan göra själv innan du lägger ut pengar

Det här avsnittet är det längsta, och det är avsiktligt. En rent konfigurerad Unturned-server klarar små och medelstora attacker av egen kraft, oavsett hos vem den står.

1. Inventering: vad lyssnar egentligen

Innan du skriver en enda regel tittar du efter vad din server erbjuder utåt. Inte gissa, titta efter:

ss -lnup
ss -lntp

Det första kommandot visar de lyssnande UDP-socketarna, det andra TCP-socketarna. Intressant är kolumnen med den lokala adressen. 0.0.0.0:27015 och [::]:27015 betyder "nåbar från hela internet", 127.0.0.1:3306 betyder "bara lokalt" och behöver ingen brandväggsregel. Vid sidan av spelet hittar man där ofta ett RCON-tillägg, en webbpanel, en databas och en gammal testserver på 27017 som ingen längre använder. Angriparens vy får du med en portskanning utifrån, för Unturned uttryckligen med UDP:

nmap -Pn -sU -p 27000-27050 DIN.SERVER.IP.ADRESS
nmap -Pn -p- --min-rate 1000 DIN.SERVER.IP.ADRESS

2. Lämna bara 27015 och 27016 öppna

För Unturned räcker två UDP-öppningar utåt. För spelet självt behövs inte en enda TCP-port: den officiella dokumentationen kräver uttryckligen UDP för båda portarna, och spelets nätverkslager (Steam Networking Sockets, standard sedan en uppdatering) arbetar uteslutande över UDP. Den som dessutom öppnar TCP följer en föråldrad anvisning.

ufw allow 22/tcp comment 'SSH'
ufw allow 27015/udp comment 'Unturned förfrågan'
ufw allow 27016/udp comment 'Unturned spel'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

Ordningen är viktig, annars låser du ute dig själv. Den fullständiga anvisningen inklusive räddningsvägen står under Sätta upp UFW-brandväggen utan att låsa ute dig själv. Driver du flera instanser håller du det rekommenderade avståndet på två (27015, 27017, 27019) och öppnar per instans exakt de två portar som den verkligen upptar.

En webbpanel, en databas eller ett RCON-tillägg hör inte hemma i det öppna nätet. Begränsa respektive port till din egen adress med ufw allow from 203.0.113.10 to any port 8080 proto tcp, eller nå gränssnittet via en lokal SSH-vidarebefordran med ssh -N -L 8080:127.0.0.1:8080 root@DIN.SERVER.IP.ADRESS. Databasen binder man till 127.0.0.1.

3. Säkra förfrågningsporten utan att åka ur serverlistan

Förfrågningsporten är den känsligaste punkten hos en Unturned-server. Över den besvarar servern Steam-förfrågningarna A2S_INFO, A2S_PLAYERS och A2S_RULES. Spärrar du den fullständigt försvinner servern ur varje serverlista, även om den körs felfritt.

Ett A2S-svar är betydligt större än förfrågan. US-CERT för upp Steam-protokollet i sin översikt över UDP-förstärkningsattacker (TA14-017A) med en bandbreddsförstärkningsfaktor på 5,5. Konkret betyder det: en angripare skickar förfrågningar med förfalskad avsändaradress till främmande spelservrar och leder de runt fem och en halv gånger större svaren till sitt egentliga mål. Din server är då inte offret, utan förstärkaren mot en tredje part. I motsatt riktning räcker en förfrågningsflod för att få servern att försvinna ur serverlistan, utan att en enda spelare åker ut. Operatörer rapporterar precis det: servern körs, spelarna på den märker ingenting, men den går inte längre att hitta.

Mot små förfrågningsfloder hjälper en övre gräns per källadress. Legitima förfrågningar kommer sällan: Steams serverlista frågar en gång per visning, statustjänster med några minuters mellanrum.

iptables -I INPUT -p udp --dport 27015 -m hashlimit --hashlimit-name unturned_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p udp --dport 27016 -m hashlimit --hashlimit-name unturned_game --hashlimit-mode srcip --hashlimit-above 300/sec --hashlimit-burst 500 -j DROP

Den andra siffran härleds direkt ur spelet: Unturned begränsar en spelare från fabrik till 50 paket per sekund (Max_Packets_Per_Second). 300 paket per sekund och källadress lämnar alltså rikligt med luft åt en enskild uppkoppling, även när flera spelare sitter bakom samma adress. Båda värdena är startvärden, inga sanningar. Mät först en vecka av normal drift, annars kastar du ut dina egna spelare.

Rena iptables-regler är borta efter en omstart. Under Debian och Ubuntu säkrar man dem med apt-get install -y iptables-persistent och netfilter-persistent save. Under UFW hör sådana regler hemma i /etc/ufw/before.rules, eftersom de annars försvinner vid nästa ufw reload.

Till det kommer en vana som inte kostar något: om din webbplats eller din Discord-bot visar spelarantalet, fråga då inte servern från besökaren, utan mellanlagra resultatet med fasta intervall. En välbesökt statussida skapar annars en förfrågan per besökare i stället för en per intervall.

4. Sätt de inbyggda gränserna i Config.json

Unturned har i Config.json, i samma Server-mapp som Commands.dat, ett avsnitt som är viktigare för försvaret än dess namn låter ana. Standardinställningarna lyder:

"Server": {
    "VAC_Secure": true,
    "BattlEye_Secure": true,
    "Max_Ping_Milliseconds": 750,
    "Timeout_Queue_Seconds": 15.0,
    "Timeout_Game_Seconds": 30.0,
    "Max_Packets_Per_Second": 50.0,
    "Join_Rate_Limit_Window_Seconds": 40.0,
    "Rate_Limit_Kick_Threshold": 10,
    "Use_FakeIP": false
}

Max_Packets_Per_Second begränsar en ansluten spelare till 50 paket per sekund. Join_Rate_Limit_Window_Seconds och Rate_Limit_Kick_Threshold kastar ut en anslutning som inom 40 sekunder går över gränsen mer än tio gånger. VAC_Secure och BattlEye_Secure kräver båda anti-cheat-systemen på spelarsidan och håller därmed borta merparten av engångsklienterna.

En sak måste stå klar: de här gränserna verkar mot klienter som faktiskt ansluter eller försöker. Mot en flod med förfalskade avsändaradresser verkar de inte, eftersom det där aldrig uppstår någon session. De är ändå viktiga, eftersom de fångar upp det vanligaste enskilda fallet: en enda manipulerad klient som överbelastar servern på egen hand. Att låta Max_Ping_Milliseconds stå på 750 är vettigt; lägre inställt kastar servern ut halva rundor vid varje kort nätverksryck.

5. Avlasta anslutningsspårningen

Den här punkten förbises nästan alltid och förklarar avbrott som ser ut som en volymattack men inte är det. Kärnan lägger upp poster i anslutningsspårningen (conntrack) även för UDP-trafik, och vid förfalskade avsändaradresser betyder varje ny adress en ny post. Är tabellen full kasserar kärnan paket utan åtskillnad: attacken och dina spelare åker ut tillsammans. I systemloggen står då nf_conntrack: table full, dropping packet.

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

Det verksammaste steget är att inte låta Unturned-trafiken spåras alls. Spelet förvaltar sina sessioner själv och behöver ingen tillståndsspårning i kärnan:

iptables -t raw -A PREROUTING -p udp --dport 27015 -j NOTRACK
iptables -t raw -A PREROUTING -p udp --dport 27016 -j NOTRACK

Se då till att dina öppningar för de båda portarna inte längre får löpa över ESTABLISHED,RELATED, utan måste stå som egna mottagningsregler. Först därefter lönar det sig att höja nf_conntrack_max. Den som först förstorar tabellen skjuter bara upp problemet några minuter och förbrukar arbetsminne för det.

Kommer paketen fram snabbare än serverprocessen hämtar dem svämmar dessutom socketens mottagningsbuffert över. För spelarna ser det ut som paketförlust trots att ledningen är ledig:

net.core.rmem_max = 16777216
net.core.rmem_default = 1048576
net.core.netdev_max_backlog = 16384

Lägg värdena under /etc/sysctl.d/ och aktivera dem med sysctl --system. Om de behövs avslöjar kärnan själv: stiger UdpRcvbufErrors i nstat -az, eller står det varaktigt något i mottagningskön i ss -lunp, då griper de. Stannar båda på noll ändrar justeringen ingenting. Det är reserv, inte skydd.

6. Anslutningsflod, kö och vitlista

En anslutningsflod är en attack där angriparen använder den vanliga anslutningsvägen för att förbruka platser och beräkningstid i stället för att fylla ledningen. Unturned har fyra verktyg mot det, och alla står i Commands.dat:

  • Queue_Size 32 sätter kön. Standard är 8 platser, maximum är 64. En för stor kö hjälper en angripare, en för liten avvisar riktiga spelare vid varje omstart.
  • Whitelisted ställer om servern till åtkomstlista. Man för in med permit <SteamID64> i konsolen och tar bort med unpermit <SteamID64>.
  • Password DittLösenord stänger ute allt som bara har adressen ur en lista.
  • Filter avvisar spelare med otillåtna tecken i namnet, MaxPlayers 24 håller platsantalet vid det som hårdvaran verkligen bär.

En vitlista skyddar din spellogik, inte din ledning. En angripare som översvämmar din server vill inte ansluta alls. Hans paket avvisas, men de har ändå kommit fram, och det är precis poängen.

7. RocketMod, OpenMod och tilläggssidan

Unturned har två utbredda tilläggsplattformar, och båda körs i samma process som servern. RocketMod är den äldre: de ursprungliga förvaltarna slutade med underhållet den 20 december 2019 och ställde källkoden under MIT-licensen. Smartly Dressed Games sköter sedan dess avläggaren Legally Distinct Missile (LDM), som redan levereras med den dedikerade servern: man kopierar Rocket.Unturned från mappen Extras till mappen Modules. Utvecklarna rekommenderar avläggaren uttryckligen, eftersom den åtgärdar gamla Rocket-problem som trådningsfel och teleport-exploits.

OpenMod är den nyare efterföljaren, utvecklad av en av de ursprungliga Rocket-förvaltarna. Den ersätter inte RocketMod, utan körs vid sidan av och kan använda befintliga Rocket-tillägg via en integration. För försvaret betyder det två saker.

För det första: varje tillägg är angreppsyta i huvudprocessen. Ett tillägg som utlöser en databasförfrågan vid varje chattmeddelande eller vid varje spelhändelse är en egenbyggd denial of service. En enda spelare som utlöser en händelse i en slinga lamslår då servern utan någon bandbredd alls. Håll tilläggslistan kort, föredra öppna tillägg och mät serverns bildfrekvens efter varje utvidgning.

För det andra: eftersom Unturned inte har någon egen RCON-port kommer varje fjärrstyrning från ett tillägg. Kontrollera efter installationen med ss -lntp vilken TCP-port det har öppnat, och begränsa den till din egen adress. En öppen fjärrstyrningsport med svagt lösenord är inget DDoS-problem, utan ett övertagandeproblem.

8. Workshop-innehåll och anslutningsförloppet

Workshop-innehåll gör anslutningen dyr, och det slår direkt igenom på angripbarheten. Styrt blir det via WorkshopDownloadConfig.json i samma Server-mapp:

{
    "File_IDs": [],
    "Ignore_Children_File_IDs": [],
    "Query_Cache_Max_Age_Seconds": 600,
    "Max_Query_Retries": 2,
    "Use_Cached_Downloads": true,
    "Should_Monitor_Updates": true,
    "Shutdown_Update_Detected_Timer": 600
}

I File_IDs står Workshop-kännetecknen för kartor och moddar. Vid start hämtar servern dem inklusive beroenden, och varje spelare hämtar dem automatiskt vid anslutningen. Tre följder bör du känna till. För det första tar anslutningen lång tid vid stora moddlistor, och efter en attack kommer alla spelare tillbaka samtidigt, vilket belastar servern en andra gång. För det andra stoppar Should_Monitor_Updates servern så snart en Workshop-fil uppdateras: den förinställda Shutdown_Update_Detected_Timer på 600 sekunder leder då till en omstart som operatörer vid en attack regelbundet tar för en angreppsframgång. För det tredje är varje modd främmande kod på din server.

Praktiskt betyder det: håll listan så kort som möjligt, kontrollera efter varje oväntad omstart först serverloggen efter meddelandet om Workshop-uppdateringen, och stäng bara av Should_Monitor_Updates om du planerar in uppdateringarna själv.

9. Serverlista, serverkod och Fake-IP-funktionen

Din IP-adress går inte att hålla hemlig så länge servern är publikt listad. Varje spelare som en gång har varit ansluten känner till den, och tredjepartslistorna offentliggör den ändå. Två vanor hjälper trots det: offentliggör aldrig själv den rena adressen någonstans, och anslut dina spelare via ett värdnamn, så att ett adressbyte inte bryter varje hänvisning. Klassikern är den bortglömda A-posten mot den gamla adressen, som gör varje byte verkningslöst.

För drift på internet behöver du ändå ett Game Server Login Token (GSLT) ur Steams serverförvaltning till app-kännetecknet 304930. Det ser dessutom till att din servers serverkod förblir densamma över omstarter i stället för att skapas på nytt vid varje start.

Unturned erbjuder dessutom en Fake-IP-funktion. Den slås på med "Use_FakeIP": true i Config.json, och konsolkommandot CopyFakeIP levererar den adress som du sedan offentliggör. Trafiken löper därefter över relänätet Steam Datagram Relay, de tilldelade adresserna ligger i området 169.254.0.0 till 169.254.255.255, och serverns verkliga adress visas inte längre för spelarna. Valve beskriver trafiken som autentiserad, krypterad och hastighetsbegränsad.

Priset för det är högt och nämns sällan: adress och port byts vid varje omstart, ett domännamn går inte att rikta mot det utan egna skript, och Steam-listorna "Favoriter" och "Historik" fungerar inte med det, utan bara bokmärkesfunktionen. Framför allt skyddar funktionen bara spelvägen. Din server behåller sin verkliga adress, och SSH, webbpanel, databas och webbplats förblir nåbara över den. Den som känner adressen ur en gammal DNS-post, en statussida eller från en tidigare anslutning angriper den fortfarande direkt. Fake-IP-funktionen ersätter alltså ingen filtrering i nätet framför servern, den minskar bara antalet personer som över huvud taget känner till din adress.

10. Logga, så att du inte behöver gissa under attacken

Det viktigaste steget är det som nästan ingen gör i förväg: att lägga upp en jämförelsegrund så länge allt går normalt. Utan normalvärde kan du efter en händelse inte säga om 40 000 paket per sekund var mycket eller helt enkelt fredagskväll. Med apt-get install -y vnstat sysstat löper mätningen varaktigt med. Under en händelse räcker fyra kommandon:

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

För tcpdump gäller: begränsa alltid med -c, en inspelning under full last belastar en redan överbelastad server ytterligare. Hur du utvärderar värdena och skiljer en attack från ett programfel står i Känna igen en DDoS-attack på servern.

Var de här åtgärderna tar slut

Alla åtgärder hittills körs på din server, alltså i änden av ledningen. En brandväggsregel avgör om ett paket som redan har gått över kabeln. Du kan kassera det, men inte göra det osänt.

Räkna med en gång. En typisk spelserver hänger på 1 Gbit/s, det är 125 megabyte per sekund, och ledningen är full så snart någon skickar mer. Den normala driften ligger långt därunder: vid 24 spelare och de från fabrik tillåtna 50 paketen per spelare och sekund kommer runt 1 200 paket per sekund fram. En booter-tjänst skapar utan någon förberedelse ett flertal gånger så mycket.

Den andra storheten är paketfrekvensen, och den slår nästan alltid till tidigare än bandbredden. Vid små paket på 64 byte ryms runt 1,49 miljoner paket per sekund i en ledning med 1 Gbit/s. En vanlig serverkärna bearbetar beroende på processor och nätverkskort några hundratusen av dem innan den börjar kassera. En attack som inte ens fyller en tredjedel av din ledning kan alltså ändå lamslå din server, eftersom beräkningstiden går åt till att kassera. Operatörer upplever det som "belastningen var ju inte ens hög, ändå var allt borta".

Till inordningen av vilka storleksordningar som faktiskt förekommer: på KernelHost-servrar har bland annat en attack med över 473,4 Gbit/s vid över 41,5 miljoner paket per sekund mot en röstserver och en UDP-flod med över 112,2 Gbit/s mot en spelserver filtrerats. För det finns ingen lokal inställning. Volumetriska attacker måste ta slut i nätet framför servern.

Vad KernelHost ställer mot det

Det permanenta skyddet som ingår på varje server

DDoS-skyddet från KernelHost är uppbyggt i två steg och permanent aktivt, utan att du behöver slå på, beställa eller konfigurera något:

  • Steg 1: 17 Tbps mitigeringskapacitet i det globala scrubbing-nätverket. Volumetriska attacker rensas nära sin källa, innan de når datacentret.
  • Steg 2: Arbor-realtidsfiltrering med 3,2 Tbps i Frankfurt am Main. Direkt framför servern känns protokollspecifika mönster igen och kasseras, paket för paket.

Två egenskaper är avgörande. Skyddet löper permanent och måste inte först reagera på en attack, det finns alltså inga minuter i början där servern är borta. Och ingen null-routning används: din IP-adress stannar i nätet, bara de skadliga paketen kasseras. Den som tar bort IP-adressen ur nätet åstadkommer för dig samma resultat som angriparen. Platsen är Frankfurt am Main. Vilka spel och protokoll som täcks listas i DDoS-skydd för spelservrar i realtid.

Advanced DDoS Protection för projekt under ständig beskjutning

Vissa projekt angrips inte då och då, utan riktat och under veckor. För det finns Advanced DDoS Protection från 50,00 EUR i månaden, PrePaid, utan bindningstid och utan uppläggningsavgift. Skillnaden ligger inte i mer kapacitet utan i kontrollen:

  • Dedikerad skydds-IP ur Frankfurt-kärnan, som din server ställs om till i det egna nätet. På din sida behövs ingen ombyggnad.
  • Egenförvaltade skyddsregler per port och protokoll i kundportalen: du ställer in separat vad som är tillåtet på 27015 UDP (förfrågningarna) och vad på 27016 UDP (speltrafiken), utan att skriva ett ärende för det.
  • Ändringar griper i realtid, du kan alltså justera under en pågående attack, till exempel fatta förfrågningarna snävare och lämna speltrafiken orörd.
  • Skyddsprofil passande till spelet, likaså för modifierade och egna applikationer på godtyckliga TCP- eller UDP-portar, alltså även för ett tillägg med egen port.

De två stegen i jämförelse

Egenskap Inkluderat permanent DDoS-skydd Advanced DDoS Protection
Pris ingår i varje serverpaket, utan extra kostnad från 50,00 EUR i månaden, PrePaid
Filterkapacitet 17 Tbps globalt scrubbing plus Arbor-realtidsfiltrering med 3,2 Tbps i Frankfurt am Main samma filtrering i två steg
IP-adress din servers IP-adress ytterligare dedikerad skydds-IP
Regelverk automatiska profiler, ingen konfiguration behövs egna regler per port och protokoll i kundportalen
Ändringar löper automatiskt med griper i realtid, även under en attack
Spelprofil optimerade profiler för gängse spel, Unturned inräknat profil passande till spelet, även för modifierade applikationer
Null-routning nej nej
Löptid bunden till serverpaketet PrePaid, ingen bindningstid, ingen uppsägningstid, ingen uppläggningsavgift

För de flesta Unturned-projekt räcker det inkluderade permanenta skyddet tillsammans med en ren serverkonfiguration. Advanced DDoS Protection är svaret på att någon tar det personligt.

Vanliga fel och lösningar

"Min anvisning säger att jag måste öppna 27015 till 27017": anvisningen är äldre än november 2021. Sedan version 3.21.30.0 behöver en Unturned-server bara två portar, eftersom Steam-förfrågan inte längre ligger på port plus två. Stäng 27017, såvida det inte körs en andra instans där.

"Servern körs, men den står inte i någon serverlista längre": det är den typiska bilden av en förfrågningsflod eller av en för sträng egen regel på 27015 UDP. Kontrollera med iptables -L INPUT -n -v om din egen regel räknar träffar. Stiger räknarna kraftigt filtrerar du just nu bort dina egna listposter. Spärra aldrig 27015 fullständigt.

"Alla spelare åker ut samtidigt med tidsöverskridning": se först efter om anslutningsspårningen har svämmat över (dmesg -T | grep -i conntrack). Är tabellen full kasserar kärnan utan åtskillnad. Timeout_Game_Seconds står från fabrik på 30 sekunder: den som kommer tillbaka inom den tiden behåller sin plats.

"Servern startar om mitt i driften": det är sällan en attack. Kontrollera loggen efter meddelandet om den upptäckta Workshop-uppdateringen. Should_Monitor_Updates stänger ned servern efter den förinställda tidsrymden på 600 sekunder.

"Jag bytte IP-adress och var offline igen två timmar senare": angriparen har den nya adressen ur samma källa som den gamla, oftast en serverlista, en Discord-bot eller en gammal DNS-post. Ett adressbyte är tidsvinst, ingen lösning.

"Jag slog på Fake-IP-funktionen och angrips ändå": den döljer adressen för nya spelare men tar den inte ifrån servern. Den som känner den ur en gammal listpost, en statussida eller en tidigare anslutning når din server fortfarande direkt, likaså SSH och varje webbpanel på den.

"Min tidigare leverantör spärrade min IP-adress": det är null-routning. Leverantören skyddar därmed sitt eget nät, för dig är resultatet identiskt med en lyckad attack, oftast i ytterligare timmar efteråt. Fråga vid tveksamhet efter om det filtreras eller null-routas. Svaret avgör mer om din tillgänglighet än någon hårdvaruuppgift.

"I tcpdump ser jag inget anmärkningsvärt": om trafiken redan filtreras i nätet framför kommer det som väntat ingenting fram till servern. Det är normalfallet vid fungerande filtrering. Omvänt gäller: är ledningen mättad når under vissa omständigheter inte ens SSH-sessionen fram, den du ville mäta med. Använd då VNC-konsolen i kundportalen, som fungerar oberoende av gästsystemets nätverk.

Kort sammanfattat

  • En Unturned-server behöver exakt två öppna UDP-portar: den Port som är satt i Commands.dat (standard 27015) och det värdet plus ett (27016). TCP behöver spelet självt inte.
  • Port 27017 är överflödig sedan version 3.21.30.0 från den 21 november 2021, eftersom Steam-förfrågan inte längre ligger på port plus två. Den som fortfarande har den öppen följer en föråldrad anvisning.
  • Unturned har ingen inbyggd RCON-port. Varje fjärrstyrning kommer från ett tillägg, har med sig en egen TCP-port och måste begränsas av dig själv.
  • Förfrågningsporten 27015 är den känsligaste punkten: en förfrågningsflod gör servern osynlig i serverlistan utan att träffa en enda spelare, och Steam-protokollet har enligt US-CERT TA14-017A en förstärkningsfaktor på 5,5.
  • Gränserna i Config.json (Max_Packets_Per_Second 50,0, Rate_Limit_Kick_Threshold 10 per 40 sekunder) verkar bara mot klienter som verkligen ansluter, inte mot förfalskade avsändaradresser.
  • En 1 Gbit/s-ledning är full vid 125 megabyte per sekund, vid 64 byte stora paket redan vid runt 1,49 miljoner paket per sekund. Normal drift med 24 spelare ligger på runt 1 200 paket per sekund. Allt däröver avgörs av nätet framför servern, inte av din brandvägg.
  • Hos KernelHost ingår det permanenta skyddet i två steg i varje serverpaket utan extra kostnad och är aktivt från leveransen, utan null-routning. Den som vill styra filterreglerna själv tar Advanced DDoS Protection från 50,00 EUR i månaden därtill.

Körs ditt projekt redan hos KernelHost är filtreringen aktiv utan att du behöver göra något. Märker du ändå något avvikande, öppna ett supportärende så att filterreglerna för din IP-adress justeras. Vid en pågående attack når du oss dessutom via WhatsApp-nödchatten på +43 650 8209883.

Vanliga frågor

Vilka portar måste jag lämna öppna för en Unturned-server?
Exakt två UDP-portar: det värde som är satt i Commands.dat och det värdet plus ett, i standardinställningen alltså 27015 och 27016. Satt blir bara den första via raden Port 27015, den andra följer automatiskt. Enligt den officiella dokumentationen bär den första porten serverlistans förfrågningar och den andra speltrafiken. För spelet självt behövs ingen TCP-port. Driver du flera instanser på en maskin rekommenderar dokumentationen ett avstånd på två, alltså 27015, 27017, 27019.
Måste jag öppna port 27017 för Unturned?
Nej, inte längre sedan version 3.21.30.0 från den 21 november 2021. Dessförinnan krävde en Unturned-server tre portar, eftersom Steam-förfrågan låg på port plus två. Med den uppdateringen delar förfrågan porten med servern, och den tredje porten utgick. Väldigt många routeranvisningar, leverantörswikier och foruminlägg nämner 27017 trots det än i dag. En öppen 27017 ger ingen fördel längre, den är ren angreppsyta och hör stängd, så länge inte en andra serverinstans körs där.
Min Unturned-server körs, men står inte i någon serverlista längre. Är det en attack?
Oftast ja, och då en förfrågningsflod mot port 27015 UDP. Över den porten besvarar servern Steam-förfrågningarna A2S_INFO, A2S_PLAYERS och A2S_RULES. Översvämmas den försvinner servern ur serverlistan, medan de redan anslutna spelarna spelar vidare ostört. Den andra vanliga orsaken är en för snäv egen brandväggsregel på 27015. Kontrollera med iptables -L INPUT -n -v om din regel räknar träffar. Spärra aldrig 27015 fullständigt, annars går servern inte att hitta i någon lista.
Har Unturned en inbyggd RCON-port?
Nej. Den officiella dokumentationen känner bara till konsolinmatning och konsolutmatning, som går att ersätta med en egen implementering via gränssnittet ICommandInputOutput. Varje fjärrstyrning på en Unturned-server kommer därför från ett tillägg och har med sig en egen TCP-port. Kontrollera efter installationen med ss -lntp vilken port som har öppnats, och begränsa den till din egen adress. En öppen fjärrstyrningsport med svagt lösenord är inget DDoS-problem, utan ett övertagandeproblem.
Skyddar Unturneds Fake-IP-funktion mot DDoS-attacker?
Bara delvis. Med Use_FakeIP true i Config.json löper speltrafiken över relänätet Steam Datagram Relay, och den verkliga adressen visas inte längre för nya spelare. Skyddet slutar dock vid spelvägen: din server behåller sin verkliga adress, SSH, webbpanel och webbplats förblir nåbara över den, och den som känner adressen ur en gammal DNS-post eller från en tidigare anslutning angriper den fortfarande direkt. Dessutom byts adress och port vid varje omstart, ett domännamn går inte att rikta mot det utan egna skript.
Kan jag värja mig mot en DDoS-attack med iptables eller UFW?
Mot små attacker och slarviga bottar ja, mot volumetriska attacker inte. En brandväggsregel på servern avgör vad som händer med paket som redan har gått över din ledning. Är ledningen mättad kommer dina spelares paket inte fram redan dessförinnan, helt oberoende av hur bra ditt regelverk är. Vettiga är hastighetsgränser per källadress på 27015 och 27016 samt NOTRACK för båda portarna, så att kärnans anslutningsspårning inte svämmar över. Volumetriska attacker måste ta slut i nätet framför servern.
Från vilken attackstorlek klarar min Unturned-server det inte längre ensam?
En typisk spelserver hänger på 1 Gbit/s, det motsvarar 125 megabyte per sekund. Den normala driften ligger långt därunder: vid 24 spelare och de från fabrik tillåtna 50 paketen per spelare och sekund kommer runt 1 200 paket per sekund fram. Viktigare än bandbredden är paketfrekvensen. I 1 Gbit/s ryms runt 1,49 miljoner paket per sekund vid paket på 64 byte, och en vanlig serverkärna bearbetar bara några hundratusen av dem. En attack kan alltså lamslå dig trots att bandbredden inte är uttömd.
Varför angrips Unturned-servrar så ofta?
Eftersom deras adress är offentlig, speltrafiken löper över UDP och en attack varken kräver kunnande eller nämnvärda pengar av den som utlöser den. En publikt listad server måste avslöja sin IP-adress och sin port, annars hittar ingen den: Steams serverlista frågar den direkt, tredjepartslistor för upp båda i klartext. UDP känner i sin tur inte till något anslutningsupprättande som man skulle kunna kräva, och avsändaradresser går att förfalska. En angripare måste alltså varken gå in på din server eller tilltala den korrekt för att skapa last.
Hjälper RocketMod- eller OpenMod-tillägg mot DDoS-attacker?
Nej, de kan till och med göra läget sämre. Båda plattformarna körs i samma process som servern. Ett tillägg som utlöser en databasförfrågan vid varje chattmeddelande eller vid varje spelhändelse är en egenbyggd denial of service: en enda spelare lamslår då servern utan någon bandbredd alls. Håll tilläggslistan kort och mät efter varje utvidgning. RocketMod underhålls inte längre av de ursprungliga förvaltarna sedan den 20 december 2019, rekommenderad är avläggaren Legally Distinct Missile, som Smartly Dressed Games sköter, eller efterföljaren OpenMod.
Går min server hos KernelHost offline under en attack?
Nej. Ingen null-routning används. Din IP-adress stannar i nätet, bara de skadliga paketen kasseras. Skyddet är i två steg: 17 Tbps mitigeringskapacitet i det globala scrubbing-nätverket och en Arbor-realtidsfiltrering med 3,2 Tbps i Frankfurt am Main. Det löper permanent och måste inte först reagera på en attack, det finns alltså inga minuter i början där servern är borta.
Kostar DDoS-skyddet extra hos KernelHost?
Nej. Det permanenta skyddet i två steg ingår i varje serverpaket utan extra kostnad och är aktivt från leveransen. Du behöver varken beställa, slå på eller konfigurera det. Det gäller för en Unturned-server precis som för varje annan applikation på samma server, oberoende av vilka portar du upptar.
När behöver jag Advanced DDoS Protection dessutom för min Unturned-server?
När ditt projekt inte angrips då och då, utan riktat och under veckor, och du vill styra filtreringen själv. Du får en dedikerad skydds-IP och förvaltar skyddsreglerna per port och protokoll själv i kundportalen, alltså separat för förfrågningarna på 27015 UDP och speltrafiken på 27016 UDP. Ändringar griper i realtid, du kan alltså justera under en pågående attack. Priset börjar vid 50,00 EUR i månaden, PrePaid, utan bindningstid och utan uppläggningsavgift.

Unturned Unturned DDoS-skydd Spelserverskydd Port 27015 Port 27016 Steam-query RocketMod OpenMod Advanced DDoS Protection