Unturned-server beschermen tegen DDoS-aanvallen
Welke poorten een Unturned-server werkelijk nodig heeft, waarom 27017 sinds 2021 overbodig is, hoe u queryflood, joinflood en pluginbelasting begrenst, en vanaf welke aanvalsgrootte alleen filtering in het netwerk ervoor nog helpt.
Een Unturned-server die 's avonds een paar minuten uit de serverlijst verdwijnt en daarbij al zijn spelers met een timeout eruit gooit, heeft zelden een hardwareprobleem. Meestal loopt er een aanval, en wel precies op het moment dat er het meeste te doen is. Dit artikel laat eerst zien wat u zonder extra kosten zelf kunt afschermen, daarna waar die maatregelen technisch ophouden, en tot slot wat er dan in het netwerk vóór de server moet gebeuren.
Alle gegevens gaan uit van de Unturned Dedicated Server (U3DS, SteamCMD-app-id 1110390) onder Debian 12, Debian 13, Ubuntu 22.04 LTS of Ubuntu 24.04 LTS. De commando's zijn voor root geschreven; als gewone gebruiker zet u er sudo voor. Loopt de aanval op dit moment, verander dan eerst niets aan de configuratie en start de server niet opnieuw op: leg de meetwaarden vast (paragraaf 10), na de aanval zijn ze verdwenen.
Waarom juist Unturned-servers worden aangevallen
Unturned-servers worden aangevallen omdat hun adres openbaar is, het spelverkeer over UDP loopt en een aanval de veroorzaker kunde noch noemenswaardig geld kost. Alle drie de punten gelden hier sterker dan bij de meeste andere spellen.
Een openbare Unturned-server publiceert zijn IP-adres uit zichzelf. Hij moet wel, anders zou niemand hem vinden: de Steam-serverbrowser bevraagt hem rechtstreeks, en lijstsites van derden zoals unturned-servers.net of BattleMetrics vermelden IP-adres en poort leesbaar. unturned-servers.net controleert daarvoor naar eigen zeggen elke vijf minuten of de server op de serverpoort UDP-verbindingen aanneemt. Voor een aanvaller is dat geen werk, maar een formulier.
Daar komt de spelersgroep bij. Unturned is gratis, de instapdrempel ligt op nul, en tussen roleplay- en survivalprojecten bestaat echte concurrentie om dezelfde spelers. Een geblokkeerde speler, een gekrenkte oud-beheerder of een naburig project heeft geen toegang tot uw server nodig om hem een uur lang onbruikbaar te maken. Wat een DDoS-aanval technisch is en waarom vervalste afzenderadressen hem zo moeilijk herleidbaar maken, legt het artikel Wat is een DDoS-aanval? uit.
De poorten waar het werkelijk om gaat
Een Unturned-server bezet precies twee opeenvolgende UDP-poorten: de waarde die in de Commands.dat is ingesteld en die waarde plus een. In de standaardinstelling zijn dat 27015 en 27016. De officiële documentatie van Smartly Dressed Games beschrijft de verdeling zo: de eerste poort draagt de opvragingen van de serverlijst, de tweede het spelverkeer. Alleen de eerste wordt ingesteld, de tweede volgt automatisch.
Name Mijn Unturned Server
Port 27015
MaxPlayers 24
Map PEI
Mode Normal
Perspective Both
Owner 76561198000000000
De Commands.dat staat in U3DS/Servers/<Instantie>/Server/Commands.dat. Het formaat is eigenzinnig en een veelvoorkomende foutbron: één commando per regel, geen isgelijkteken, waarde gescheiden door een spatie, en de commando's zijn hoofdlettergevoelig. Regels die met // beginnen, zijn commentaar.
Het belangrijkste punt voor de firewall luidt: poort 27017 is sinds versie 3.21.30.0 van 21 november 2021 niet meer nodig. Daarvoor verlangde een Unturned-server drie poorten, omdat de Steam-opvraging op poort plus twee lag. Met die update deelt de opvraging de poort met de server zelf, en de derde poort verviel. Routerhandleidingen, wiki's van hosters en forumberichten noemen 27017 desondanks tot op vandaag. Een open 27017 levert u geen voordeel meer op, hij is puur aanvalsoppervlak.
Eveneens belangrijk: Unturned heeft geen ingebouwde RCON-poort. De officiële documentatie kent alleen console-invoer en console-uitvoer, die zich via de interface ICommandInputOutput laten vervangen. Elke afstandsbediening die u op een Unturned-server ziet, komt uit een plugin en brengt een eigen TCP-poort mee. Die poort moet u zelf vinden en zelf beperken, want niemand heeft hem voor u afgeschermd.
| Kenmerk | Waarde (standaardinstelling) | Protocol | Waar ingesteld |
|---|---|---|---|
| Opvraagpoort (Steam A2S, serverlijst) | 27015 | UDP | Port in Commands.dat |
| Spelpoort | 27016 (poort plus een) | UDP | niet apart instelbaar |
| Derde poort 27017 | vervalt sinds 3.21.30.0 (21.11.2021) | geen | sluiten |
| Tweede server op dezelfde machine | 27017, de derde 27019 | UDP | Port, afstand twee |
| RCON | geen ingebouwde poort | TCP alleen via plugin | pluginconfiguratie |
| Bindadres | alle interfaces | geen | Bind in Commands.dat |
| Pakketten per speler en per seconde | 50,0 | UDP | Max_Packets_Per_Second |
| Maximaal toegestane ping | 750 ms | geen | Max_Ping_Milliseconds |
| Toetredingssnelheid per tijdvenster | 10 pogingen in 40,0 seconden | geen | Rate_Limit_Kick_Threshold |
| Wachtrij | 8 plaatsen, hoogstens 64 | geen | Queue_Size in Commands.dat |
| Anticheat | VAC en BattlEye, beide actief | geen | VAC_Secure, BattlEye_Secure |
| Versterkingsfactor van de Steam-opvraging | 5,5 (US-CERT TA14-017A) | UDP | protocoleigenschap |
| Normale inkomende pakketsnelheid bij 24 spelers | ongeveer 1.200 pakketten per seconde | UDP | 24 maal 50 |
| Verzadiging van een 1-Gbit/s-lijn | 125 MB/s, ongeveer 1,49 miljoen pakketten per seconde bij 64 byte | geen | fysica van de lijn |
| Op KernelHost-servers gefilterde aanvallen | 473,4 Gbit/s bij 41,5 miljoen pakketten per seconde; 112,2 Gbit/s UDP-flood | UDP | meetwaarden uit de praktijk |
Wat u zelf kunt doen voordat u geld uitgeeft
Dit hoofdstuk is het langste, en dat met opzet. Een netjes geconfigureerde Unturned-server houdt kleine en middelgrote aanvallen op eigen kracht uit, ongeacht bij wie hij staat.
1. Inventarisatie: wat luistert er werkelijk
Voordat u ook maar één regel schrijft, kijkt u na wat uw server naar buiten aanbiedt. Niet gokken, maar kijken:
ss -lnup
ss -lntp
Het eerste commando toont de luisterende UDP-sockets, het tweede de TCP-sockets. Interessant is de kolom met het lokale adres. 0.0.0.0:27015 en [::]:27015 betekenen "vanaf het hele internet bereikbaar", 127.0.0.1:3306 betekent "alleen lokaal" en heeft geen firewallregel nodig. Naast het spel duiken daar vaak een RCON-plugin, een webpaneel, een database en een oude testserver op 27017 op die niemand meer gebruikt. Het beeld van de aanvaller levert een poortscan van buitenaf, voor Unturned uitdrukkelijk met UDP:
nmap -Pn -sU -p 27000-27050 UW.SERVER.IP.ADRES
nmap -Pn -p- --min-rate 1000 UW.SERVER.IP.ADRES
2. Alleen 27015 en 27016 openlaten
Voor Unturned volstaan twee UDP-vrijgaven naar buiten. Voor het spel zelf is geen enkele TCP-poort nodig: de officiële documentatie verlangt voor beide poorten uitdrukkelijk UDP, en de netwerklaag van het spel (Steam Networking Sockets, sinds een update de standaardinstelling) werkt uitsluitend over UDP. Wie daarnaast TCP vrijgeeft, volgt een verouderde handleiding.
ufw allow 22/tcp comment 'SSH'
ufw allow 27015/udp comment 'Unturned opvraging'
ufw allow 27016/udp comment 'Unturned spel'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose
De volgorde is belangrijk, anders sluit u uzelf buiten. De volledige handleiding inclusief reddingsweg staat onder UFW-firewall instellen zonder uzelf buiten te sluiten. Draait u meerdere instanties, houd dan de aanbevolen afstand van twee aan (27015, 27017, 27019) en geef per instantie precies de twee poorten vrij die zij werkelijk bezet.
Een webpaneel, een database of een RCON-plugin horen niet op het open internet. Beperk de betreffende poort met ufw allow from 203.0.113.10 to any port 8080 proto tcp tot uw eigen adres, of bereik de interface via een lokale SSH-doorverwijzing met ssh -N -L 8080:127.0.0.1:8080 root@UW.SERVER.IP.ADRES. De database bindt u aan 127.0.0.1.
3. De opvraagpoort afschermen zonder uit de serverlijst te vliegen
De opvraagpoort is het gevoeligste punt van een Unturned-server. Via die poort beantwoordt de server de Steam-opvragingen A2S_INFO, A2S_PLAYERS en A2S_RULES. Zet u hem volledig dicht, dan verdwijnt de server uit elke serverlijst, ook als hij foutloos draait.
Een A2S-antwoord is duidelijk groter dan de vraag. Het US-CERT voert het Steam-protocol in zijn overzicht van UDP-versterkingsaanvallen (TA14-017A) met een bandbreedteversterkingsfactor van 5,5. Concreet betekent dat: een aanvaller stuurt opvragingen met een vervalst afzenderadres naar vreemde gameservers en leidt de ongeveer vijfeneenhalf keer zo grote antwoorden naar zijn eigenlijke doelwit. Uw server is dan niet het slachtoffer, maar de versterker tegen een derde. In de omgekeerde richting volstaat een queryflood om de server uit de serverbrowser te laten verdwijnen, zonder dat er ook maar één speler uit vliegt. Beheerders melden precies dat: de server draait, de spelers erop merken niets, maar hij is niet meer vindbaar.
Tegen kleine queryfloods helpt een bovengrens per bronadres. Legitieme opvragingen komen zelden: de Steam-browser vraagt eenmaal per weergave, statusdiensten om de paar minuten.
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
Het tweede getal volgt rechtstreeks uit het spel: Unturned begrenst een speler standaard op 50 pakketten per seconde (Max_Packets_Per_Second). 300 pakketten per seconde en per bronadres laten een enkele aansluiting dus ruim lucht, zelfs als er meerdere spelers achter hetzelfde adres zitten. Beide waarden zijn startwaarden, geen waarheden. Meet eerst een week normaal gebruik, anders gooit u uw eigen spelers eruit.
Kale iptables-regels zijn na een herstart verdwenen. Onder Debian en Ubuntu bewaart u ze met apt-get install -y iptables-persistent en netfilter-persistent save. Onder UFW horen zulke regels in /etc/ufw/before.rules, omdat ze anders bij de volgende ufw reload verdwijnen.
Daar komt een gewoonte bij die niets kost: laat uw website of uw Discord-bot de spelersstand niet vanuit de bezoeker opvragen, maar sla het resultaat op vaste intervallen tussentijds op. Een druk bezochte statuspagina veroorzaakt anders één opvraag per bezoeker in plaats van één per interval.
4. De ingebouwde grenzen in de Config.json instellen
Unturned heeft in de Config.json in dezelfde map Server als de Commands.dat een sectie die voor de afweer belangrijker is dan haar naam doet vermoeden. De standaardinstellingen luiden:
"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 begrenst een verbonden speler tot 50 pakketten per seconde. Join_Rate_Limit_Window_Seconds en Rate_Limit_Kick_Threshold gooien een verbinding eruit die binnen 40 seconden meer dan tien keer over de grens gaat. VAC_Secure en BattlEye_Secure verlangen beide anticheatsystemen aan de spelerskant en houden daarmee het grootste deel van de wegwerpclients weg.
Eén ding moet daarbij duidelijk zijn: deze grenzen werken tegen clients die werkelijk toetreden of het proberen. Tegen een flood met vervalste afzenderadressen werken ze niet, omdat daar nooit een sessie ontstaat. Ze zijn toch belangrijk, omdat ze het meest voorkomende losse geval opvangen: een enkele gemanipuleerde client die de server in zijn eentje overbelast. Max_Ping_Milliseconds op 750 laten staan is verstandig; lager ingesteld gooit de server bij elke korte netwerkhapering halve rondes eruit.
5. De connection tracking ontlasten
Dit punt wordt bijna altijd over het hoofd gezien en verklaart uitval die op een volume-aanval lijkt, maar het niet is. De kernel maakt ook voor UDP-verkeer vermeldingen aan in de connection tracking (conntrack), en bij vervalste afzenderadressen levert elk nieuw adres een nieuwe vermelding op. Zit de tabel vol, dan verwerpt de kernel pakketten zonder onderscheid: de aanval en uw spelers vliegen er samen uit. In het systeemlogboek staat dan nf_conntrack: table full, dropping packet.
sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
dmesg -T | grep -i conntrack
De meest effectieve stap is om het Unturned-verkeer helemaal niet te laten volgen. Het spel beheert zijn sessies zelf en heeft geen statusvolging in de kernel nodig:
iptables -t raw -A PREROUTING -p udp --dport 27015 -j NOTRACK
iptables -t raw -A PREROUTING -p udp --dport 27016 -j NOTRACK
Let erop dat uw vrijgaven voor deze twee poorten daarna niet meer via ESTABLISHED,RELATED mogen lopen, maar als eigen accepteerregels moeten staan. Pas daarna loont het om nf_conntrack_max te verhogen. Wie eerst de tabel vergroot, schuift het probleem alleen een paar minuten op en verbruikt daarvoor werkgeheugen.
Komen pakketten sneller binnen dan het serverproces ze ophaalt, dan loopt daarnaast de ontvangstbuffer van de socket over. Voor de spelers ziet dat eruit als pakketverlies, terwijl de lijn vrij is:
net.core.rmem_max = 16777216
net.core.rmem_default = 1048576
net.core.netdev_max_backlog = 16384
Leg de waarden onder /etc/sysctl.d/ neer en activeer ze met sysctl --system. Of ze nodig zijn, verklapt de kernel: stijgt UdpRcvbufErrors in nstat -az of staat er in ss -lunp permanent iets in de ontvangstwachtrij, dan hebben ze zin. Blijven beide op nul, dan verandert de aanpassing niets. Dit is reserve, geen bescherming.
6. Joinflood, wachtrij en whitelist
Een joinflood is een aanval waarbij de aanvaller de reguliere toetredingsweg gebruikt om plaatsen en rekentijd te verbruiken, in plaats van de lijn te vullen. Unturned heeft daartegen vier werktuigen, die allemaal in de Commands.dat staan:
Queue_Size 32stelt de wachtrij in. De standaardinstelling is 8 plaatsen, het maximum is 64. Een te grote wachtrij helpt een aanvaller, een te kleine zet echte spelers bij elke herstart aan de kant.Whitelistedzet de server om op een toegangslijst. Toevoegen gebeurt via de console metpermit <SteamID64>, verwijderen metunpermit <SteamID64>.Password UwWachtwoordsluit alles uit wat het adres alleen uit een lijst heeft.Filterweigert spelers met ontoelaatbare tekens in hun naam,MaxPlayers 24houdt het aantal plaatsen bij wat de hardware werkelijk draagt.
Een whitelist beschermt uw spellogica, niet uw lijn. Een aanvaller die uw server overspoelt, wil helemaal niet toetreden. Zijn pakketten worden geweigerd, maar ze zijn wel aangekomen, en precies daar gaat het om.
7. RocketMod, OpenMod en de pluginkant
Unturned heeft twee verbreide pluginplatformen, en beide draaien in hetzelfde proces als de server. RocketMod is het oudere: de oorspronkelijke beheerders hebben het onderhoud op 20 december 2019 gestaakt en de broncode onder de MIT-licentie gezet. Smartly Dressed Games onderhoudt sindsdien de aftakking Legally Distinct Missile (LDM), die bij de dedicated server al wordt meegeleverd: men kopieert Rocket.Unturned uit de map Extras naar de map Modules. De ontwikkelaars bevelen de aftakking uitdrukkelijk aan, omdat die oude Rocket-problemen zoals threadingfouten en teleport-exploits verhelpt.
OpenMod is de nieuwere opvolger, ontwikkeld door een van de oorspronkelijke Rocket-beheerders. Hij vervangt RocketMod niet, maar draait ernaast en kan bestaande Rocket-plugins via een integratie meegebruiken. Voor de afweer betekent dat twee dingen.
Ten eerste: elke plugin is aanvalsoppervlak in het hoofdproces. Een plugin die bij elk chatbericht of bij elke spelgebeurtenis een databasequery uitlokt, is een zelfgebouwde denial of service. Een enkele speler die een gebeurtenis in een lus uitlokt, legt de server dan zonder enige bandbreedte plat. Houd de pluginlijst kort, geef de voorkeur aan opensourceplugins en meet de beeldsnelheid van de server na elke uitbreiding.
Ten tweede: omdat Unturned geen eigen RCON-poort heeft, komt elke afstandsbediening uit een plugin. Controleer na de installatie met ss -lntp welke TCP-poort die heeft geopend, en beperk hem tot uw eigen adres. Een open afstandsbedieningspoort met een zwak wachtwoord is geen DDoS-probleem, maar een overnameprobleem.
8. Workshop-inhoud en het toetredingsproces
Workshop-inhoud maakt het toetreden duur, en dat werkt rechtstreeks door in de aanvalbaarheid. Gestuurd wordt dat via de WorkshopDownloadConfig.json in dezelfde map Server:
{
"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
}
In File_IDs staan de workshopkenmerken van de maps en mods. Bij het starten haalt de server ze inclusief afhankelijkheden binnen, en elke speler laadt ze bij het verbinden automatisch na. Drie gevolgen moet u kennen. Ten eerste duurt het toetreden bij grote modlijsten lang, en na een aanval komen alle spelers tegelijk terug, wat de server een tweede keer belast. Ten tweede houdt Should_Monitor_Updates de server aan zodra een workshopbestand wordt bijgewerkt: de vooringestelde Shutdown_Update_Detected_Timer van 600 seconden leidt dan tot een herstart, die beheerders bij een aanval geregeld voor een succes van de aanvaller aanzien. Ten derde is elke mod vreemde code op uw server.
Praktisch betekent dat: houd de lijst zo kort mogelijk, controleer na elke onverwachte herstart eerst het serverlogboek op de melding over de workshopupdate, en zet Should_Monitor_Updates alleen uit als u updates zelf inplant.
9. Serverlijst, servercode en de fake-IP-functie
Uw IP-adres laat zich niet geheimhouden zolang de server openbaar vermeld staat. Iedere speler die ooit verbonden is geweest, kent het, en de lijstsites van derden publiceren het sowieso. Twee gewoonten helpen toch: publiceer het rauwe adres nergens zelf, en laat uw spelers via een hostnaam verbinden, zodat een adreswissel niet elke verwijzing breekt. De klassieker is het vergeten A-record naar het oude adres, dat elke wissel zinloos maakt.
Voor gebruik op het internet hebt u sowieso een Game Server Login Token (GSLT) uit het Steam-serverbeheer voor app-kenmerk 304930 nodig. Dat zorgt er daarnaast voor dat de servercode van uw server over herstarts heen gelijk blijft, in plaats van bij elke start opnieuw te worden aangemaakt.
Unturned biedt daarnaast een fake-IP-functie aan. Die wordt met "Use_FakeIP": true in de Config.json ingeschakeld, en het consolecommando CopyFakeIP levert het adres dat u vervolgens publiceert. Het verkeer loopt daarna over het relaisnetwerk Steam Datagram Relay, de toegekende adressen liggen in het bereik 169.254.0.0 tot 169.254.255.255, en het echte adres van de server wordt de spelers niet meer getoond. Valve beschrijft het verkeer als geauthenticeerd, versleuteld en begrensd in snelheid.
De prijs daarvoor is hoog en wordt zelden vermeld: adres en poort wisselen bij elke herstart, een domeinnaam laat zich er zonder eigen scripts niet op richten, en de Steam-lijsten "Favorieten" en "Geschiedenis" werken er niet mee, alleen de bladwijzerfunctie. Maar vooral beschermt de functie alleen de spelweg. Uw server behoudt zijn echte adres, en SSH, webpaneel, database en website blijven daarover bereikbaar. Wie het adres uit een oud DNS-record, een statuspagina of een eerdere verbinding kent, valt het nog steeds rechtstreeks aan. De fake-IP-functie vervangt dus geen filtering in het netwerk vóór de server, ze verkleint alleen het aantal mensen dat uw adres kent.
10. Vastleggen, zodat u tijdens de aanval niet hoeft te gokken
De belangrijkste stap is die welke bijna niemand vooraf zet: een vergelijkingsbasis aanleggen zolang alles normaal draait. Zonder normaalwaarde kunt u na een incident niet zeggen of 40.000 pakketten per seconde veel was of gewoon vrijdagavond. Met apt-get install -y vnstat sysstat loopt de meting permanent mee. Tijdens een incident volstaan vier commando's:
sar -n DEV 1 10
ip -s link show eth0
dmesg -T | tail -50
tcpdump -ni eth0 udp portrange 27015-27016 -c 200 -q
Voor tcpdump geldt: begrens hem altijd met -c, een opname onder volle belasting belast een toch al overbelaste server nog extra. Hoe u de waarden uitleest en een aanval van een softwarefout onderscheidt, staat in DDoS-aanval op de server herkennen.
Waar deze maatregelen ophouden
Alle maatregelen tot hier draaien op uw server, dus aan het einde van de lijn. Een firewallregel beslist over een pakket dat al over de kabel is gekomen. U kunt het verwerpen, maar u kunt niet terugdraaien dat het verstuurd is.
Rekent u even mee. Een typische gameserver hangt aan 1 Gbit/s, dat is 125 megabyte per seconde, en de lijn zit vol zodra iemand meer stuurt. Normaal gebruik blijft daar ver onder: bij 24 spelers en de standaard toegestane 50 pakketten per speler en per seconde komen er ongeveer 1.200 pakketten per seconde aan. Een booterdienst produceert zonder enige voorbereiding een veelvoud daarvan.
De tweede grootheid is de pakketsnelheid, en die slaat bijna altijd eerder toe dan de bandbreedte. Bij kleine pakketten van 64 byte passen er in een lijn van 1 Gbit/s ongeveer 1,49 miljoen pakketten per seconde. Een gewone serverkernel verwerkt daarvan, afhankelijk van CPU en netwerkkaart, enkele honderdduizenden voordat hij begint te verwerpen. Een aanval die uw lijn niet eens voor een derde vult, kan uw server dus toch platleggen, omdat de rekentijd opgaat aan het verwerpen. Beheerders ervaren dat als "de belasting was helemaal niet hoog en toch was alles weg".
Ter oriëntatie, welke ordes van grootte werkelijk voorkomen: op KernelHost-servers zijn onder meer een aanval met meer dan 473,4 Gbit/s bij meer dan 41,5 miljoen pakketten per seconde op een voiceserver en een UDP-flood met meer dan 112,2 Gbit/s op een gameserver weggefilterd. Daarvoor bestaat geen lokale instelling. Volumetrische aanvallen moeten in het netwerk vóór de server eindigen.
Wat KernelHost daartegenover zet
De permanente bescherming die op elke server inbegrepen is
De DDoS-bescherming van KernelHost is in twee lagen opgebouwd en permanent actief, zonder dat u iets hoeft in te schakelen, te bestellen of te configureren:
- Laag 1: 17 Tbps mitigatiecapaciteit in het globale scrubbing-netwerk. Volumetrische aanvallen worden dicht bij hun bron geschoond, nog voordat ze het datacenter bereiken.
- Laag 2: Arbor realtime filtering met 3,2 Tbps in Frankfurt am Main. Direct vóór de server worden protocolspecifieke patronen herkend en verworpen, pakket voor pakket.
Twee eigenschappen zijn doorslaggevend. De bescherming loopt permanent en hoeft niet eerst op een aanval te reageren, er zijn dus geen eerste minuten waarin de server weg is. En er wordt geen null-routing toegepast: uw IP-adres blijft in het netwerk, alleen de kwaadaardige pakketten worden verworpen. Wie het IP-adres uit het netwerk haalt, bereikt voor u hetzelfde resultaat als de aanvaller. De locatie is Frankfurt am Main. Welke games en protocollen gedekt zijn, somt Gameserver-DDoS-bescherming in realtime op.
Advanced DDoS Protection voor projecten die permanent onder vuur liggen
Sommige projecten worden niet af en toe, maar gericht en wekenlang aangevallen. Daarvoor is er de Advanced DDoS Protection vanaf 50,00 € per maand, PrePaid, zonder minimale looptijd en zonder installatiekosten. Het verschil zit niet in meer capaciteit, maar in de controle:
- Een dedicated beschermd IP-adres uit het Frankfurtse kernnetwerk, waarnaar uw server binnen het eigen netwerk wordt omgezet. Aan uw kant is geen enkele verbouwing nodig.
- Zelf te beheren beschermingsregels per poort en protocol in het klantenpaneel: u stelt apart in wat op 27015 UDP is toegestaan (de opvragingen) en wat op 27016 UDP (het spelverkeer), zonder daarvoor een ticket te schrijven.
- Wijzigingen gelden in realtime, u kunt dus tijdens een lopende aanval bijsturen, bijvoorbeeld de opvragingen strakker begrenzen en het spelverkeer onaangeroerd laten.
- Een beschermingsprofiel dat bij het spel past, net zo goed voor aangepaste en eigen applicaties op willekeurige TCP- of UDP-poorten, dus ook voor een plugin met een eigen poort.
De twee niveaus in vergelijking
| Kenmerk | Inbegrepen permanente DDoS-bescherming | Advanced DDoS Protection |
|---|---|---|
| Prijs | in elk serverpakket inbegrepen, zonder meerprijs | vanaf 50,00 € per maand, PrePaid |
| Filtercapaciteit | 17 Tbps globale scrubbing plus Arbor realtime filtering met 3,2 Tbps in Frankfurt am Main | dezelfde filtering in twee lagen |
| IP-adres | het IP-adres van uw server | een extra dedicated beschermd IP-adres |
| Regelset | automatische profielen, geen configuratie nodig | eigen regels per poort en protocol in het klantenpaneel |
| Wijzigingen | lopen automatisch mee | gelden in realtime, ook tijdens een aanval |
| Spelprofiel | geoptimaliseerde profielen voor gangbare games, Unturned inbegrepen | profiel passend bij het spel, ook voor aangepaste applicaties |
| Null-routing | nee | nee |
| Looptijd | gekoppeld aan het serverpakket | PrePaid, geen minimale looptijd, geen opzegtermijn, geen installatiekosten |
Voor de meeste Unturned-projecten volstaat de inbegrepen permanente bescherming samen met een nette serverconfiguratie. De Advanced DDoS Protection is het antwoord op iemand die het persoonlijk maakt.
Veelvoorkomende fouten en oplossingen
"Mijn handleiding zegt dat ik 27015 tot en met 27017 moet vrijgeven": die handleiding is ouder dan november 2021. Sinds versie 3.21.30.0 heeft een Unturned-server nog maar twee poorten nodig, omdat de Steam-opvraging niet meer op poort plus twee ligt. Sluit 27017, tenzij daar een tweede instantie draait.
"De server draait, maar staat in geen enkele serverlijst meer": dat is het typische beeld van een queryflood of van een te scherpe eigen regel op 27015 UDP. Controleer met iptables -L INPUT -n -v of uw eigen regel treffers telt. Lopen de tellers hard op, dan filtert u op dit moment uw eigen lijstvermeldingen weg. Zet 27015 nooit volledig dicht.
"Alle spelers vliegen tegelijk met een timeout eruit": kijk eerst na of de connection tracking is overgelopen (dmesg -T | grep -i conntrack). Zit de tabel vol, dan verwerpt de kernel zonder onderscheid. Timeout_Game_Seconds staat standaard op 30 seconden: wie binnen die tijd terugkomt, behoudt zijn plaats.
"De server start tijdens het draaien opnieuw op": dat is zelden een aanval. Controleer het logboek op de melding over de herkende workshopupdate. Should_Monitor_Updates sluit de server na de vooringestelde periode van 600 seconden af.
"Ik heb het IP-adres gewisseld en was twee uur later weer offline": de aanvaller heeft het nieuwe adres uit dezelfde bron als het oude, meestal een serverlijst, een Discord-bot of een oud DNS-record. Een adreswissel is tijdwinst, geen oplossing.
"Ik heb de fake-IP-functie ingeschakeld en word toch aangevallen": die verbergt het adres voor nieuwe spelers, maar neemt het de server niet af. Wie het uit een oude lijstvermelding, een statuspagina of een eerdere verbinding kent, bereikt uw server nog steeds rechtstreeks, net als SSH en elk webpaneel daarop.
"Mijn vorige aanbieder heeft mijn IP-adres geblokkeerd": dat is null-routing. De aanbieder beschermt daarmee zijn eigen netwerk; voor u is het resultaat identiek aan een geslaagde aanval, meestal nog urenlang daarna. Vraag bij twijfel na of er wordt gefilterd of null-geroutet. Dat antwoord bepaalt meer over uw beschikbaarheid dan welke hardwarespecificatie ook.
"In de tcpdump zie ik niets opvallends": wordt het verkeer al in het netwerk ervoor gefilterd, dan komt er op de server zoals verwacht niets aan. Dat is het normale beeld bij een werkende filtering. Omgekeerd geldt: zit de lijn vol, dan bereikt u onder omstandigheden zelfs de SSH-sessie niet meer waarmee u wilde meten. Gebruik dan de VNC-console in het klantenpaneel, die losstaat van het netwerk van het gastsysteem.
Kort samengevat
- Een Unturned-server heeft precies twee open UDP-poorten nodig: de in de
Commands.datingesteldePort(standaard 27015) en die waarde plus een (27016). TCP heeft het spel zelf niet nodig. - Poort 27017 is sinds versie 3.21.30.0 van 21 november 2021 overbodig, omdat de Steam-opvraging niet meer op poort plus twee ligt. Wie hem nog open heeft, volgt een verouderde handleiding.
- Unturned heeft geen ingebouwde RCON-poort. Elke afstandsbediening komt uit een plugin, brengt een eigen TCP-poort mee en moet door uzelf worden beperkt.
- De opvraagpoort 27015 is het gevoeligste punt: een queryflood maakt de server in de serverlijst onzichtbaar zonder een enkele speler te raken, en het Steam-protocol heeft volgens US-CERT TA14-017A een versterkingsfactor van 5,5.
- De grenzen in de
Config.json(Max_Packets_Per_Second50,0,Rate_Limit_Kick_Threshold10 per 40 seconden) werken alleen tegen clients die werkelijk toetreden, niet tegen vervalste afzenderadressen. - Een lijn van 1 Gbit/s zit bij 125 megabyte per seconde vol, bij pakketten van 64 byte al bij ongeveer 1,49 miljoen pakketten per seconde. Normaal bedrijf met 24 spelers ligt rond 1.200 pakketten per seconde. Alles daarboven beslist het netwerk vóór de server, niet uw firewall.
- Bij KernelHost is de permanente bescherming in twee lagen bij elk serverpakket zonder meerprijs inbegrepen en vanaf de oplevering actief, zonder null-routing. Wie de filterregels zelf wil sturen, neemt de Advanced DDoS Protection er vanaf 50,00 € per maand bij.
Draait uw project al bij KernelHost, dan is de filtering actief zonder dat u iets hoeft te doen. Merkt u toch iets ongewoons, open dan een supportticket, zodat de filterregels voor uw IP-adres worden bijgesteld. Bij een lopende aanval bereikt u ons daarnaast via de WhatsApp-noodchat op +43 650 8209883.
Veelgestelde vragen
Welke poorten moet ik voor een Unturned-server openlaten?
Moet ik poort 27017 voor Unturned vrijgeven?
Mijn Unturned-server draait, maar staat in geen enkele serverlijst meer. Is dat een aanval?
Heeft Unturned een ingebouwde RCON-poort?
Beschermt de fake-IP-functie van Unturned tegen DDoS-aanvallen?
Kan ik mij met iptables of UFW tegen een DDoS-aanval verweren?
Vanaf welke omvang redt mijn Unturned-server het niet meer alleen?
Waarom worden Unturned-servers zo vaak aangevallen?
Helpen RocketMod- of OpenMod-plugins tegen DDoS-aanvallen?
Gaat mijn server bij KernelHost tijdens een aanval offline?
Kost de DDoS-bescherming bij KernelHost extra?
Wanneer heb ik voor mijn Unturned-server daarnaast de Advanced DDoS Protection nodig?
2026 KernelHost GmbH. Alle rechten voorbehouden. Deze handleiding is auteursrechtelijk beschermd. Publicatie op andere websites, geheel, gedeeltelijk of in bewerkte vorm, is zonder onze schriftelijke toestemming niet toegestaan. Citeren met bronvermelding en link is uitdrukkelijk welkom.

