Linux iuvat – Spieleserver mit Debian: 2012 in schicken Graphen

Ich denke, es hat sich ausgezahlt Munin und Qstat vergangenes Jahr zu installieren. Hier sind noch ein paar Charts, die die Auslastung der einzelnen Spieleserver über das Jahr repräsentieren. Die Graphen lesen sich so:

Die Y-Achse visualisiert die Anzahl der Spieler bzw. Bots, die zu einem Zeitpunkt X auf dem Server spielen. Die Werte wurden alle 5 Minuten mit QStat ermittelt und dann mit Hilfe von Munin in einen Graph umgewandelt. Es kann durchaus vorgekommen sein, dass 10 Spieler auf dem Server gespielt haben, jedoch diesen in dem Moment verlassen haben als der Wert mit Munin und QStat registriert wurde. Auf das Jahr verteilt sollte diese Unschärfe jedoch kleiner ausgefallen sein.

OpenArena

Mein Favorit. Die Serverkonfiguration machte hier am meisten Spaß und der Server wird rege genutzt. Standardmäßig wird Deathmatch, also „Jeder-gegen-Jeden“, angeboten. Der Mapcycle besteht aus 60 Karten, wobei die populärsten bzw. am besten spielbaren Karten öfter aufgerufen und immer wieder einige größere oder unbekanntere Maps eingestreut werden. Jeden Mittwoch ändert sich automatisch die Konfiguration, InstantGib ist an der Reihe. An jedem ersten Sonntag in Monat gibt es dann noch einen besonderen Spielmodus, der sich „Ketchup Vampire“ nennt. Der merkwürdige Name stammt von der Tatsache her, dass man in diesem Modus pro zugefügtem Schadenspunkt 0.33333 Lebenspunkte erhält („vampire mode“) und es für bessere Spieler umso schwieriger wird Frags zu erzielen, je größer die Differenz in Frags zu den nachfolgenden Spielern ist („catch up“).

OpenArena 2012

Der Jahreschart zeigt ziemlich eindrucksvoll, dass der Server täglich besucht wird und im Vergleich zu den anderen Spieleservern auch die höchste Auslastung hat. Auffallend sind die Spitzen bei kontinuierlich 3-4 zu jeder Tageszeit, was für OpenArena ziemlich viel ist. Bis auf eine Ausnahme war dieser Ausschlag jeweils auf das Abschalten eines „konkurrierenden“ Deathmatch-Servers zurückzuführen, der praktisch alle DM-Spieler in Europa bündelt. Der Wert stellt also so etwas wie die theoretisch mögliche Auslastung dar. Als ich von 0.8.5 auf 0.8.8 im Mai wechselte, brach die Spielerzahl ein wenig ein, besserte sich dann aber wieder, nachdem ich den FTP-Server eingerichtet hatte, von wo aus man automatisch die neuen Daten beziehen kann. Im Sommer keine Überraschungen: Weniger Spieler, dafür mehr Sonne und Luft. Gut so.

Das Phänomen kennt jeder Onlinespieler. Es gibt einen Server A auf dem 5 Spieler spielen und einen Server B mit 0 Spielern. Welchen Server wird Spieler A beitreten? Natürlich joint jeder A. So bleibt der eine Server immer recht gut besucht und wenn sich dort einige Stammspieler regelmäßig einfinden, bleibt das auch so. Jeder neue Server muss hingegen erst um diese Stammspieler durch gute Pings und ein abwechslungsreiches Programm werben und ich denke, dies hat bei meinem Server von Anfang an ganz gut geklappt und an manchen Tagen kann man stundenlang ohne Unterbrechung menschliche Spieler „fraggen“.

2012 OpenArena Tagesrekord

Red Eclipse

Red Eclipse ist ein ziemlich neues Spiel für Debian und Ubuntu. Genauso wie Sauerbraten basiert es auf der Cube-Engine und ist dementsprechend äußerst anspruchslos an die Hardware. Jedoch unterscheiden sich Gameplay und Design deutlich vom Ogre-Spiel. Das Ganze ist eher futuristisch gehalten. Munition oder das Sammeln von Items steht gar nicht im Vordergrund. Hier geht es mehr um Bewegung. Faszinierend sind die zahlreichen Gamemodi und Einstellungsmöglichkeiten.

