Ochrona serwera

Od HLDS.pl
Skocz do: nawigacji, wyszukiwania

Spis treści

Opis

Ochrona serwera przed różnymi atakami i nadużyciami. Można wyróżnić kilka typów:

  • spam w grze przez graczy
    • tekstowy - do tego istnieje kilka pluginów, warto się rozejrzeć
    • głosowy - tutaj przydaje się obecność admina który potrafi słyszeć wszystkich
  • DOS (denial of service) i DDOS (disturbed denial of service czyli kilka komputerów atakuje jedną maszynę)
    • najczęściej flood na rcon

Ochrona może być wprowadzona na różnych poziomach:

  • pluginu gry
  • konfigu w grze
  • konfiguracji serwera na poziomie sytsemu operacyjnego

Oczywiście wszystko zależy od tego jaki mamy dostęp do maszyny oraz zdolności administracyjnych.

Ogolne praktyki bezpieczeństwa

  • Nie rozpowszechniać haseł, zastanów się trzy razy jak ktoś pyta się o hasło.
  • Patrz w jaki sposób podajesz hasło, najlepiej aby nikt inny nie widział ;)
  • Nie dawać rcon'a nikomu, jedynie bardzo zaufanym osobom.
  • absolutnie nie dawać dostępu do paneli administracyjnych serwerami w firmach hostujących gry.
  • Każdy admin powinen mieć własne kontoi hasło jeśli w ogóle mają mieć dostęp.
  • Zmieniać rcon co dodanie/usunięcie admina.
  • Regularnie skanuj komputer co jakiś czas na wypadek wirusów / trojanów i keyloggerów.

Config

Najprosztszą metodą jest ustawienie zmiennych w konfigu serwea:

sv_rcon_banpenalty 5 --- Number of minutes that a player can be banned 1 - 60 max
sv_rcon_maxfailures 10 --- Number of times a player can retry to enter a password 1 - 20 max before being banned.
sv_rcon_minfailures 5 --- Number of times a player can retry to enter a password 1 - 20 max before being banned.
sv_rcon_minfailuretime 30 --- Number of seconds that a player has to wait until entering a password again 1 second - 60 minutes max.

Pluginy

  • Uwaga, część z nich może być już niedostępna, ew istnieją lepsze metody ochrony.
  • Należy wystrzegać się przed ładowaniem zbyt dużej ilości pluginów, bo wpływa to na stabilność serwera, szczególnie jeśli robia to samo.

Różne

Sourcemod

Eventscripts=

  • Miauw Mzx's Anti-Exploits - blokwanie exploitow
  • [1] - blokowanie przed nie podłączonymi graczami, rconem i channel overflow
  • Exploit Coverup - blokowanie przed komendami crashujacymi serwer.
  • IronWall - whatever ;D
  • Rcon LOCK - Locks players from unloading the plugin and stops players changing your rcon password.
  • Block crash -- ochrona przed reliable channel overflow exploit.
  • Anti-cheat - unconnected exploit i sv_cheat 1
  • ServSecurity - skrypt zapobiegający crash'om

Firewall

Ochrona na innym poziomie, dzięki temu twój serwer gry nawet nie będzie świadom ataku ;) zakładamy, że eth0 to interfejs sieciowy na którym mamy ip danego serwera gry.

# Create chain reject on udp 28 flood
iptables -N REJECT_FLOOD28
iptables -A REJECT_FLOOD28 -j LOG --log-prefix 'IPTABLES-FLOOD LENGTH 28: ' --log-level info
iptables -A REJECT_FLOOD28 -j DROP

# Drope the udp packets of given length
iptables -A INPUT -i eth0 -p udp --dport 27015 -m length --length 28 -j REJECT_FLOOD28
iptables -A INPUT -i eth0 -p udp --dport 27025 -m length --length 28 -j REJECT_FLOOD28
iptables -A INPUT -i eth0 -p udp --dport 27050 -m length --length 28 -j REJECT_FLOOD28
iptables -A INPUT -i eth0 -p udp --dport 28000 -m length --length 28 -j REJECT_FLOOD28
iptables -A INPUT -i eth0 -p udp --dport 29000 -m length --length 28 -j REJECT_FLOOD28


# Create chain reject on udp 28 flood
iptables -N REJECT_FLOOD46
iptables -A REJECT_FLOOD46 -j LOG --log-prefix 'IPTABLES-FLOOD LENGTH 46: ' --log-level info
iptables -A REJECT_FLOOD46 -j DROP

# Drope the udp packets of given length
iptables -A INPUT -i eth0 -p udp --dport 27015 -m length --length 46 -j REJECT_FLOOD46
iptables -A INPUT -i eth0 -p udp --dport 27025 -m length --length 46 -j REJECT_FLOOD46
iptables -A INPUT -i eth0 -p udp --dport 27050 -m length --length 46 -j REJECT_FLOOD46
iptables -A INPUT -i eth0 -p udp --dport 28000 -m length --length 46 -j REJECT_FLOOD46
iptables -A INPUT -i eth0 -p udp --dport 29000 -m length --length 46 -j REJECT_FLOOD46

Fail2ban

Powyższy kod można bardzo wygodnie wykorzystać używając pakietu Fail2Ban. Przykład instalki na Debianie. Warto jednak wcześniej zaznajomić się z manualem fail2ban.

  • instalacja pakietu
apt-get install fail2ban
  • stworzenie nowego configa dla ddos gry
nano /etc/fail2ban/filter.d/game-ddos.conf
  • dodajemy tam poniższy kod:
[Definition]
failregex= IPTABLES-FLOOD LENGTH (28|48): IN=eth0 OUT= MAC=[a-zA-F0-9:]+ SRC=<HOST> DST=([0-9]{1,3}\.?){4} LEN=28
  • rozszerzamy wpis w jail.conf
nano /etc/fail2ban/jail.conf
[game-ddos]
enabled = true
port      = 27015,27025,27050,28000,29000
protocol = udp
filter = game-ddos
logpath = /var/log/messages.log
maxretry = 3
bantime = 6000
  • następnie restart fail2ban
/etc/init.d/fail2ban stop
/etc/init.d/fail2ban start
  • a potem od czasu do czasu patrzymy na /var/log/fail2ban.log
Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia