Ochrona serwera Palworld przed atakami DDoS

Opublikowano 18 min czytania

Których portów serwer Palworld naprawdę potrzebuje, jak zabezpieczyć port zapytań Steam 27015, RCON, REST-API i 32 miejsca oraz od jakiej skali ataku pomaga już tylko filtrowanie w sieci przed serwerem.

Serwer Palworld, który wieczorem w środku rozgrywki wyrzuca wszystkich graczy naraz, znika na kilka minut i potem sam wraca do życia, rzadko ma problem ze sprzętem. Z reguły trwa atak. Ten wpis pokazuje, jak chronić serwer Palworld przed atakami DDoS: najpierw to, co możesz skonfigurować sam i bez dodatkowych kosztów, potem miejsce, w którym te działania kończą się technicznie, a na koniec to, co musi wydarzyć się w sieci przed serwerem, żeby serwer pozostał osiągalny.

Wszystkie informacje dotyczą oficjalnego serwera dedykowanego firmy Pocketpair (Steam-App-ID 2394010) na Debianie 12, Debianie 13, Ubuntu 22.04 LTS albo Ubuntu 24.04 LTS. Polecenia są napisane dla użytkownika root, jako zwykły użytkownik poprzedź je poleceniem sudo. Jeśli atak właśnie trwa, obowiązuje kolejność: najpierw mierz, potem zmieniaj. Twardy restart pod obciążeniem przekreśla wszystko, co wydarzyło się w świecie od ostatniego automatycznego punktu zapisu, a pomiary z przebiegu incydentu znikają razem z nim.

Dlaczego serwery Palworld są celowo unieruchamiane atakami DDoS

Serwer Palworld to mała, stała publiczność pod stałym adresem. Serwer dedykowany jest ograniczony do 32 graczy, sterowanych przez ServerPlayerMaxNum z dopuszczalnym zakresem od 1 do 32. Kto zamiast tego hostuje przez menu gry, dochodzi do czterech graczy i tylko na tak długo, jak długo sam gospodarz jest online. Z tych 32 miejsc wynika cała reszta: grupa gra o stałych wieczornych porach, zna się nawzajem, a awaria o 20:00 nie trafia w ułamek graczy, tylko we wszystkich.

Adres serwera nie jest przy tym żadną tajemnicą. Palworld nie zna pośrednictwa przez usługę producenta: gracze wpisują adres IP i port w polu połączenia bezpośredniego, a kto chce dodatkowo umieścić serwer na społecznościowej liście serwerów, uruchamia go z parametrem -publiclobby i pozwala odpowiadać portowi zapytań. Każdy, kto choć raz był połączony, zna więc cel. Usługa typu booter, która ostrzeliwuje ten adres za kilka euro miesięcznie, nie wymaga od zlecającego ani umiejętności, ani nakładu pracy.

Technicznie dochodzi do tego fakt, że cały ruch gry idzie przez UDP. UDP nie zna nawiązywania połączenia, którego można by wymagać, a adres nadawcy pakietu UDP da się podrobić. Atakujący nie musi więc ani wchodzić na serwer, ani poprawnie się z nim komunikować, żeby wygenerować obciążenie. Co przy takim ataku dzieje się technicznie, wyjaśnia wpis Czym jest atak DDoS?.

Porty, o które przy serwerze Palworld naprawdę chodzi

Serwer Palworld potrzebuje dokładnie jednego otwartego portu: 8211 UDP. Cała reszta jest opcjonalna, a zależnie od zadania wręcz szkodliwa, gdy stoi w internecie. Wynika z tego użyteczne rozróżnienie: atak DDoS na port 8211 zawsze trafia w sam ruch gry, a atak na port 27015 UDP tylko we wpis na liście serwerów.

Port Protokół Do czego Wartość domyślna i dyrektywa Czy należy do internetu?
8211 UDP cały ruch gry, nawiązywanie połączenia i bieżąca synchronizacja PublicPort=8211, parametr startowy -port=8211 tak, obowiązkowo
27015 UDP zapytanie Steam (A2S) dla wpisu na społecznościowej liście serwerów parametr startowy -queryport=27015 tylko przy wpisie na liście
8212 TCP REST-API do administracji, HTTP Basic Auth ze stałym użytkownikiem admin RESTAPIEnabled=False, RESTAPIPort=8212 nie
25575 TCP zdalne sterowanie RCON, oznaczone przez Pocketpair jako przestarzałe RCONEnabled=False, RCONPort=25575 nie
22 TCP twój dostęp SSH do maszyny ustawienie systemowe ograniczony

Wszystkie przełączniki do tego stoją w jednym jedynym pliku: Pal/Saved/Config/LinuxServer/PalWorldSettings.ini, pod Windowsem odpowiednio Pal\Saved\Config\WindowsServer\PalWorldSettings.ini. Zaczyna się on wierszem sekcji [/Script/Pal.PalGameWorldSettings], po którym następuje jeden jedyny wiersz OptionSettings=(...) zawierający wszystkie ustawienia jako listę. Złamanie wiersza wewnątrz nawiasu unieważnia całą konfigurację, a serwer bez słowa komentarza wraca do wartości domyślnych. Wzorca DefaultPalWorldSettings.ini w katalogu serwera nie edytujesz, bo przy każdej aktualizacji zostaje nadpisany.

Serwer Palworld w liczbach

Poniższe wartości są podstawą każdej decyzji o regułach filtrowania i wartościach granicznych.

Wielkość Wartość
Port gry 8211 UDP
Port zapytań 27015 UDP
Port REST-API 8212 TCP
Port RCON 25575 TCP, przestarzały
Maksymalna liczba graczy na serwerze dedykowanym 32 (ServerPlayerMaxNum, zakres od 1 do 32)
Maksymalna liczba graczy bez serwera dedykowanego 4, w kooperacji uruchamianej z menu gry
Pamięć operacyjna, oficjalne wymaganie 16 GB, przy pełnym obłożeniu raczej 24 do 32 GB
Steam-App-ID pakietu serwerowego 2394010
Typowa skala ataku na projekty serwerów gier 5 do 50 Gbit/s
Liczba pakietów, która zapełnia łącze 1 Gbit/s około 1,49 miliona pakietów na sekundę przy pakietach po 64 bajty
Wartości szczytowe odfiltrowane na serwerach KernelHost 473,4 Gbit/s przy 41,5 miliona pakietów na sekundę

Dlaczego port zapytań 27015 jest najwrażliwszym punktem

Port zapytań odpowiada na pytania o status w formacie Steam A2S, czyli na to samo zapytanie, które obsługują też serwery Counter-Strike i ARK. Zapytanie A2S_INFO to bezpołączeniowy pakiet UDP o wielkości kilkudziesięciu bajtów, a odpowiedź z nazwą serwera, światem, liczbą graczy i stanem rozgrywki jest jego wielokrotnością. Ponieważ w UDP adres nadawcy da się podrobić, atakujący może odpytywać cudze porty zapytań i kierować większe odpowiedzi na swój właściwy cel. Twój serwer nie jest w takim przypadku ofiarą, tylko wzmacniaczem, a rachunek płaci jego łącze.

Valve dołożyło dlatego do A2S_INFO 8 grudnia 2020 poprzedzające wyzwanie: serwer odpowiada najpierw pakietem S2C_CHALLENGE, pytający musi odesłać token i dowodzi tym samym, że nie podrabia swojego adresu nadawcy. To łagodzi wzmocnienie, ale go nie kończy, a przeciw zwykłej powodzi jednakowych zapytań z prawdziwych adresów nie działa w ogóle.

Dla Palworlda wynika z tego ważna przewaga nad silnikiem Source: ruch gry i zapytania o serwer leżą na osobnych portach. W Counter-Strike 2 oba dzielą port 27015, więc zgrubny limit wyrzuca tam własnych graczy razem z atakiem. W Palworldzie możesz ostro ograniczyć 27015 UDP albo zamknąć go całkiem, nie dotykając ani jednego trwającego połączenia na 8211 UDP. Kto nie potrzebuje wpisu na liście, wykreśla -publiclobby oraz port zapytań bez zastępstwa i zdejmuje tym samym z sieci całą powierzchnię ataku.

Co możesz zrobić sam, zanim wydasz pieniądze

Poniższe kroki nie zatrzymają ataku wolumetrycznego, tego nie potrafi żadne oprogramowanie na serwerze. Sprzątają za to wszystko, co leży poniżej: skany portów, powodzie zapytań, próby przejęcia przez porty administracyjne oraz zajęcie wszystkich 32 miejsc przez obcych. To większość tego, co na co dzień przeszkadza serwerowi Palworld, a kosztuje pół godziny.

1. Inwentaryzacja: co nasłuchuje na serwerze?

Zanim napiszesz choć jedną regułę, sprawdź, co twój serwer oferuje na zewnątrz. Nie zgaduj, sprawdź:

ss -lntup

Interesuje cię kolumna z adresem lokalnym. 0.0.0.0:8211 oznacza „osiągalny z całego internetu”, 127.0.0.1:8212 oznacza „tylko lokalnie” i nie potrzebuje żadnej reguły firewalla. Obok procesu gry pojawiają się na rozbudowanym serwerze często jeszcze panel zarządzania, serwer WWW do podglądu mapy oraz baza danych. Spojrzenie oczami atakującego daje skan portów z zewnątrz:

nmap -Pn -sU -p 8211,27015 TWOJ.ADRES.IP.SERWERA
nmap -Pn -p- --min-rate 1000 TWOJ.ADRES.IP.SERWERA

2. Otwieraj tylko to, czego Palworld naprawdę potrzebuje

Wystarczą dwie reguły zezwalające, a druga z nich jest opcjonalna. W UFW wygląda to tak, dokładnie w tej kolejności, żebyś nie zamknął dostępu samemu sobie:

ufw allow 22/tcp comment 'SSH'
ufw allow 8211/udp comment 'Palworld ruch gry'
ufw allow 27015/udp comment 'Palworld zapytania Steam'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