Die Community ist noch recht klein, wächst aber stetig. Wenn am frühen Morgen nur wenige Spieler online sein sollten, kann man immer noch auf ein Spiel gegen Bots zurückgreifen.

Red Eclipse 2012 Jahreschart

Als ich es zu gut meinte und selbst Servervariablen für alle freigegeben hatte, dauerte es keine zwei Tage bis mir Monit mitteilte, dass die Prozessorauslastung konstant bei über 75% lag. Als ich dem Server beitrat, war auch sofort klar warum. Die Werte waren so unnatürlich hoch, dass einzelne Gewehrsalven praktisch die Stärke von Erdbeben hatten und das ganze Spiel nur noch unnatürlich hin- und hervibrierte. Reich ihnen den kleinen Finger und sie reißen dir den Arm aus.

Nun läuft der Server ohne diese Freiheiten, aber immer noch mit der Möglichkeit über 100 Karten auszuwählen, darunter auch die von Sauerbraten. Die Anzahl der Spieler zog kurioserweise erst mit der Veröffentlichung der neuen Version 1.3.1 an, weil ich nicht wechselte bzw. nicht wechseln konnte. Debian ist im Freeze, weswegen Version 1.2 immer noch spielbestimmend ist. Da mein Server der einzige in Europa ist, der noch 1.2 benutzt bündelte das ein paar Spieler und ich hatte ja auch von der OpenArena-Geschichte gelernt. 🙂

Ich werde bis mindestens April daran festhalten, dann gibt es wohl auch einen Backport für Red Eclipse, zumindest erwähnte das der Maintainer mir gegenüber im IRC.

Sauerbraten

Das Spiel erinnert mich immer an alte LAN-Zeiten als man zum Krafttraining nicht ins Fitnessstudio gehen musste, sondern seinen Vorbis-Big-Tower und den Oschi von Röhrenmonitor durch die Gegend schleppen musste. Das war die Zeit als man auch noch solche BNC-Stecker zum Zocken brauchte, aaach ja.

Um wieder zum Spiel zurückzukommen, Sauerbraten macht eine Menge Laune. Das Spiel war sehr einfach als Server aufzusetzen und ist genauso einfach zu bedienen. Hier gab es schon eine umfangreichere Anleitung. Der Server ist absolut anspruchslos. Selbst bei einem vollen Server mit 16 aktiven Spielern, geht die CPU-Anzeige in htop nicht über 1% auf dem kleinsten vServer. Der Speicherverbrauch liegt ebenfalls bei unter 1% bei 256 MB RAM absolut. Einfach WOW.

Da der Client die ganze Arbeit übernimmt und der Ping nicht so die Rolle spielt, ermöglicht das auch Spielern aus Amerika problemlos in Deutschland zu zocken. Man sieht deswegen auch des öfteren in tiefster Nacht noch Ausschläge auf dem Graphen. Die Auslastung des Servers ist schwer vorherzusagen, da er absolut offen ist und vom „Master“ auch wieder geschlossen werden kann. So kann es sein, dass 2 Spieler über Stunden den Server für sich beanspruchen und zu einer anderen Zeit sich ein Dutzend Leute zum Coop-Edit einfinden. Genauso war er aber gedacht. Der Aufwand den öffentlichen Server zu administrieren geht gegen Null.

2012 Sauerbraten Jahreschart

Teeworlds

In Teeworlds steckt eine Menge Liebe. Das kann man nicht nur an den witzigen Tees erkennen, sondern auch an dem actionreichen Gameplay, dass den Spaß des klassischen 3D-Egoshooters in die zweidimensionale Welt transportiert hat. Die Serverkonfiguration ist ähnlich einfach wie bei Sauerbraten, der Server ein Vorbild an Effizienz.

Um den Spielern ähnliche Freiheiten wie bei Sauerbraten zu bieten, habe ich Karten und Spielmodi zur Abstimmung freigegeben und eigene Optionen in die Config eingebaut. Jeder hat also die Wahl Deathmatch, Capture the Flag oder Team Deathmatch zu spielen und zwischen allen offiziellen Karten zu wählen. Passend zum Spielmodus werden dann neue Variablen gesetzt.

Leider zeigte diese Wahl bis vor kurzem kaum Wirkung, der Server blieb weitestgehend leer. Das liegt vor allem daran, dass es mittlerweile an die 1000 Teeworld-Server gibt und meiner da eben nur einer unter vielen ist. Vergangenen Monat entdeckte dann scheinbar eine anonyme Gruppe von Leuten den Server und lastete diesen ordentlich aus. Deswegen hält Teeworlds auch den Tagesrekord. 🙂

2012 Teeworlds Tagesrekord

Ich denke Teeworlds macht auf jeder LAN-Party eine Menge Spaß und ist von mir eine echte Empfehlung, wenn man Lust auf einen Ego-Shooter der anderen Art hat. Aber Vorsicht: Wenn du Probleme mit dem „Hooken“ hast, wirst du auch schon mal als Noob beschimpft. 😯

2012 Teeworlds Jahreschart

Gegen die Feuerwand: Mal wieder DRDoS-Attacke auf OpenArena-Server

Seit ein paar Tagen wird mein OpenArena-Server erneut mit einer sogenannten DRDoS-Attacke überzogen. Der oder die Angreifer senden dabei gefälschte IP-Pakete mit Hilfe von Spoofing an den Server, damit dieser wiederum Statusanfragen an Webserver und ähnliche Dienste weiterleitet, deren Kapazitäten irgendwann nicht mehr ausreichen, um die gerechtfertigten Anfragen zu beantworten.

Mit iftop sieht das im Moment so aus:

Ich bin mir nicht sicher, ob das Ganze überhaupt durchdacht worden ist, momentan rauscht einfach alles in die Firewall. Es wird nicht einmal geprüft, ob der Server verwundbar ist, sondern einfach stur immer die gleichen Anfragen geschickt. Dass die Attacke somit sehr ineffizient ist, scheint niemanden zu stören.

Ich bin mit dem Server einen Port weitergezogen, um irgendeine negative Auswirkung auf das Spielerlebnis auszuschließen. Die beim letzten Mal erstellten Firewallregeln und der gepatchte Server haben zuvor ihr Übriges getan.

Da zwar sehr viele Anfragen hereinkommen, jedoch keine beantwortet wird, kann man diesen Umstand wunderbar mit vnstat beobachten. Normalerweise ist der Wert des TX-Graphen (grau) größer als der RX-Graph (grün).

Vnstat-stündlicher-Netzwerkverkehr
Vnstat-täglicher-Netzwerkverkehr

Letztes Mal hat es knapp zwei Wochen gedauert bis der Spuk vorbei war. Mal schaun wie lange es dieses Mal dauert.

Fwlogwatch: Ein Firewall-Loganalysierer und Sicherheitswerkzeug

Eine der ersten Amtshandlungen auf dem neuen vServer war es, eine Firewall aufzusetzen. Das stellte sich Dank ufw als gar nicht so schwierig heraus. Ich experimentierte dann mit verschiedenen Logleveln und stellte schnell fest, dass ich ohne einen Loganalysierer für die Firewall schnell den Überblick verlieren würde.

Ich installierte daraufhin Fwlogwatch, ein Sicherheitswerkzeug, dass schon seit einem Jahrzehnt als Freie Software vorliegt. An dieser Stelle wollte ich es kurz vorstellen, da ich nicht wirklich viele Erfahrungsberichte dazu gefunden habe, die sich mit Fwlogwatch auseinander gesetzt haben. Mit Sicherheit gibt es noch andere Loganalysierer für Firewalls. Welche kennt und benutzt ihr davon und wie geht ihr generell mit dieser Thematik um?

Installation und Konfiguration

aptitude install fwlogwatch

Fwlogwatch kann sowohl per Konfigurationsdatei als auch über die Kommandozeile konfiguriert werden. Nur die Optionen, die nicht ausdrücklich in fwlogwatch.config definiert wurden, können per Kommandozeilenparameter geändert werden. Im Folgenden konzentriere ich mich auf die Beschreibung der Konfigurationsdatei.

Bei Debian und Ubuntu ist es am sinnvollsten zuerst die Standardeinstellungen mit

dpkg-reconfigure fwlogwatch

