Mój serwer Minecraft jest pod DDoS: co robić teraz

Mój serwer Minecraft jest pod DDoS: co robić teraz

Bez paniki. Ogarnijmy to.

Jeśli to czytasz, to prawdopodobnie twój serwer właśnie leży, gracze piszą na Discordzie "co to za lagi", a ty gorączkowo googlujesz. Znajoma sytuacja, przez to przeszedł każdy właściciel w miarę popularnego serwera.

Atak DDoS na serwer Minecraft to nie koniec świata. W większości przypadków ataki kończą się po 10-30 minutach, jeśli atakujący widzi, że nie reagujesz i nie płacisz. Najważniejsze - nie robić głupot teraz.

Krok 1: Upewnij się, że to naprawdę DDoS

Zanim zaczniesz bić na alarm, sprawdź kilka rzeczy. Nie każdy lag to atak.

Znaki ataku DDoS:

  • Serwer całkowicie niedostępny (nie pinguje się, nie łączy)
  • TPS w normie, ale gracze nie mogą wejść
  • W konsoli setki połączeń z różnych IP w sekundy
  • Hosting/VPS provider wysłał powiadomienie o anormalnym ruchu
  • netstat -an | wc -l pokazuje tysiące połączeń

To prawdopodobnie NIE DDoS:

  • Lagi tylko u niektórych graczy (problem routingu)
  • TPS spada do 5-10 (ciężkie pluginy albo świat)
  • Serwer działa, ale się szarpie (brak RAM albo CPU)
  • Wszystko padło po instalacji nowego pluginu

Jeśli masz tylko lagi, a nie DDoS - sprawdź timings, zużycie pamięci i obciążenie CPU. Nie trzeba szukać ataku tam, gdzie go nie ma.

Krok 2: Szybkie środki tymczasowe

Jeśli jesteś pewien, że to DDoS, oto co można zrobić teraz. To nie rozwiąże problemu, ale może dać ci chwilę wytchnienia.

Włącz whitelist. Najprostszy sposób odciąć boty - włączyć whitelist na czas ataku. Tak, nowi gracze nie wejdą, ale przynajmniej obecni będą grać.

/whitelist on

Ogranicz rate-limit na poziomie iptables. Jeśli masz VPS albo dedyk, można ograniczyć liczbę nowych połączeń:

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 60 --hitcount 10 --name mc -j DROP

Nie zmieniaj portu. Częsta rada z forów z 2015 roku - "po prostu zmień port". To nie działa. Atakujący znajdzie nowy port w minutę przez skaner. Tylko stracisz graczy, którzy nie dowiedzą się o zmianie portu.

Nie restartuj serwera co 30 sekund. Serio. Każdy restart to nowe logi, utrata danych, zamieszanie. Raz zrestartowałeś, poczekałeś 5 minut, patrzysz na wynik.

Krok 3: Normalna ochrona

Tymczasowe kule nie uratują przed poważnym atakiem. Jeśli dostajesz DDoS regularnie, trzeba rozwiązać problem normalnie.

Reverse proxy. Zasada prosta - gracze łączą się nie bezpośrednio z twoim serwerem, tylko z serwerem pośrednim, który filtruje ruch i przepuszcza tylko legalne pakiety. Atakujący widzi tylko IP proxy, a nie twoje prawdziwe IP.

Są dwie drogi:

  1. Postawić samemu. Można skonfigurować własne proxy na osobnym VPS. Ale trzeba rozkminić filtrowanie, pisać reguły, pilnować aktualizacji ataków. Do ataków L7 (application layer) na Minecrafta potrzebne jest specyficzne filtrowanie protokołu - prosty nginx tu nie pomoże.

  2. Użyć gotowego serwisu. Specjalistyczne serwisy takie jak MineGuard już wiedzą, jak wygląda normalny ruch Minecrafta i jak wygląda atak. Filtry są aktualizowane, wspierane nowe wersje protokołu, i nie musisz być inżynierem sieciowym.

Cokolwiek wybierzesz, kluczowa rzecz - ukryć prawdziwe IP serwera. Jeśli atakujący zna twój prawdziwy IP, żadne proxy nie pomoże, bo po prostu je ominie.

Krok 4: Chowamy prawdziwe IP

To chyba najważniejszy krok, i najczęściej robią go źle.