Trzeci wiersz pomijasz, jeśli twój serwer nie ma stać na społecznościowej liście serwerów. Twoi gracze łączą się wtedy nadal przez adres IP i port 8211, serwer znika jedynie z publicznej listy. Pełną instrukcję razem z drogą ratunkową znajdziesz we wpisie Konfiguracja firewalla UFW bez zamykania sobie dostępu.

3. Zdejmij RCON na 25575 i REST-API na 8212 z internetu

Oba porty to dostępy administracyjne z pełną kontrolą nad serwerem i oba są fabrycznie wyłączone: RCONEnabled=False oraz RESTAPIEnabled=False. Kto je włącza, powinien wiedzieć, co przez to publikuje.

REST-API na 8212 TCP uwierzytelnia przez HTTP Basic Auth ze stałą nazwą użytkownika admin i wartością z AdminPassword, a do tego przez nieszyfrowany HTTP. Hasło administratora idzie tym samym przy każdym pojedynczym zapytaniu przez łącze w odwracalnej postaci. RCON na 25575 TCP to równie nieszyfrowany protokół tekstowy, a Pocketpair oznaczył go jako przestarzały na rzecz REST-API. Dla nowych instalacji właściwym wyborem jest REST-API, a dla obu obowiązuje ta sama zasada: nie do otwartej sieci.

RESTAPIEnabled=True
RESTAPIPort=8212
AdminPassword="długa losowa wartość"

Osiągalny interfejs robisz sobie przez przekierowanie portu po SSH, a potem pracujesz lokalnie z 127.0.0.1:8212:

ssh -N -L 8212:127.0.0.1:8212 root@TWOJ.ADRES.IP.SERWERA

Nigdy nie zostawiaj AdminPassword pustego, bo puste jest ustawieniem fabrycznym. Wystarczy wartość z openssl rand -base64 32. To samo dotyczy ServerPassword, o czym zaraz więcej.

4. Ogranicz port zapytań 27015, nie tracąc wpisu na liście

Bezpołączeniowe pakiety Steam zaczynają się od czterech ustawionych bajtów (0xffffffff), a zwykły ruch gry takiego nagłówka nie ma. Na tym da się oprzeć limit na adres źródłowy, który hamuje zapytania i zachowuje wpis na liście. W nftables, ładowane przez nft -f:

table inet palworld {
    chain input {
        type filter hook input priority -10; policy accept;
        udp dport 27015 @th,64,32 0xffffffff \
            meter a2sflood { ip saddr limit rate over 10/second burst 20 packets } drop
    }
}

Priorytet -10 sprawia, że reguła zadziała przed łańcuchem filtrującym UFW, a @th,64,32 odczytuje pierwsze cztery bajty za nagłówkiem UDP. W klasycznym iptables to samo rozdzielenie osiąga dopasowanie do sygnatury A2S_INFO:

iptables -A INPUT -p udp --dport 27015 \
  -m string --algo bm --hex-string "|ffffffff54536f7572636520456e67696e6520517565727900|" \
  -m hashlimit --hashlimit-name a2sflood --hashlimit-mode srcip \
  --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP

Dziesięć zapytań na sekundę i adres to miara hojna: usługa listująca pyta zwykle co kilka minut, a nie kilka razy na sekundę. Ważne jest tylko, żeby ta reguła stała na 27015, a nie na 8211, bo inaczej trafisz własnych graczy.

5. Ogranicz liczbę pakietów na 8211 UDP

Na samym porcie gry przeciw małym powodziom z niewielu źródeł pomaga górny limit na adres źródłowy. W Palworldzie ta granica jest stosunkowo bezpieczna do ustawienia, bo jednocześnie połączonych jest najwyżej 32 graczy, a każdy z nich zajmuje dokładnie jeden adres źródłowy:

iptables -I INPUT -p udp --dport 8211 \
  -m hashlimit --hashlimit-name palworld_udp --hashlimit-mode srcip \
  --hashlimit-above 400/sec --hashlimit-burst 600 -j DROP

Ta liczba to wartość startowa, a nie prawda objawiona. Pełny serwer z 32 graczami i wieloma bazami generuje wyraźnie więcej pakietów niż rozgrywka we czwórkę, a kto ustawi limit zbyt ciasno, wyrzuci własnych graczy. Najpierw mierz przez tydzień w normalnej pracy, a potem ustaw granicę na dwukrotność zmierzonej wartości szczytowej.

Same reguły iptables znikają po restarcie. Na Debianie i Ubuntu zabezpieczasz je tak:

apt-get install -y iptables-persistent
netfilter-persistent save

Przy UFW takie reguły należą dodatkowo do /etc/ufw/before.rules, bo inaczej znikną przy następnym ufw reload. Czy reguła jest w ogóle osiągana, pokazuje iptables -L INPUT -n -v: jeśli liczniki trafień stoją na zerze, reguła nie działa.

6. Hasło serwera, lista banów i 32 miejsca przeciw wyczerpaniu slotów

Wyczerpanie slotów to najtańszy atak na serwer Palworld i nie potrzebuje żadnej przepustowości. Serwer dedykowany ma najwyżej 32 miejsca, więc wystarczą 32 jednoczesne połączenia, żeby zamknąć drzwi całej społeczności. Atak wolumetryczny kosztuje zlecającego pieniądze, 32 sesje nie kosztują go nic. To czyni tę drogę atrakcyjniejszą dla małych serwerów niż jakakolwiek powódź pakietów.