festzuschreiben. Die Einstellungen befinden sich danach in /etc/default/fwlogwatch. Die Screenshots zeigen die sechs Möglichkeiten, die zur Auswahl stehen. Ich habe mich dafür entschieden Fwlogwatch als Daemon im Echtzeitmodus zu starten und zusätzlich einmal täglich eine E-Mail-Benachrichtigung mit der Auswertung der vergangenen 24 Stunden zu erhalten. Auf das automatische Anlegen von Firewall-Regeln habe ich verzichtet.

Die zentrale Konfigurationsdatei existiert in /etc/fwlogwatch/fwlogwatch.config. Die Datei ist sehr gut in Englisch dokumentiert. Hier ist ein Auszug mit den für mich wichtigsten Einstellungen.

# Input-Datei
input = /var/log/messages

# Wir analysieren eine Netfilter-Firewall
parser = n

# Angezeigt werden: Quell-IP, Protokoll und Zielport.
src_ip = on
protocol = on
dst_port = on

# Diese Quelle soll ausgeschlossen werden
exclude_src_host = 123.123.123.123

# Sortierungsreihenfolge
sort_order = Sacd

# Anzeige der Paketgröße
data_amount = yes

# nur die letzten 24 Stunden anzeigen
recent = 24h

# Fwlogwatch soll als Benutzer nobody laufen
run_as = nobody

# Im Echtzeitmodus soll benachrichtigt werden
notify = yes

Einmal am Tag erhält man danach eine E-Mail, die alle Vorkommnisse in der vorher festgelegten Sortierreihenfolge auflistet. Dieser ältere Artikel für die Slackware-Distribution erklärt anhand einiger Beispiele wie man Fwlogwatch von der Kommandozeile bedient und verschiedene Sortierverfahren nutzen kann, um Muster in einem Angriff zu erkennen.

Jul 18 06:58:29 to - - [9948935.724847] [UFW BLOCK]  1 tcp packet (44 bytes) from xxx.xxx.xxx.xxx port 22
Jul 18 07:05:27 to - - [9949353.404245] [UFW BLOCK]  1 tcp packet (48 bytes) from xxx.xxx.xxx.xxx port 5900
Jul 18 07:30:49 to - - [9950876.155902] [UFW BLOCK]  1 udp packet (23 bytes) from xxx.xxx.xxx.xxx port 27970

Echtzeitmodus

Für den Echtzeitmodus existiert noch ein zusätzliches Webinterface, welches ebenfalls in fwlogwatch.config aktiviert wird. Das Statuspasswort muss verschlüsselt sein und lässt sich mit htpasswd -nb admin meingeheimesPasswort erzeugen. Man kann sich dann z.B. über einen SSH-Tunnel mit dem Webinterface verbinden.

ssh -p 44444 -L 8888:127.0.0.1:888 meinserver

server_status = yes
listen_port = 888
status_user = admin
status_password = Xjswdw/we3 #Beispiel für ein verschlüsseltes Passwort

Fwlogwatch-Status

Zum Schluss

Fwlogwatch bietet in /usr/share/doc/examples/ noch zwei CGI-Skripte, mit denen eine Zusammenfassung im HTML-Format auf einem Webserver präsentiert werden kann. Auch lassen sich alle täglichen Berichte per HTML-Mail verschicken, wenn man das möchte. Wurde notify=yes in der Konfigurationsdatei gesetzt wird zusätzlich eine Alarmnachricht versandt, wenn ein Schwellenwert an Verbindungen pro Zeitintervall überschritten wurde. Der Inhalt der Mail orientiert sich an den Angaben in /etc/fwlogwatch/fwlw_notify. Außerdem lassen sich auch automatisch neue Firewall-Regeln anlegen, wozu das Skript /etc/fwlogwatch/fwlw_respond berücksichtigt wird und externe CERT-Stellen mit vorgefertigten Templates alarmieren.

Ich persönlich finde die vielfältigen Sortierungsmöglichkeiten von Fwlogwatch nützlich, womit sich tatsächlich überhaupt erst eine Übersicht in die Analyse der Firewall-Logdateien bringen lässt. Ich stelle mir nur hin- und wieder die Frage, wie ich am besten auf die Tatsache reagiere, dass mein Server permanent gescant wird.

Lecker – Cube 2: Sauerbraten

Es ist angerichtet. Anstatt kulinarischer Spezialitäten gibt es heute jedoch das native Linuxspiel Cube 2: Sauerbraten. Zugegeben für all die, wo Deutsch als Muttersprache haben tun, klingt dieser Name für einen waschechten Ego-Shooter erst einmal seltsam in den Ohren. Scheinbar aber nicht für den Erschaffer des Spiels, Wouter „Aardappel“ van Oortmerssen. Wen sollte das bei seinem Spitznamen, „Kartoffel“, auch wundern.

In diesem Beitrag stelle ich Cube 2: Sauerbraten vor, das seit mehr als vier Monaten zu meinem Spieleprojekt gehört. Ich beschreibe hier die wichtigsten Spielmerkmale, natürlich gibt es auch Bilder und Links und eine auf den Punkt gebrachte Anleitung, wie man selbst einen dedizierten und offenen Sauerbraten-Server mit Debian und Ubuntu aufsetzen kann.

Und was den Namen anbelangt…einfach Englisch aussprechen: Sourrrrbrrrääten. Perfekter Name für einen Ego-Shooter. 🙂

Warum Sauerbraten?

Nachdem ich mir ein paar Kriterien für in Frage kommende Spiele ausgedacht hatte, punktete Sauerbraten auf jeden Fall mit seinen außerordentlich geringen Hardwareanforderungen sowohl beim Client als auch beim Server.

Das Spiel ist schnell, wirklich schnell, genauso wie in den guten alten Zeiten. Neben 20 verschiedenen Spielmodi existieren auch noch mehr als 150 offizielle Karten, 7 Waffen, ein toller Soundtrack und ein bemerkenswertes Feature, neue Karten mit mehreren Spielern gleichzeitig online zu erschaffen. Von all den Spielen auf dem Server ist es jedoch am „unfreisten“. Richard Stallman wird es vermutlich nie spielen. Die Spielengine und damit der Server ist zwar unter einer freien Lizenz verfügbar, große Teile der Mediendateien jedoch nicht.

Dennoch glaube ich, dass Sauerbraten eine Chance verdient hat, da das Spiel nicht nur die Möglichkeit bietet neue freie Inhalte zu schaffen, sondern auch schon Projekte wie Red Eclipse inspiriert hat, deren Medieninhalte unter freien Lizenzen stehen.

Der Sauerbraten-Client

aptitude install sauerbraten

Die Spielanforderungen von Sauerbraten sind moderat. Eine 1-GHz-CPU, 256MB RAM und eine Geforce 4 MX sollten es mindestens sein. Wer jemals einen Ego-Shooter gespielt hat, kennt das grundlegende Prinzip. So lässt sich auch Sauerbraten mit den W-A-S-D-Tasten steuern, mit Space springt der eigene Avatar, mit der linken Maustaste wird geschossen und mit kreisenden Mausbewegungen das Sichtfeld geändert.

Danach sind noch erwähnenswert:

R – Sollte man trotz aller Versuche in einer Ecke zu campen über die Flagge gestolpert sein, dann kann man sie mit einem Druck auf R wieder fallenlassen. 😉
T – öffnet den Chat. Auf einem öffentlichen Server ohne AUTH kann man mit der Eingabe von /setmaster 1 Masterrechte erlangen. Dazu gleich mehr.
E – Startet den Bearbeitungsmodus, in dem es möglich ist, innerhalb des Coop-Edit-Modus mit mehreren Mitspielern gleichzeitig eine Karte zu verändern oder neuzugestalten! Auf ogros.org gibt es eine nette Übersicht zu einer (englischen) Videoanleitung zum Thema.

Mehr ist wirklich nicht notwendig, um in das Spiel einsteigen zu können.

Serverbrowser und das Menü

Das Spielmenü und insbesondere der Serverbrowser könnten übersichtlicher gestaltet sein. Es gibt jedoch die Möglichkeit ein eigenes zu erstellen, wie dieser Artikel auf ogros.org beschreibt. Da die Voreinstellungen gut sind und man intuitiv in das Spiel findet, muss man sich hier nicht lange aufhalten. Unter Keys lassen sich die Tastenbelegungen ändern.

Cube Server Lister

Ich hatte den Cube Server Lister schon an anderer Stelle erwähnt. Wer sich mit dem normalen Serverbrowser nicht anfreunden kann, sollte sich die Zeit nehmen und der Anleitung folgen, wie man sich ein eigenes CSL-Debianpaket erstellen kann. Mit diesem Hilfsprogramm, dass unter der GPL veröffentlicht worden ist, lassen sich Details zu allen Cube-2-Servern anzeigen und mit einem Doppelklick auf den Servernamen des jeweiligen Spiels tritt man einem Spiel bei.

Spielmodi

Sauerbraten bietet ein Wiki mit einem Multiplayer Guide und eine umfangreiche Dokumentation.

Im Mehrspielermodus gehört man entweder dem guten oder dem bösen Team an. Mit leisen Zwischentönen halten wir uns natürlich nicht auf. Unabhängig davon gilt: Die roten Spieler sind immer die Gegner und mit den blauen spielt man in einem Team zusammen.

In Sauerbraten gibt es sieben verschiedene Waffen: Doppelläufige Schrotflinte, Minigun, Gewehr, Raketenwerfer, Granaten, Pistole, Fäuste/Kettensäge. Dazu lassen sich in den meisten Modi Gesundheit, Rüstung und Munition aufsammeln.

Das Spiel bietet zur Zeit 20 verschiedene Spielmöglichkeiten und in der aktuellen Entwicklerversion stehen schon weitere parat. Neben dem klassischen Free For All (FFA) und InstaGib, wo es einfach nur um „Jeder gegen Jeden“ geht, gibt es natürlich auch noch Fahnenraub (alias Capture the Flag). Mir persönlich gefällt „Regen Capture“ ziemlich gut, wo man auf einer relativ großen Karte verschiedene Punkte kontrollieren muss. An einer eroberten Station erhält man Waffen, Leben und Punkte. Dieser Modus ist auch mit sehr vielen Spielern noch interessant und sehr dynamisch.

Der Screenshot zeigt eine Szene aus einem Spiel mit dem Modus „Regen Capture“. Außerdem erkennt man an der Servernachricht, dass der Server gepatcht wurde.

Coop-Edit-Modus

Auf meinem offenen Server wird sehr oft der Coop-Edit-Modus genutzt. Hier lassen sich gemeinsam mit anderen Spielern bestehende Karten modifizieren oder komplett neue erstellen. Die oben erwähnte Anleitung zum Kartenbau oder ein Blick auf die Wiki-Seite Mapping and Editing ist ein guter Start in die Materie. Das Wichtigste: Wenn ihr einem Server beitretet, auf dem an einer neuen Karte gearbeitet wird, einfach /getmap in den Chat schreiben und ihr seht den aktuellen Stand vor euch. Hier sind ein paar Screenshots von einer Coop-Edit-Sitzung auf dem Server.

In Natenoms Blog findet ihr unter anderem ein cooles Video zu einer selbst erstellten Karte, die eine in sich geschlossene kleine Stadt darstellt. Da steckt sicher eine Menge Arbeit drin.

Musik

Sauerbratens instrumentaler Metalsoundtrack stammt von Marc A. Pullen, lässt sich auf last.fm herunterladen und befindet sich selbstverständlich auch im OGG-Format in /usr/share/games/sauerbraten/fanatic/.

Der Sauerbraten-Server

Aufgrund des besonderen Client-Server-Modells ist der Sauerbraten-Server sehr leichtgewichtig. Der Speicherverbrauch liegt bei 2-3 MB RAM auf einem 64bit-System und auch die CPU-Anzeige von htop habe ich selbst bei einem vollen Server noch nie über 1% springen sehen. Im Gegensatz zu vielen anderen Mehrspieler-Spielen ist es bei Sauerbraten nicht notwendig, dass Server und Client sich permanent über Treffer und Aktionen austauschen, was es erlaubt die wesentlichen Funktionen des Servers auf ein Minimum zu beschränken. Dadurch bleibt das Spiel selbst bei hohen Pings noch spielbar. Auf der anderen Seite macht es Sauerbraten gegenüber Cheatversuchen auch verwundbarer, was durch die Open-Source-Natur des Spiels noch begünstigt wird.

Die Authentifizierung

Sauerbraten begegnet diesem Problem mit einer ungewöhnlichen, aber nachvollziehbaren Entscheidung. Da selbst die populärsten proprietären Spiele mit einem Stab von bezahlten Entwicklern keinen vollkommenen Schutz gegen jede Art von Manipulationsversuch bieten können, haben die Entwickler die Verantwortung und Kontrolle an die Spielgemeinschaft zurückgegeben. Auf jedem Server kann ein Spieler sogenannter „Master“ werden und Verstöße mit einem Bann vom Server bestrafen. Die Funktion wird entweder über das Spielmenü oder durch Eingabe von /setmaster 1 im Chat (Taste t) aufgerufen.