Co trzeba zrobić:

  1. Używaj domeny, nie IP. Gracze powinni łączyć się przez play.myserver.com, a nie przez 123.45.67.89. Rekord SRV w DNS wskaże na chronione IP proxy.

  2. Skonfiguruj DNS poprawnie. Rekord A domeny powinien wskazywać na IP proxy, nie na prawdziwy serwer. Rekord SRV _minecraft._tcp.play.myserver.com wskazuje port.

  3. Sprawdź wycieki IP. Nawet jeśli skonfigurowałeś proxy, IP może wyciekać przez:

    • Stare rekordy DNS (sprawdź historię przez SecurityTrails albo analogi)
    • Odpowiedzi query od pluginów, które pokazują IP w MOTD
    • Panel zarządzania (Pterodactyl, Multicraft), dostępny przez IP
    • Serwer pocztowy na tym samym IP
    • Inne serwisy/strony na tym samym serwerze
  4. Jeśli IP już wyciekło - zmieniaj. Tak, to niewygodne. Ale jeśli atakujący zna twój IP, jedyny sposób - dostać nowe u hostera i skonfigurować wszystko od nowa, tym razem nie świecąc go nigdzie.

Jak sprawdzić, że IP nie wycieka:

# Sprawdzamy, że domena wskazuje na proxy, a nie na prawdziwy serwer
dig +short play.myserver.com

# Sprawdzamy rekord SRV
dig SRV _minecraft._tcp.play.myserver.com

Wynik dig powinien pokazywać IP proxy, a nie twojego serwera.

Krok 5: Po ataku

Atak się skończył, serwer działa. Ale rozluźniać się jeszcze wcześnie.

Sprawdź logi. Zobacz, kiedy zaczął się atak, jaki typ ruchu szedł, z jakich IP. To pomoże zrozumieć, czy to był uczniak ze stresserem na 5 minut, czy coś poważniejszego.

# Patrzymy na połączenia z ostatniej godziny
grep "logged in" logs/latest.log | tail -100

# Jeśli jest dostęp do serwera - patrzymy na logi sieciowe
dmesg | grep -i "drop\|flood\|syn"

Zaktualizuj wszystko. Serio. Jądro serwera, pluginy, Javę. Stare wersje często mają podatności, które ułatwiają atak.

Skonfiguruj monitoring. Postaw alerty na anormalny ruch. Lepiej dowiedzieć się o ataku z powiadomienia w Telegramie niż od wkurzonych graczy na Discordzie.

Pogadaj z hosterem. Jeśli jesteś na shared-hostingu i dostajesz DDoS, hoster może po prostu wyłączyć twój serwer, żeby nie cierpieli inni klienci. Dowiedz się z góry, jaka jest ich polityka przy DDoS. Niektóre hostingi oferują podstawową ochronę, inne po prostu cię wyłączą bez ostrzeżenia.

Typy ataków i jak wyglądają

Nie wszystkie DDoSy są takie same. Zrozumienie typu ataku pomoże wybrać właściwą ochronę.

Ataki L3/L4 (warstwa sieci)

SYN Flood. Najbardziej rozpowszechniony atak. Tysiące podrobionych żądań TCP na nawiązanie połączenia. Serwer próbuje odpowiedzieć każdemu i się zakrztusza.

Znaki: netstat pokazuje tysiące połączeń w stanie SYN_RECV. Serwer całkowicie niedostępny.

UDP Flood. Strumień śmieciowych pakietów UDP zapycha łącze. Szczególnie aktualne dla serwerów z query na UDP (port 25565).

Znaki: ruch przychodzący dziesiątki-setki razy wyższy niż norma. W iftop widać strumień z wielu IP.

Amplification (DNS/NTP/Memcached). Atakujący wysyła małe żądanie na publiczne serwery z podrobionym adresem zwrotnym (twoim IP). Serwery odpowiadają tobie pakietami 50-100 razy większymi niż żądanie.

Znaki: ogromny ruch przychodzący z portów 53 (DNS), 123 (NTP), 11211 (Memcached).

Ataki L7 (warstwa aplikacji)

Bot Join Flood. Setki botów jednocześnie próbują się połączyć z serwerem. Każdy przechodzi handshake, wysyła login, i serwer wydaje zasoby na obsługę.

Znaki: w konsoli setki "... logged in" albo "... lost connection" na sekundę. TPS może spaść, bo serwer obsługuje fejkowe połączenia.