Palworld nie ma wbudowanej whitelisty. Narzędzia moderacyjne to kick, ban i hasło serwera, i właśnie hasło serwera jest przeciw wyczerpaniu slotów najskuteczniejszym pojedynczym środkiem:

ServerPassword="wartość, którą zna tylko twoja grupa"
ServerPlayerMaxNum=32
bShowPlayerList=True
BanListURL="https://api.palworldgame.com/api/banlist.txt"

ServerPassword jest fabrycznie puste, więc każdy z adresem IP i portem wchodzi do środka. BanListURL wskazuje standardowo na listę utrzymywaną przez Pocketpair i da się ją przestawić na własny plik tekstowy, jeśli chcesz prowadzić blokady projektu. ServerPlayerMaxNum nie ustawiaj powyżej 32: wyższe wartości nie są wspierane i zemszczą się najpóźniej przy następnej aktualizacji. I jedno musi być jasne: hasło serwera chroni twoje miejsca, a nie twoje łącze. Atakujący, który zalewa twój serwer, wcale nie chce dołączyć.

7. Odciąż śledzenie połączeń i powiększ bufory

Ten punkt tłumaczy awarie, które wyglądają jak atak wolumetryczny, choć nim nie są. Kernel zakłada dla ruchu UDP wpisy w śledzeniu połączeń (conntrack), a przy podrobionych adresach nadawcy każdy adres oznacza nowy wpis. Gdy tablica się zapełni, kernel odrzuca pakiety bez różnicy, atak i twoi gracze wylatują razem, a w logu stoi „nf_conntrack: table full”. Stan i górny limit pokazuje:

sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max

Najskuteczniejszy krok to w ogóle nie pozwolić na śledzenie ruchu gry, bo Palworld zarządza swoimi sesjami sam:

table inet raw {
    chain prerouting {
        type filter hook prerouting priority raw; policy accept;
        udp dport { 8211, 27015 } notrack
    }
    chain output {
        type filter hook output priority raw; policy accept;
        udp sport { 8211, 27015 } notrack
    }
}

W iptables odpowiednik brzmi iptables -t raw -A PREROUTING -p udp --dport 8211 -j NOTRACK oraz ten sam wiersz dla OUTPUT z --sport. Porty potrzebują potem wyraźnego zezwolenia, bo bez śledzenia nie zadziała żadna reguła sprawdzająca istniejący stan. Jeśli pakiety przychodzą szybciej, niż proces serwera zdąży je odebrać, przepełnia się dodatkowo bufor odbiorczy. Dla graczy wygląda to jak utrata pakietów, mimo że łącze jest wolne. Wpis w /etc/sysctl.d/, uaktywniany przez sysctl -p:

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

Czy te wartości są potrzebne, zdradzi ci sam kernel: jeśli UdpRcvbufErrors w nstat -az rośnie, to znaczy, że działają. Jeśli licznik zostaje na zerze, zmiana niczego nie da.

8. Zbieraj pomiary, zanim zrobi się poważnie

Najważniejszy krok to ten, którego prawie nikt nie robi wcześniej: przygotuj bazę porównawczą, dopóki wszystko działa normalnie. Bez wartości normalnej po incydencie nie powiesz, czy 40 000 pakietów na sekundę to dużo, czy po prostu sobotni wieczór. Po apt-get install -y vnstat sysstat pomiar chodzi na stałe w tle. W trakcie incydentu wystarczą cztery polecenia:

sar -n DEV 1 10
ip -s link show eth0
dmesg -T | tail -50
tcpdump -ni eth0 -c 200 "udp port 8211 or udp port 27015"

Przy tcpdump obowiązuje zasada: zawsze ograniczaj przez -c, bo zrzut przy pełnym obciążeniu dodatkowo obciąża i tak przeciążony serwer. Palworld dostarcza w dodatku wielkość pomiarową, której nie ma żadne inne narzędzie. Jeśli REST-API jest aktywne, punkt końcowy z metrykami zwraca między innymi liczbę klatek serwera, aktualną liczbę graczy i czas pracy:

curl -s -u admin:TWOJE_HASLO_ADMINA http://127.0.0.1:8212/v1/api/metrics

Ta jedna liczba czysto rozdziela dwie najczęstsze przyczyny. Jeśli liczba klatek serwera spada, a liczba pakietów pozostaje niepodejrzana, to nie jest atak, tylko obciążenie albo znany przyrost zużycia pamięci przez proces serwera. Jeśli liczba klatek jest stabilna, a pakiety przychodzące rosną daleko powyżej wartości normalnej, to jest atak. Jak oceniać wartości sieciowe w szczegółach, opisuje wpis Jak rozpoznać atak DDoS na serwerze.

Gdzie te działania się kończą: przepustowość i liczba pakietów

Teraz część, której nie rozwiąże żaden plik konfiguracyjny. Wszystkie dotychczasowe działania dzieją się na twoim serwerze, czyli na końcu łącza. Reguła firewalla decyduje o pakiecie, który już przeszedł przez kabel. Możesz go odrzucić, ale nie możesz sprawić, żeby nie został wysłany.