Sauerbraten-Server kennen im Wesentlichen zwei Arten von Autorisation: Mit Auth-Schlüssel und ohne.

  • Auth-Schlüssel. Durch den Hauptentwickler des Spiels werden sogenannte Auth-Schlüssel vergeben, mit denen vertrauenswürdige Spieler auf jedem Server mit Auth-Status Master werden können.
  • Öffentliche Server. Jeder kann dem Server beitreten. Diejenige, welche zuerst /setmaster 1 in den Chat eingibt, erhält den Master-Status.

Von diesen beiden Formen der Registrierung ist der Administrator des Server mit seinem Admin-Passwort jedoch nicht betroffen. Er kann jederzeit mit /setmaster und der anschließenden Eingabe des Admin-Passworts selbst dann zum Master werden, wenn diese Rechte schon an einen anderen Spieler vergeben worden sind.

Für mein Projekt habe ich mich für einen öffentlichen Sauerbraten-Server entschieden, auf dem jeder Master werden kann. Zusätzlich ist es möglich den Server so zu sperren, dass zwar weiterhin Spieler beitreten können, diese aber nur zuschauen und den Chat mitlesen dürfen. (L=Locked)

Installation und Konfiguration

aptitude install sauerbraten-server

Zur Inbetriebnahme des Servers ist es sinnvoll einen unprivilegierten Benutzer mit adduser anzulegen, z.B. sauerbraten. In dessen Home-Verzeichnis wird die zentrale Konfigurationsdatei server-init.cfg erstellt. Die verfügbaren Einstellungsmöglichkeiten sind überschaubar, was es einfach macht sich zurechtzufinden. Es ist sinnvoll die Shell des Benutzer auf /bin/false zu setzen.

chsh sauerbraten -s /bin/false

Das Programm lässt sich am besten in einer Screen-Sitzung starten. Hierzu erstellt man eine ausführbare Datei start.sh mit folgendem Inhalt.

#!/bin/sh
while true
do
/usr/games/sauerbraten-server -q/home/sauerbraten  
echo "server abgestuerzt am `date`" > letzter_crash.txt
done

Den Server kann man danach auf diese Weise starten:

su sauerbraten -s /bin/dash -c "screen -m -d -S ffa_sauer sh start.sh"

Sollte es tatsächlich zu einem Absturz kommen, sorgt die While-Schleife automatisch für den Neustart und für einen kurzen Vermerk in der Datei „letzter_crash.txt“. Sauerbraten läuft sehr stabil. Bei einer Uptime von > 30 Tagen kam es jedoch auch schon zum Crash. Die oben genannte Konfiguration sorgt dann dafür, dass der Server nur wenige Sekunden nicht erreichbar ist.

Schließlich lässt er sich auch über eine Cron-Reboot-Aktion bei einem Neustart hochfahren. In /etc/crontab steht deswegen

@reboot sauerbraten screen -d -m -S ffa_sauer sh /home/sauerbraten/start.sh

Der Port des Servers lässt sich ändern. Wer eine Firewall betreibt muss den Standardport 28785 und 28786 freigeben. Spielt man im LAN gilt das auch für Port 28784. Allgemein gesprochen: Gebt immer Port und Port+1 frei und im LAN zusätzlich noch 28784.

Modifikationen

Ich betreibe den Server, so wie ihn Debian und auch Ubuntu ausliefern, ohne jede Form von Modifikation. Es gibt verschiedene Projekte, die die Standardfunktionen erweitert haben, jedoch weiterhin kompatibel zum Original sind. Neue Merkmale sind unter anderem veränderte Statistikanzeigen im Spiel, neue Kontrollmöglichkeiten durch den Admin und Integration mit IRC. Maßgeblich sind das die Projekte XSBS und Hopmod. Ebenfalls erwähnenswert ist Bandnudel, ein Skript um Statistiken für den Server zu erstellen. Da ich diese Modifikationen nicht benutze, seid ihr hier auf euch allein gestellt.