Null/Invalid Packet Attack. Wysyłanie nieprawidłowych pakietów protokołu Minecraft. Źle napisane pluginy mogą crashować od takich pakietów.

Znaki: błędy dekodowania pakietów w logach, crashe pluginów, czasami crash całego serwera.

Slowloris dla Minecrafta. Wolne połączenia, które trzymają połączenia otwarte maksymalnie długo, zajmując wszystkie sloty.

Znaki: serwer pokazuje 0/100 slotów, ale prawdziwych graczy na serwerze nie ma. Wszystkie sloty zajęte przez "martwe" połączenia.

Normalny serwis ochrony filtruje wszystkie te typy automatycznie. MineGuard na przykład analizuje protokół Minecrafta na poziomie pakietów i odcina nieprawidłowy ruch, zanim dotrze do twojego serwera.

Częste błędy podczas ataku

Przez lata pracy z serwerami widziałem wszystko. Oto czego na pewno NIE trzeba robić:

"Zaddoszuję w odwecie." Nie. Po prostu nie. Po pierwsze, to nielegalne. Po drugie, atakujący używa botnetu/stressera, nie ma "własnego serwera", który możesz położyć. Po trzecie, pogorszysz sytuację.

Płacić za zaprzestanie ataku. Jeśli ktoś pisze "zapłać 50$ i przestanę" - nie płać. Zapłacisz - będą prosić więcej. To jak karmienie mewy na plaży: przylecą wszystkie pozostałe.

Publikować IP serwera w otwartych listingach. Monitoringi typu minecraft-server-list.com pokazują IP twojego serwera wszystkim. Jeśli dostajesz DDoS - usuń serwer z takich listingów albo używaj tylko nazwy domeny.

Kupować "anty-DDoS" plugin do Minecrafta. Plugin działa na poziomie aplikacji. Kiedy idzie atak L3/L4, ruch zapycha łącze ZANIM dotrze do Javy. Plugin fizycznie nie może pomóc z atakiem sieciowym. Może pomóc tylko z botami L7, i to częściowo.

Przeprowadzać się na "anty-DDoS hosting" bez rozeznania. Nie wszystkie "anty-DDoS" hostingi są takie same. Wielu po prostu przesprzedaje OVH z ich podstawową ochroną, która dobrze działa dla weba, ale słabo dla Minecrafta. Minecraft to TCP z niestandardowym protokołem, i standardowe filtry webowe sobie z nim nie radzą.

Zmieniać hostera co tydzień. Widziałem kolesi, którzy przeprowadzili się 5 razy w miesiąc. Za każdym razem atakujący znajdował nowy IP w dzień, bo właściciel świecił go na Discordzie albo przez DNS. Problem nie w hosterze, problem w wycieku IP.

Checklist: szybkie działania przy DDoS

Wydrukuj to albo zapisz w zakładkach. Kiedy zacznie się atak, otwierasz i idziesz po punktach.

  • Sprawdzić, czy to naprawdę DDoS, a nie problem z serwerem
  • Włączyć whitelist jeśli atak na L7 (boty)
  • Nie restartować serwera więcej niż raz
  • Napisać do hostera jeśli atak poważny
  • Nie publikować prawdziwego IP nigdzie
  • Po ataku - skonfigurować normalną ochronę przez proxy
  • Zmienić IP jeśli było skompromitowane
  • Skonfigurować DNS przez domenę z rekordem SRV
  • Sprawdzić, że IP nie wycieka przez inne serwisy

Podsumowanie

DDoS na serwer Minecraft to przykre, ale nie fatalne. Większość ataków to uczniaki ze stresserami za 10$ miesięcznie, które odpuszczą po pół godziny. Ale jeśli ataki są regularne i poważne, potrzebna jest normalna ochrona infrastrukturalna.

Trzy główne zasady: nie świeć IP, używaj proxy, nie panikuj. Reszta to szczegóły.

Jeśli chcesz zagłębić się w to, jak działa ochrona serwerów Minecraft, przeczytaj inne artykuły na naszym blogu. A jeśli potrzebujesz ochrony już teraz, MineGuard konfiguruje się w 5 minut - wystarczy ustawić DNS.


Chroń swój serwer przed atakami DDoS

Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.

Wypróbuj za darmo


Powiązane artykuły