Policz to razem ze mną. Typowy serwer gier wisi na 1 Gbit/s, co odpowiada 125 megabajtom na sekundę, a łącze jest pełne, gdy tylko ktoś wyśle więcej. Ataki na projekty serwerów gier mieszczą się zwykle między 5 a 50 Gbit/s, czyli od pięciu do pięćdziesięciu razy powyżej twojego łącza. To, czy twoja reguła iptables za tym łączem jest dobra, nie ma już wtedy znaczenia, bo pakiety twoich graczy nie przechodzą już wcześniej.

Druga wielkość to liczba pakietów na sekundę i uderza ona często wcześniej niż przepustowość. Przy małych pakietach po 64 bajty w łącze 1 Gbit/s mieści się około 1,49 miliona pakietów na sekundę. Zwykły kernel serwera przetworzy z tego, zależnie od procesora i karty sieciowej, kilkaset tysięcy, zanim zacznie odrzucać. Atak, który nie zapełnia twojego łącza nawet w jednej trzeciej, może więc mimo wszystko położyć twój serwer, bo cały czas procesora idzie na odrzucanie. Operatorzy przeżywają to jako „przecież obciążenie wcale nie było wysokie, a i tak wszystko padło”, a w Palworldzie objawia się to najpierw skokami lagów i dopiero potem zerwaniem połączenia.

Przy serwerze Palworld dochodzi do tego niekorzystna proporcja. W pełni obsadzony serwer z 32 graczami obciąża tylko ułamek łącza 1 Gbit/s. Atak nie musi więc być duży, żeby osiągnąć wielokrotność normalnej pracy, i właśnie dlatego wystarczą tu ataki, które na dużej platformie w ogóle nie zwróciłyby uwagi.

Dla porządku wielkości, które zdarzają się naprawdę: na serwerach KernelHost odfiltrowano między innymi atak o wolumenie ponad 473,4 Gbit/s przy ponad 41,5 miliona pakietów na sekundę wymierzony w serwer głosowy oraz flood UDP o wolumenie ponad 112,2 Gbit/s w serwer gier. Na to nie ma żadnego ustawienia lokalnego. Ataki wolumetryczne muszą kończyć się w sieci przed serwerem.

Co przeciwstawia temu KernelHost

Stała ochrona zawarta w każdym pakiecie serwerowym

Ochrona DDoS w KernelHoście jest zbudowana dwuwarstwowo i stale aktywna, bez konieczności włączania, zamawiania czy konfigurowania czegokolwiek:

  • Warstwa 1: 17 Tbps pojemności mitygacji w globalnej sieci scrubbing. Ataki wolumetryczne są oczyszczane blisko źródła, zanim dotrą do centrum danych.
  • Warstwa 2: filtrowanie Arbor w czasie rzeczywistym o wydajności 3,2 Tbps we Frankfurcie nad Menem. Bezpośrednio przed serwerem rozpoznawane i odrzucane są wzorce specyficzne dla protokołów, pakiet po pakiecie.

Decydujące są dwie cechy. Ochrona działa nieprzerwanie i nie musi dopiero reagować na atak, nie ma więc kilku minut na starcie, w których serwer znika. I nie stosuje się null-routingu: twój adres IP zostaje w sieci, odrzucane są wyłącznie szkodliwe pakiety. Kto zdejmuje adres IP z sieci, osiąga dla ciebie ten sam efekt co atakujący. Palworld należy do gier z własnym profilem ochrony, a które kolejne tytuły i protokoły są objęte, wylicza wpis Ochrona DDoS serwerów gier w czasie rzeczywistym.

Advanced DDoS Protection dla projektów Palworld pod stałym ostrzałem

Niektóre projekty są atakowane nie okazjonalnie, tylko celowo i przez wiele tygodni. Dla nich jest Advanced DDoS Protection od 50,00 € miesięcznie, w modelu PrePaid, bez minimalnego okresu umowy i bez opłaty aktywacyjnej. Różnica nie polega na większej pojemności, tylko na kontroli:

  • Dedykowany chroniony adres IP z rdzenia sieci we Frankfurcie, na który twój serwer zostaje przełączony w naszej sieci. Po twojej stronie nie trzeba niczego przebudowywać.
  • Samodzielnie zarządzane reguły ochrony na port i protokół w panelu klienta: osobno ustalasz, co jest dozwolone na 8211 UDP, a co na 27015 UDP, bez pisania zgłoszenia.
  • Zmiany działają w czasie rzeczywistym, możesz więc korygować ustawienia w trakcie trwającego ataku, na przykład przejściowo ostrzej ograniczyć port zapytań i zostawić port gry nietknięty.
  • Profil ochrony dopasowany do gry, dla Palworlda tak samo jak dla własnych aplikacji na dowolnych portach TCP albo UDP.

Advanced DDoS Protection jest skierowana do serwerów stojących w KernelHoście. Kto prowadzi swój projekt Palworld na razie gdzie indziej i jest stale atakowany, przenosi go w tym celu do KernelHostu, a wtedy obie warstwy działają od momentu udostępnienia.

