Ataki botow na serwer Minecraft: jak rozpoznac i zatrzymac
DDoS i ataki botow to nie to samo
Gdy serwer zaczyna lagowac albo padac, pierwsza mysl to "ddosuja nas". Ale w rzeczywistosci wiekszosc atakow na serwery Minecraft to wlasnie ataki botow, a nie klasyczny DDoS. Zrozumienie roznicy jest krytyczne, bo metody ochrony sa zupelnie inne.
DDoS (L3/L4) to sytuacja, gdy na twoj serwer leje sie smieciowy ruch na poziomie sieci. UDP flood, SYN flood, amplification. Cel to zapchanie lacza albo wyczerpanie zasobow serwera tak, zeby legalne pakiety po prostu nie dochodzily. Przeciwko temu pluginy sa bezsilne, tu potrzebna jest filtracja na poziomie sieci.
Atak botow (L7) to sytuacja, gdy do twojego serwera laczy sie setki albo tysiace falszywych graczy. Przechodza przez zwykly protokol Minecraft, wysylaja prawidlowe pakiety. Z punktu widzenia sieci wszystko wyglada legalnie. Obciazenie spada na sam serwer - CPU, RAM, obsluga polaczen.
Czesto oba typy sa laczone. Najpierw botami obciazaja serwer, potem dobija go DDoS, gdy admin walczy z botami.
Typy atakow botow, z ktorymi sie spotkasz
Join flood (masowe polaczenia)
Najczestszy typ. Boty po prostu lacza sie z serwerem jeden za drugim. Nie pisza na czacie, nie ruszaja sie, po prostu wchodza. Jesli masz autoryzacje przez plugin typu AuthMe, wisza na spawnie i jedza sloty.
W logach wyglada to tak:
[09:14:01] [Server thread/INFO]: Bot_a83kd[/185.22.xx.xx:49312] logged in
[09:14:01] [Server thread/INFO]: Bot_k2md9[/185.22.xx.xx:49313] logged in
[09:14:01] [Server thread/INFO]: Bot_pq92x[/185.22.xx.xx:49314] logged in
[09:14:02] [Server thread/INFO]: Bot_zm10v[/103.41.xx.xx:52001] logged in
Charakterystyczne cechy: polaczenia z jednej podsieci (ale nie zawsze), losowe nicki, kilka polaczen na sekunde, te same wersje klienta.
Null/Invalid boty
Te nawet nie probuja normalnie wejsc. Wysylaja niepoprawne albo niekompletne pakiety uscisku. Cel to obciazyc handler polaczen. Serwer marnuje zasoby na utworzenie sesji, a bot od razu sie rozlacza albo wisi.
W logach widac:
[09:14:01] [Server thread/WARN]: Failed to handle packet for /185.22.xx.xx:49312
[09:14:01] [Server thread/INFO]: com.mojang.authlib.GameProfile@xxxx lost connection: Disconnected
Duzo "utraconych polaczen" bez normalnego loginu to pewny znak null-botow.
Chat spam / Command spam
Boty wchodza i zaczynaja spamowac na czacie albo wykonywac komendy. Moze to byc zwykly smiec na czacie, a moze byc to proba przeczesywania komend (/op, /give, /stop) w nadziei na zle skonfigurowane uprawnienia.
[09:14:05] [Async Chat Thread/INFO]: <Bot_a83kd> Buy cheap ranks at scamsite.com
[09:14:05] [Async Chat Thread/INFO]: <Bot_k2md9> Buy cheap ranks at scamsite.com
[09:14:06] [Server thread/INFO]: Bot_pq92x issued server command: /op Bot_pq92x
Crash exploity
Najbardziej niebezpieczny typ. Boty lacza sie i wysylaja specjalnie uformowane pakiety, ktore eksploatuja bugi w konkretnych wersjach serwerow. Np. ksiazki z ogromnym NBT, niepoprawne dane inwentarza, pakiety ruchu z koordynatami NaN.
Charakterystyczne: laczy sie 1-2 boty i serwer od razu pada. Nie setki, a dosownie para. Jesli po banie podsieci serwer i tak crashuje od pojedynczych wejsc - najprawdopodobniej to crash exploit.
BungeeCord/Velocity exploity
Osobna kategoria, specyficzna dla serwerow z proxy. Jesli masz BungeeCord albo Velocity, sa dwa glowne wektory ataku:
IPForward spoofing. Jesli serwery backend przyjmuja polaczenia bezposrednio (nie tylko od proxy), atakujacy moze podrabiac adres IP przez protokol Bungee. W configach serwera backend bungeecord: true, ale port otwarty na zewnatrz. Bot laczy sie bezposrednio z backendem i przedstawia jako ktokolwiek.
Handshake spoofing. Boty wysylaja zmodyfikowane pakiety uscisku z podrobionymi danymi, ktore proxy przekazuje do backendu. Pozwala omijac niektore sprawdzenia pluginow.
W logach proxy:
[WARNING] [/185.22.xx.xx:0] <-> InitialHandler - could not decode packet
[WARNING] [/185.22.xx.xx:0] <-> ServerConnector - connection throttled
Jak pewnie stwierdzic, ze to boty
Kilka testow, ktore warto zrobic:
1. Patrzymy na liczbe polaczen na minute. Normalny serwer z 50 graczami dostaje moze 5-10 polaczen na minute. Jesli widzisz 50+ na minute - cos jest nie tak.
2. Analizujemy adresy IP. Boty czesto ida z jednej podsieci albo z datacenters. Normalni gracze ida z rezydenckich IP (domowych providerow). Jesli widzisz OVH, Hetzner, DigitalOcean w whois - to na pewno nie zwykli gracze.
3. Sprawdzamy zachowanie po wejsciu. Prawdziwy gracz rusza mysza, przemieszcza sie, otwiera czat. Boty zwykle stoja w miejscu albo wykonuja jedno i to samo dzialanie.
4. Wersje klientow. Jesli 200 "graczy" wchodzi z ta sama wersja i tymi samymi modami (albo bez modow) w 5 minut - to boty.
5. Obciazenie CPU bez powodu. TPS spada, CPU na 100%, chociaz online niby niewielki. To moze byc join flood, gdzie boty nie nadaza w pelni wejsc, ale obsluga kazdego polaczenia zre zasoby.
Dlaczego pluginy antybot nie rozwiazuja problemu calkowicie
Powiedzmy uczciwie. Pluginy typu BotSentry, AntiBot, EpicGuard - pomagaja. Ale maja fundamentalne ograniczenie.
Plugin dziala wewnatrz serwera Minecraft. Bot juz sie polaczyl, juz przeszedl TCP handshake, juz wyslal pakiet login. I dopiero potem plugin decyduje - bot czy nie. Przy 5000 botow na minute serwer po prostu nie nadaza obslugiwac polaczen, nawet jesli kazde jest odrzucane po 100ms.
To jak wyrzucacz w klubie stojacy wewnatrz sali. Moze wygnac chuligana, ale jesli 500 osob rownoczesnie dobija sie do drzwi, sala i tak bedzie zapchana.
Co pluginy robia dobrze:
- Filtruja wolny strumien botow (10-50 na minute)
- Blokuja spam na czacie
- Lapia powtorne wejscia po banie
Czego nie ogarniaja:
- Masowy join flood (setki na sekunde)
- Null-botow lamiacych handshake
- Botow z rezydenckich proxy (wygladaja jak zwykli gracze)
- Dowolnej kombinacji ataku botow z DDoS
Co naprawde dziala: praktyczne rozwiazania
Srodek awaryjny - whitelist
Jesli atakuja cie teraz i serwer ledwo oddycha, najprostsze:
/whitelist on
To zatrzyma strumien botow. Tak, nowi gracze nie wejda, ale chociaz obecni beda mogli grac. Uzyj tego jako tymczasowego srodka, dopoki konfigurujesz normalna ochrone.
Connection throttling
Na poziomie OS mozna ograniczyc liczbe polaczen z jednego IP:
iptables -A INPUT -p tcp --dport 25565 -m connlimit --connlimit-above 3 -j DROP
iptables -A INPUT -p tcp --dport 25565 -m recent --set --name mc
iptables -A INPUT -p tcp --dport 25565 -m recent --update --seconds 10 --hitcount 8 --name mc -j DROP
Pierwsza regula - nie wiecej niz 3 rownoczesne polaczenia z jednego IP. Druga - nie wiecej niz 8 polaczen w 10 sekund. Dla zwyklych graczy to niezauwazalne, a glupie boty z jednego IP beda ciete.
Problem: powazne ataki ida z tysiecy roznych IP. Tu to nie pomoze.
Weryfikacja przez captcha
System, ktory nie wpuszcza gracza na glowny serwer, dopoki nie udowodni, ze jest czlowiekiem. Zwykle realizowane przez posredni serwer (limbo), gdzie gracz musi wykonac proste dzialanie - wpisac kod, nacisnac okreslone bloki, rozwiazac zagadke wizualna.
Boty tego nie potrafia (na razie). To najpewniejszy sposob odciecia botow L7. W MineGuard np. captcha dziala na poziomie proxy - bot nawet nie dociera do twojego glownego serwera, cala weryfikacja przechodzi przed proxowaniem.
Filtracja na poziomie protokolu
Najskuteczniejsze podejscie to analiza pakietow Minecraft zanim polaczenie trafi na twoj serwer. Sprawdzenie poprawnosci handshake, walidacja protokolu, predkosc wysylania pakietow.
Null-boty odrzucane sa natychmiast, bo ich pakiety sa niepoprawne. Join flood maleje, bo podejrzane polaczenia sa dropowane zanim dotra do twojego procesu Javy.
Ochrona BungeeCord/Velocity
Jesli masz siec serwerow z proxy:
1. Zamknij bezposrednie polaczenia do backendow. Tylko proxy powinno miec dostep do portow serwerow backend. Przez iptables albo firewall pozwol na polaczenia do portow backend tylko z IP proxy.
iptables -A INPUT -p tcp --dport 25566:25570 -s PROXY_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 25566:25570 -j DROP
2. Uzywaj modern forwarding w Velocity zamiast legacy BungeeCord forwarding. W velocity.toml:
player-info-forwarding-mode = "modern"
Uzywa podpisu HMAC, ktorego nie da sie podrobic.
3. Wlacz connection throttle na proxy. W BungeeCord config.yml:
connection_throttle: 4000
connection_throttle_limit: 3
Jak wyglada prawdziwy atak botow w logach
Realny przyklad tego, co zobaczysz przy powaznym flood botow (nicki i IP zmienione):
[12:31:44] [Server thread/INFO]: UUID of player mK82nd is 0930aef1-...
[12:31:44] [Server thread/INFO]: UUID of player xP93kl is 1820bef2-...
[12:31:44] [Server thread/INFO]: UUID of player rT02mx is 2710cef3-...
[12:31:44] [Server thread/INFO]: mK82nd[/103.28.xx.xx:42901] logged in at ([world]-12.5, 64.0, 203.5)
[12:31:44] [Server thread/INFO]: xP93kl[/103.28.xx.xx:42902] logged in at ([world]-12.5, 64.0, 203.5)
[12:31:44] [Server thread/INFO]: rT02mx[/103.28.xx.xx:42903] logged in at ([world]-12.5, 64.0, 203.5)
[12:31:45] [Server thread/INFO]: UUID of player nB47pq is 3600def4-...
[12:31:45] [Server thread/INFO]: UUID of player vZ61ws is 4490eef5-...
... (powtarza sie setki razy)
[12:31:52] [Server thread/WARN]: Can't keep up! Is the server overloaded?
Zwroc uwage: ta sama podsiec (103.28.x.x), login w ten sam punkt, "Can't keep up" po 8 sekundach. Klasyczny obraz.
A oto null-boty:
[12:31:44] [Netty Server IO #312/WARN]: Failed to handle packet
[12:31:44] [Netty Server IO #313/WARN]: Failed to handle packet
[12:31:44] [Netty Server IO #314/WARN]: Failed to handle packet
[12:31:44] [Netty Server IO #315/ERROR]: IOException: Connection reset by peer
Setki bledow na sekunde, wszystkie od Netty (silnika sieciowego Minecrafta).
Kiedy wystarcza pluginy, a kiedy potrzebna jest ochrona zewnetrzna
Pluginy wystarcza, jesli:
- Ataki sa rzadkie i slabe (do 50 botow na minute)
- Boty prymitywne - jednego typu, z jednej podsieci
- Masz maly serwer bez konkurencji i wrogow
- Jestes gotowy recznie banowac podsieci
Potrzebna jest ochrona zewnetrzna, jesli:
- Ataki sa regularne albo na zamowienie
- Ataki botow laczone sa z DDoS
- Boty ida z setek roznych IP (rezydenckie proxy)
- Serwer to twoj biznes i downtime kosztuje
- Masz siec BungeeCord/Velocity z kilkoma serwerami
Ochrona zewnetrzna (proxy typu MineGuard, TCPShield, Cosmic Guard) dziala inaczej - ruch przechodzi przez filtrujacy serwer zanim trafi do ciebie. To znaczy, ze i L3/L4 DDoS, i L7 boty obslugiwane sa juz po drodze.
Checklista: szybka konfiguracja podstawowej ochrony
Jesli jeszcze cie nie atakowano, ale chcesz sie przygotowac:
- Zaktualizuj serwer do najnowszej wersji (zamyka crash exploity)
- Postaw plugin antybot (EpicGuard, BotSentry) jako filtr bazowy
- Skonfiguruj connection throttle w server.properties:
connection-throttle=4000 - Zamknij zbedne porty przez firewall
- Jesli Bungee/Velocity - zamknij bezposredni dostep do backendow
- Skonfiguruj alerty na anomalny online (zeby dowiedziec sie o ataku szybko)
- Rob regularne backupy (crash exploity moga uszkodzic swiat)
- Pomysl o ochronie zewnetrznej, jesli serwer publiczny i duzy
Ataki botow to nie pytanie "czy", a "kiedy". Kazdy publiczny serwer Minecraft predzej czy pozniej sie z nimi zmierzy. Lepiej sie przygotowac zawczasu niz w panice guglowac rozwiazania, gdy gracze pisza "serwer laguje".
Chroń swój serwer przed atakami DDoS
Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.
Wypróbuj za darmoPowiązane artykuły
Dlaczego darmowa ochrona DDoS nie wystarcza dla rozwijającego się serwera
Darmowy plan sprawdza się świetnie na start. Ale gdy serwer rośnie, ataki stają się mocniejsze, a darmowego transferu i funkcji zaczyna brakować. Rozkminiamy, kiedy pora przejść na płatny plan.
Pixelmon SMP serwer: pelny przewodnik po Pokemonach w Minecraft
Jak postawic serwer Pixelmon Reforged od zera: Forge 1.16.5, mody, config, sale, PvP i fix anticheata dla latajacych pokemonow.
DecentHolograms vs Holographic Displays: który plugin hologramów wybrać w 2026
Holographic Displays był standardem przez dekadę, potem padł na 1.20+ przez zależność od ProtocolLib. DecentHolograms działa bez niego i jest obecnie domyślnym wyborem. Porównujemy funkcje, migrację i prawdziwe configi.