Atak na serwer minecraft - jak się uchronić?

Zombie
minecraft, zarządzanie, zabezpieczenia
aggankx
aggankx

Od 24h zmagam się z potężnym i ciągłym atakiem [z przerwami] (spam połączeniami z nonpremium: https://oshawott.pl/ss/d8bc.png), który powoduje wzrost zużycia procesora i transferu na VPS do maksimum i wyłącza serwer. Potrzebuję pomocy. SystemZ doradził, że "najłatwiej wyciąć dalekie kraje w iptables i ustawić jakiś rate limiting w mc", ale z racji mojego żadnego doświadczenia w zabezpieczaniu serwera w ten sposób - nie wiem jak się za to zabrać. Czytałem różne tutoriale od iptables ale nic z nich nie rozumiem, a fraza iptables na forum przekierowuje wyłącznie do jakichś problemów...

DBanaszewski
DBanaszewski α-tester v3

Postawienie serwera za Bungee powinno pomóc. Wtedy jedynie, co mogłoby padać "jak mucha" to serwer lobby, a główny serwer działałby normalnie.

aggankx
aggankx

Takie rozwiązanie nie rozwiązuje problemu

DBanaszewski
DBanaszewski α-tester v3

Inaczej tego nie rozwiążesz, nie pojedziesz do tego niemiłego Pana co robi atak i nie powiesz mu: stop!.

Możesz również spróbować zrobić rate-limiting na serwer, ale nie musi to działać.

Na razie tylko widzę to prowizoryczne rozwiązanie z Bungee. Wtedy, serwer stoi t.j. za proxy, co czyni go nieruszalnym z sieci WAN (po zabezpieczeniach przez m.in. iptables).

JanekJaran
JanekJaran

Jeśli korzystasz z AuthMe możesz w pliku konfiguracyjnym pluginu - config.yml w folderze /plugins/Authme odnaleźć pozycję enableProtection: false, zmienić wartość na true, a następnie parę linijek niżej wyedytować listę dozwolonych krajów. Szukaj koło 350 linijki, albo po prostu za pomocą funkcji szukania w edytorze tekstu.

aggankx
aggankx

tak tylko jak już podkreślałem: ani iptables ani rate-limiting nie jest skonfigurowany bo nie wiem jak to zrobić 😕

// To serwer premium więc nie ma AuthMe

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

DBanaszewski:

Na razie tylko widzę to prowizoryczne rozwiązanie z Bungee. Wtedy, serwer stoi t.j. za proxy, co czyni go nieruszalnym z sieci WAN (po zabezpieczeniach przez m.in. iptables).

Co? Co ci po tym, że instancja serwera "za proxy" będzie nadal uruchomiona, jak i tak bungee dropnie połączenia od wysycenia sieci lub podobnych problemów? Nie mowie już o tym, że wystarczy, że będą boty się pakować na lobby i jeśli będzie w stanie wejść ich odpowiednia ilość, to nadal wpłynie to negatywnie na rozgrywkę na innych instalacjach na tym samym VPS oraz uniemożliwi wchodzenie nowych graczy, co jest niewiele mniej gorsze niż obecna sytuacja.

Jeśli chodzi o "po zabezpieczeniach przez iptables", to poprawnie dropnięte kraje na takim poziomie już by wystarczyły, więc bungee jest zbędne, także nie widzę w ogóle wtedy potrzeby. Niemniej takie rozwiązanie jest o tyle niefajne, że nie daje łatwo dostępnej informacji dla potencjalnych prawdziwych graczy, jak i administratora, który niekoniecznie ma ochotę logować dane z iptables i przeglądać logi systemowe.

Posługujesz się magicznymi hasłami jak WAN, proxy, bungee, ale to nie czyni twojej rady poprawną. Faktycznie bungee może pomóc, ale nie w ten sposób. Rozwiązaniem jest odrzucanie połączeń przy wchodzeniu na poziomie bungeecord, bazując na, chociażby liście krajów. Zakładając, że boty przy przerywaniu im połączeń nie będą w stanie wysycić łącza (co przy odrzucaniu ich przed wejściem na serwer i rozpoczęciem wysyłania pakietów z chunkami mapy jest dużo trudniejsze), a VPS ma odpowiednią ilość mocy, żeby to ogarnąć (potrzeba znacznie mniejszą niż w przypadku próby przyjęcia wszystkiego "na klatę" na serwer lobby do środka), to będzie dobrze.

Wtyczka do whitelistowania/blacklistowania krajów, pierwszy wynik ze spigotmc: https://www.spigotmc.org/resources/bungeecountrymanager.12961/

Lempik
Lempik

VPNGuard - odrzuca połączenia z proxy i VPN, pierwsze 500 unikalnych adresów IP w miesiącu jest darmowych. https://www.spigotmc.org/resources/vpnguard.6246/ Edit: Choć w jednym miejscu przekroczyłem limit 500 nowych adresów IP, więc plugin już nie sprawdzał nowych adresów, to i tak zabronił komuś ze znanego adresu VPN zalogować się. Nie wiem w sumie, jak ten plugin działa.

Lempik
Lempik

aggankx:

To serwer premium więc nie ma AuthMe

Authme nie można stosować na serwerze premium? Jak zabezpieczyć konto na serwerze premium przed rodzeństwem?

Kamil02167
Kamil02167

Nie dawać mu hasła do premki :thonking: Na np. hypixelu też nie masz authme.

aggankx
aggankx

Płacenie 5$ na miesiąc to nie to, czego szukam. Wiem że da się to zrobić lepiej i taniej

Lempik
Lempik

Przeczytaj jeszcze raz, że pierwsze 500 sprawdzeń w każdym miesiącu jest darmowych. Potem po prostu przestaje sprawdzać, ale nie trzeba nic płacić.

aggankx
aggankx

Hura! Serwer podziała 15 sekund dłużej! Faktycznie, warto...

Lempik
Lempik

Najpierw sprawdź (za to przecież nic nie dasz), potem ironizuj. W dodatku możesz jeszcze tymczasowo (np. na godzinę) włączyć whitelist: /whitelist on, wtedy mogą zalogować się tylko użytkownicy, których umieścisz na whiteliście. Wyłączyć możesz /whitelist off (mogą znowu logować się wszyscy).

aggankx
aggankx

FYI - whitelist nic nie daje, te boty są nonprem więc i tak na premke nie wchodzą. Serwer obciąża i wyłącza sam fakt takiej ilości prób łączenia

SystemZ
SystemZ Admin lvlup.pro

Im szybciej wytniesz niepożądany ruch tym taniej.

  • Na poziomie operatora sieci nie ma co na to liczyć, zbyt trudno rozróżnić czy ruch jest pożądany.
  • Od naszej strony czyli dostawcy VPSa wygląda to już łatwiej ale jeszcze nie podejmiemy się stworzenia takiego systemu.
  • na VPS z poziomu systemu jest to w miarę łatwo zrobić, kernel szybko radzi sobie z ruchem
  • w aplikacji (serwerze MC) jest to zrobić najłatwiej ale trzeba brać pod uwagę że zużyje to najwięcej zasobów gdyż wymaga więcej CPU, łatwo napotkać też na wąskie gardła, serwery MC bazowane na vanilla raczej nie są zbyt wydajne

Wycięcie ruchu w systemie czyli firewall np. iptables będzie najtańsze pod względem zasobów, powinno też być najskuteczniejsze gdyż niepożądany ruch nawet nie dotknie serwera MC.

Można przerobić trochę mój skrypt np. dołożyć pętle z listą krajów, wrzucić w autostart i powinno być ok: https://gist.github.com/SystemZ/0d599505069b5a01f227 Gdyby stworzyć na tej bazie usługę systemd to miałoby mój głos jako porządne rozwiązanie. Jeśli ktoś chciałby abym przygotował coś takiego i wrzucił na forum dajcie znać w tickecie, byłby to koszt 2h mojego czasu czyli ~100 PLN

Alternatywnie jest jeszcze inny bardziej gotowy skrypt ale nie sprawdzałem https://lvlup.rok.ovh/t/jak-zablokowac-inne-kraje-na-vps/290

Lumpiasty
Lumpiasty Stały bywalec

Temat ten mnie zainspirował do zmarnowania zainwestowania swojego czasu w napisanie poradnika, którego udostępniam wam za darmo. :kappa:

SystemZ:

koszt 2h mojego czasu czyli ~100 PLN

https://lvlup.rok.ovh/t/china-banhammer-czyli-blokada-chinskich-botow-na-podstawie-skryptu-systemz/12578/#2

< :kappa: > Ktoś tu za szybko moim zdaniem przeszedł do pisania o pieniądzach. Chyba musimy zorganizować zrzutkę na 15 600 zł

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.