Porównanie obu stopni

Cecha Wliczona stała ochrona DDoS Advanced DDoS Protection
Cena zawarta w każdym pakiecie serwerowym, bez dopłat od 50,00 € miesięcznie, PrePaid
Pojemność filtrowania 17 Tbps globalnego scrubbingu plus filtrowanie Arbor w czasie rzeczywistym o wydajności 3,2 Tbps we Frankfurcie nad Menem to samo dwuwarstwowe filtrowanie
Adres IP adres IP twojego serwera dodatkowy dedykowany chroniony adres IP
Zestaw reguł profile automatyczne, konfiguracja niepotrzebna własne reguły na port i protokół w panelu klienta, 8211 UDP osobno od 27015 UDP
Zmiany dzieją się automatycznie działają w czasie rzeczywistym, także w trakcie ataku
Profil gry zoptymalizowane profile dla popularnych gier, w tym Palworlda profil dopasowany do gry, także dla własnych aplikacji
Null-routing nie nie
Aktywacja działa od momentu udostępnienia chroniony adres IP zaraz po zamówieniu
Okres umowy powiązany z pakietem serwerowym PrePaid, bez minimalnego okresu umowy, bez opłaty aktywacyjnej

Dla większości serwerów Palworld wystarczy wliczona stała ochrona razem z czystą konfiguracją serwera. Advanced DDoS Protection jest odpowiedzią na sytuację, w której ktoś bierze to do siebie osobiście.

Typowe błędy na serwerach Palworld i ich rozwiązania

„Zablokowałem 27015 i teraz serwer zniknął ze społecznościowej listy”: to zachowanie oczekiwane, bo wpis na liście niesie właśnie port zapytań. Nie blokuj go ryczałtem, tylko ogranicz bezpołączeniowe pakiety na adres źródłowy jak w kroku 4. Jeśli wpisu na liście i tak nie potrzebujesz, zostaw port zamknięty, wykreśl -publiclobby i podaj swoim graczom adres IP oraz port 8211 do połączenia bezpośredniego.

„Zmieniłem adres IP i dwie godziny później znowu byłem offline”: atakujący zdobył nowy adres z tego samego źródła co stary. W Palworldzie jest to prawie zawsze jedna z trzech dróg: gracz, który i tak ma adres wpisany w polu połączenia bezpośredniego, bot Discord ze statusem, który publikuje go na nowo, albo stary rekord A w DNS wskazujący na poprzedni adres. Zmiana adresu to zysk na czasie, a nie rozwiązanie.

„Serwer ma skoki lagów, ale łącze jest spokojne”: w Palworldzie to częściej obciążenie niż atak. Proces serwera z upływem czasu zajmuje coraz więcej pamięci operacyjnej, dlatego zaplanowany restart należy do normalnej pracy, a nie do doraźnych prowizorek. Sprawdź liczbę klatek serwera przez punkt końcowy z metrykami oraz zużycie pamięci przez proces. Jeśli sar -n DEV 1 10 pozostaje przy tym niepodejrzany, to nie był atak DDoS.

„Wszystkie 32 miejsca są zajęte, ale w grze nikogo nie widać”: to wyczerpanie slotów i trafia w logikę gry, a nie w łącze. Ustaw ServerPassword, zablokuj podejrzane konta przez listę banów i ogranicz liczbę pakietów na adres źródłowy na 8211 UDP.

„REST-API było przez kilka dni osiągalne z zewnątrz”: w takim razie twoje hasło administratora jest skompromitowane, bo HTTP Basic Auth przez nieszyfrowany HTTP przesyła je przy każdym zapytaniu w odwracalnej postaci. Zmień AdminPassword, zamknij 8212 TCP na zewnątrz i dostawaj się do interfejsu już tylko przez przekierowanie portu po SSH.

„Moje reguły iptables nie działają”: częste są trzy przyczyny. Reguły stoją za łańcuchami UFW i nigdy nie zostają osiągnięte, zniknęły po ostatnim restarcie (wtedy pomogą netfilter-persistent save albo wpis w /etc/ufw/before.rules) albo atak jest wolumetryczny, a reguła pracuje poprawnie na łączu, które jest już pełne. Sprawdź przez iptables -L INPUT -n -v, czy liczniki trafień rosną.

„Mój dotychczasowy dostawca zablokował mój adres IP”: to null-routing. Dostawca chroni w ten sposób własną sieć, a dla ciebie wynik jest identyczny z udanym atakiem, zwykle jeszcze przez wiele godzin po nim. W razie wątpliwości zapytaj, czy ruch jest filtrowany, czy null-routowany. Ta odpowiedź decyduje o twojej dostępności bardziej niż jakakolwiek specyfikacja sprzętu.

„W tcpdump nie widzę nic nietypowego”: jeśli ruch jest filtrowany już w sieci przed serwerem, to zgodnie z oczekiwaniem nic na serwer nie dociera. To normalny stan przy działającym filtrowaniu. Odwrotnie też jest prawdą: gdy łącze jest wysycone, może cię nie dosięgnąć nawet sesja SSH, którą chciałeś użyć do pomiaru. Skorzystaj wtedy z konsoli VNC w panelu klienta, która działa niezależnie od sieci systemu gościa.