Des Weiteren bietet der gesamte Webauftritt des Ogros-Clans einen guten Überblick, was man mit selbst erstellen Servermodifikationen erreichen kann. Leider werden diese im Gegensatz zum Cube-Server-Lister, der ebenfalls von dort stammt, nicht frei zur Verfügung gestellt.

Screenshots

Hier sind ein paar Screenshots. Viele weitere gibt es hier.

Links

Tiger: Hilft bei Sicherheitsüberprüfung und Einbrucherkennung auf dem Server

Das Logo von Tiger

Es sollte anspruchslos an die Ressourcen sein, nicht noch ein Daemon, der wertvollen Arbeitsspeicher in Besitz nimmt. Es sollte standardmäßig lautlos sein und nur Alarm geben, wenn es etwas Verdächtiges zu melden gibt und ganz klar, es musste ein nützliches Werkzeug sein, welches vor einer Vielzahl von Sicherheitsproblemen warnen konnte und regelmäßig das System auf Unregelmäßigkeiten überprüft.

So habe ich Tiger gefunden. Wie alle Programme in diesem Bereich ist auch Tiger nur ein Mosaikstein, um den Server etwas sicherer zu machen. Mich hat das modulare Design und die einfache Konfiguration überzeugt. Die meisten Module sind in purem Shell-Skript geschrieben und greifen ausschließlich auf UNIX-Werkzeuge zurück, um z.B. Datei- und Benutzerrechte zu überprüfen, unbenutzte Accounts anzuzeigen oder verdächtige Prozesse zu melden.

Des Weiteren existieren noch systemspezifische Programme, die im Fall von Debian die Md5-Summe von installierten Paketen überprüfen. Bei Veränderungen wird per Mail gewarnt. Neben Tiger werden noch John „the Ripper“, chkrootkit und ab Wheezy auch Tripwire oder Aide als empfohlene Pakete installiert.

John versucht die Passwörter der Benutzer zu knacken und meldet schwache an den Admin oder direkt an den Benutzer. Chkrootkit testet auf typische Veränderungen, die von Rootkits verursacht werden und Tripwire bzw. Aide melden ebenfalls, ob wichtige Systemdateien verändert worden sind, nachdem zuvor in einer Datenbank der Ursprungszustand definiert worden ist.

Bedienung

aptitude install tiger

  • cronrc. Die Skripte und Module laufen zu festgelegten Zeiten und werden durch Cron gesteuert. Die Konfigurationsdatei hierfür ist /etc/tiger/cronrc. Ich habe hier lediglich die Ausführung des Moduls „check_system“ auf 3.00 Uhr geändert, weil zu dieser Zeit die wenigsten Leute auf dem Server spielen, um dadurch beeinträchtigt werden zu können. Check_System ist CPU-intensiv und überprüft unter anderem mit deb_checkmd5sums die Integrität aller installierten Pakete.
  • tigerrc. In /etc/tiger/tigerrc lässt sich wiederum festlegen, welche Checks ausgeführt werden sollen und welche nicht, wenn man Tiger manuell mit dem Befehl tiger aufruft. Dazu setzt man hinter dem betreffenden Modul entweder ein Y für Ja oder ein N für Nein. Die Datei ist sehr gut dokumentiert und ziemlich selbsterklärend.
  • tiger.ignore. In /etc/tiger/tiger.ignore kann Output eingetragen werden, der durch Tiger ignoriert werden soll.

Am Anfang wird Tiger mehrere Mails mit Warnungen verschicken, danach nur noch, wenn sich etwas geändert hat. Jede Warnung enthält einen typischen Code, z.B. [cron005w]. Das mitgelieferte Programm tigexp liefert dann die Erkenntnis, um was für ein Problem es sich handelt.

tigexp cron005w

Bei Debian ist es Standard, dass jeder Benutzer einen Cronjob anlegen darf. Das Verhalten kann man unterbinden, indem die Datei /etc/cron.allow angelegt und root eingetragen wird, wodurch schließlich nur noch der Admin diese Aufgaben erstellen darf.

Es gibt einige Warnungen, die gar nicht bedrohlich sind. Tiger regt jedoch an darüber nachzudenken. Insgesamt finde ich, dass das gesamte Paket eine interessante und nützliche Ergänzung für den Spieleserver ist.