Krótkie podsumowanie

  • Serwer Palworld potrzebuje dokładnie jednego otwartego portu: 8211 UDP. Port zapytań 27015 UDP jest potrzebny wyłącznie do wpisu na społecznościowej liście serwerów.
  • RCON na 25575 TCP i REST-API na 8212 TCP nigdy nie należą do otwartej sieci, bo oba przesyłają dane dostępowe bez szyfrowania. RCON jest dodatkowo oznaczony przez Pocketpair jako przestarzały.
  • Ponieważ ruch gry i zapytania o serwer leżą w Palworldzie na osobnych portach, 27015 UDP da się ostro ograniczyć, nie dotykając trwającego ruchu gry na 8211 UDP.
  • Serwer dedykowany jest ograniczony do 32 miejsc, dlatego wyczerpanie slotów jest najtańszym atakiem. Ustawione ServerPassword jest przeciw temu najskuteczniejszym pojedynczym środkiem, bo Palworld nie ma wbudowanej whitelisty.
  • Działania lokalne kończą się na łączu: 1 Gbit/s to 125 megabajtów na sekundę, a przy pakietach po 64 bajty mieści się tam około 1,49 miliona pakietów na sekundę. Wszystko powyżej musi kończyć się w sieci przed serwerem.
  • W KernelHoście dwuwarstwowa stała ochrona jest zawarta w każdym pakiecie serwerowym bez dopłat i działa od momentu udostępnienia, bez null-routingu. Advanced DDoS Protection z dedykowanym chronionym adresem IP i samodzielnie zarządzanymi regułami na port zaczyna się od 50,00 € miesięcznie.

Jeśli twój serwer Palworld działa już w KernelHoście, filtrowanie jest aktywne i nie musisz nic robić. Gdybyś mimo to zauważył coś nietypowego, załóż zgłoszenie wsparcia, żeby reguły filtrowania dla twojego adresu IP zostały skorygowane. Przy trwającym ataku dotrzesz do nas dodatkowo przez awaryjny czat WhatsApp pod numerem +43 650 8209883.

Najczęstsze pytania

Mój serwer Palworld jest właśnie offline. Po czym poznam, czy to atak DDoS?
Spójrz na liczbę pakietów na interfejsie, a nie na obciążenie procesora. Przez sar -n DEV 1 10 zobaczysz pakiety i bajty na sekundę, przez ip -s link show eth0 liczniki odrzuconych pakietów. Jeśli pakiety przychodzące rosną daleko powyżej wartości normalnej, a proces serwera prawie nie pracuje, to jest atak. Palworld daje drugą próbkę: przy aktywnym REST-API punkt końcowy z metrykami na porcie 8212 zwraca liczbę klatek serwera. Gdy liczba klatek spada, a liczba pakietów pozostaje niepodejrzana, to obciążenie, a nie atak.
Które porty muszę zostawić otwarte dla serwera Palworld?
Dokładnie jeden: 8211 UDP, ustawiony przez PublicPort w pliku PalWorldSettings.ini albo przez parametr startowy -port. Do tego dochodzi opcjonalnie 27015 UDP dla zapytań Steam, i to tylko wtedy, gdy serwer ma stać na społecznościowej liście serwerów. Port REST-API 8212 TCP i port RCON 25575 TCP nie należą do otwartej sieci, oba są fabrycznie wyłączone. Gracze i bez wpisu na liście łączą się w każdej chwili przez adres IP i port 8211.
Czym różni się port 8211 od portu 27015 w Palworldzie?
Port 8211 UDP niesie cały ruch gry, czyli nawiązywanie połączenia i bieżącą synchronizację. Port 27015 UDP odpowiada wyłącznie na zapytania o status w formacie Steam A2S, z których powstaje wpis na społecznościowej liście serwerów. To rozdzielenie jest przewagą nad silnikiem Source, gdzie jedno i drugie leży na 27015: w Palworldzie możesz port zapytań ostro ograniczyć albo całkiem zamknąć, nie przeszkadzając ani jednemu połączonemu graczowi na 8211 UDP.
Czy mój serwer Palworld może zostać wykorzystany jako wzmacniacz ataku na osoby trzecie?
Tak, przez port zapytań 27015 UDP. Zapytanie A2S_INFO to bezpołączeniowy pakiet UDP o wielkości kilkudziesięciu bajtów, a odpowiedź z nazwą serwera, światem i liczbą graczy jest jego wielokrotnością, przy czym adres nadawcy pakietu UDP da się podrobić. Valve dołożyło do A2S_INFO 8 grudnia 2020 poprzedzające wyzwanie, które to łagodzi. Skuteczne są limit bezpołączeniowych pakietów na adres źródłowy albo rezygnacja z publicznego wpisu na liście.
Ilu graczy mieści serwer Palworld i dlaczego ma to znaczenie przy DDoS?
Dedykowany serwer Palworld mieści najwyżej 32 graczy, ustawianych przez ServerPlayerMaxNum z dopuszczalnym zakresem od 1 do 32. Przy hostowaniu z menu gry jest ich czterech. Z tej małej liczby wynika tani atak: wyczerpanie slotów. Kto zestawi 32 jednoczesne połączenia, zamyka drzwi całej społeczności, nie kupując ani jednego gigabita przepustowości. Palworld nie ma wbudowanej whitelisty, dlatego ustawione ServerPassword jest przeciw temu najskuteczniejszym pojedynczym środkiem.
Jak zabezpieczyć RCON i REST-API mojego serwera Palworld?
Tak, żeby obu portów w ogóle nie stawiać w internecie. REST-API na 8212 TCP używa HTTP Basic Auth ze stałym użytkownikiem admin i wartością z AdminPassword, i to przez nieszyfrowany HTTP: hasło idzie przy każdym zapytaniu przez łącze w odwracalnej postaci. RCON na 25575 TCP jest równie nieszyfrowany i oznaczony przez Pocketpair jako przestarzały. Dostawaj się do interfejsu przez przekierowanie portu po SSH na 127.0.0.1 i nigdy nie zostawiaj AdminPassword pustego.
Czy pomoże szybka zmiana adresu IP?
Tylko na krótko. W Palworldzie gracze sami wpisują adres IP i port w polu połączenia bezpośredniego, więc adres zna każdy, kto kiedykolwiek był połączony. Do tego dochodzą boty Discord ze statusem, które publikują go na nowo, oraz stare rekordy A w DNS wskazujące na poprzedni adres. Atakujący odnajduje nowy adres zwykle w ciągu minut albo godzin. Zmiana adresu daje trochę czasu, ale nie rozwiązuje problemu.
Czy mogę bronić się przed atakiem DDoS za pomocą iptables albo UFW?
Przed małymi atakami i niechlujnymi botami tak, przed atakami wolumetrycznymi nie. Reguła firewalla na serwerze decyduje o pakietach, które już przeszły przez twoje łącze. Gdy łącze jest wysycone, pakiety twoich graczy nie przechodzą już wcześniej, całkiem niezależnie od tego, jak dobry jest twój zestaw reguł. Reguły lokalne pozostają mimo to sensowne: wyłapują powodzie zapytań na 27015 UDP, floody pakietów z niewielu źródeł na 8211 UDP oraz próby przejęcia na portach administracyjnych.
Od jakiej skali ataku serwer Palworld nie poradzi sobie już sam?
Typowy serwer gier wisi na 1 Gbit/s, co odpowiada 125 megabajtom na sekundę. Ataki na projekty serwerów gier mieszczą się zwykle między 5 a 50 Gbit/s. Równie ważna jest liczba pakietów: w 1 Gbit/s mieści się przy pakietach po 64 bajty około 1,49 miliona pakietów na sekundę, a zwykły kernel serwera przetworzy tylko kilkaset tysięcy. W Palworldzie dochodzi do tego, że 32 gracze obciążają jedynie ułamek takiego łącza: atak wcale nie musi być duży, żeby osiągnąć wielokrotność normalnej pracy.
Czy mój serwer Palworld w KernelHoście przechodzi w offline podczas ataku?
Nie. Null-routing nie jest stosowany, twój adres IP zostaje w sieci, a odrzucane są wyłącznie szkodliwe pakiety. Ochrona jest dwuwarstwowa: 17 Tbps pojemności mitygacji w globalnej sieci scrubbing oraz dodatkowo filtrowanie Arbor w czasie rzeczywistym o wydajności 3,2 Tbps we Frankfurcie nad Menem. Działa nieprzerwanie i nie musi dopiero reagować na atak, nie ma więc kilku minut na starcie, w których serwer znika. Palworld należy do gier z własnym profilem ochrony.
Czy ochrona DDoS dla Palworlda kosztuje w KernelHoście dodatkowo?
Nie. Dwuwarstwowa stała ochrona jest zawarta w każdym pakiecie serwerowym bez dopłat i działa od momentu udostępnienia. Nie musisz jej ani zamawiać, ani włączać, ani konfigurować, i nie ma dopłaty za serwer gier. Dla większości serwerów Palworld ta stała ochrona wystarcza w pełni razem z czystą konfiguracją, czyli z zamkniętymi portami administracyjnymi, ograniczonym portem zapytań i ustawionym hasłem serwera.
Kiedy potrzebuję do Palworlda dodatkowo Advanced DDoS Protection?
Wtedy, gdy twój serwer jest atakowany nie okazjonalnie, tylko celowo i przez wiele tygodni, a ty chcesz sam sterować filtrowaniem. Dostajesz dedykowany chroniony adres IP i samodzielnie zarządzasz regułami ochrony na port i protokół w panelu klienta, czyli 8211 UDP osobno od 27015 UDP. Zmiany działają w czasie rzeczywistym, możesz więc korygować ustawienia w trakcie trwającego ataku. Cena zaczyna się od 50,00 € miesięcznie, w modelu PrePaid, bez minimalnego okresu umowy i bez opłaty aktywacyjnej. Warunkiem jest serwer w KernelHoście.

Palworld Ochrona DDoS Palworld Ochrona serwera gier Port 8211 Port 27015 Zapytanie Steam Wyczerpanie slotów Advanced DDoS Protection