Minecraft im Weltall

Minecraft ist mittlerweile millionenfach verkauft worden. Wer von den Klotzwelten nicht genug bekommen kann, der sollte sich ScrumbleShip anschauen. Dabei handelt es sich um eine Raumschiffssimulation, welche aussieht als ob der Minecraft-Welt entsprungen wäre. Das Spiel welches mittlerweile erfolgreich über Kickstarter finanziert wurde sammelte dabei insgesamt $12,093 ein.

Ein Schiff im All

Ein Schiff im All

Die offizielle Seite des Spieles ist unter https://www.scrumbleship.com zu finden. Dort kann das Spiel in drei Editionen heruntergeladen werden. Bei der ersten Edition handelt es sich um die Demo-Version während es daneben noch die Voll- und die Deluxe-Version gibt. Sie unterscheiden sich dabei durch einige Features. Allen Versionen (bis auf die Demo) ist gemein, das der Quelltext mitgeliefert wird, was allerdings nicht bedeutet, das es sich dabei um freie Software handelt. Erhältlich ist das Spiel dabei für Linux, Windows und Mac OS X, wobei die Mac OS X Version auf einem Maverick noch zu Problemen führt.

Images unter Linux anlegen und nutzen

Unter Linux ist es ohne Probleme möglich ein Image zu mounten. In diesem Fall soll ein leeres Image erstellt werden und anschließend eingebunden werden. Erstellt wird das Image unter Zuhilfenahme von „dd“:

dd if=/dev/zero of=image.img bs=1024000 count=1000

Das in diesem Fall erstellte 1 GiB große Image ist mit Nullen gefüllt. Mittels:

mkfs.ext4 image.img

wird das Image mit einem ext4 Dateisystem versehen. Dies ist notwendig um es anschließend einzubinden. Bewerkstelligt wird das durch den Befehl „mount“:

mount -o loop /home/seeseekey/image.img /home/seeseekey/ImageMountpoint/

Nach dem erfolgreichen Einbinden kann das Image genutzt werden.

Verzeichnis von einem Git Repository in ein anderes verschieben

Unter Git möchte man manchmal ein Verzeichnis von einem Repository zu einem anderen verschieben. Natürlich soll dabei die Revisionsgeschichte nicht verloren gehen. In diesem Fall hilft folgendes Bashskript:

#!/bin/sh
# moves a folder from one git repository to another
# moveFolder <absolute repository one path> <repository one folder> <absolute repository two path>

# prepare repository one
cd $1
git clean -f -d -x
git checkout -b tmpBranch
git filter-branch --subdirectory-filter $2 HEAD
mkdir $2
mv * $2
git add .
git commit -a -m "Move files into folder"

#import in repository two
cd $3
git remote add repositoryOne $1
git pull repositoryOne tmpBranch
git remote rm repositoryOne

#cleanup
cd $1
git checkout master
git branch -D tmpBranch

#remove folder with history from repository one
cd $1
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch $2" HEAD

Genutzt wird das Skript dabei wie folgt:

./moveFolder /absolute/path/to/repo/one folderFromRepoOne /absolute/path/to/repo/two

Nachdem das Verzeichnis in das neue Repository mitsamt der Revisionsgeschichte übertragen wurde, wird es aus dem alten Repository entfernt. Das Skript funktioniert dabei unter Windows, Linux und Mac OS X. Die jeweils aktuellste Version ist auf GitHub zu finden.

Server gegen unbefugten Login sichern

Betreibt man einen Server, so wird man mit der Zeit feststellen, das man nicht der einzige ist, der gerne Zugriff auf den Server hätte. Um zu häufige Loginversuche abzublocken gibt es Fail2ban. Dieses Programmpaket durchsucht die entsprechenden Logs und blockiert böswillige Versuche in das System einzubrechen. Damit gehört Fail2ban zu den Intrusion Prevention Systemen. Die Installation auf einem Ubuntu-Server geht dabei leicht von der Hand:

apt-get install fail2ban

Anschließend kann mit der Konfiguration begonnen werden:

nano /etc/fail2ban/jail.conf

In den ersten Einstellungen unter „[DEFAULT]“ findet man die Zeit (in Sekunden) welche angibt wie lange ein Angreifer geblockt werden soll. Standardmäßig sind dies 10 Minuten respektive 600 Sekunden. Im Bereich „[JAILS]“ kann Fail2ban nun für bestimmte Dienste aktiviert werden, indem der Wert bei „enabled“ auf „true“ gesetzt wird. Selbstverständlich ist es auch möglich eigene Jails zu definieren. Alle vorgefertigten Filterregeln findet man unter „/etc/fail2ban/filter.d“. Die Überwachung des SSH Dienstes ist dabei standardmäßig aktiviert. Nach der Anpassung der Konfiguration, sollte der Dienst mittels

service fail2ban restart

neugestartet werden. Das Log in welchem alle Fail2ban Aktionen verzeichnet sind, ist unter „/var/log/fail2ban.log“ zu finden.

Weitere Informationen gibt es unter:
http://cup.wpcoder.de/fail2ban-ip-firewall/

Mailserver mit Postgrey gegen Spam schützen

Vor einiger Zeit beschrieb ich wie man einen Mailserver unter Ubuntu mittels Postfix und Dovecot aufsetzt. Der dort installierte Server ist, in der Lage Mails zu senden und zu empfangen. Allerdings enthält er keinerlei Maßnahmen zum Schutz vor unerwünschten Mails. An dieser Stelle setzt Postgrey, eine Greylisting Implementierung für Postfix, an. Beim Greylisting werden Mails von einem unbekannten Sender erst einmal mit einem temporären Fehler beantwortet. RFC konforme Mailserver senden die Mail nach einer Verzögerung nochmal. Beim Spamversendern ist dies meist nicht der Fall, womit der Spam nicht im System auftaucht. Die Installation ist dabei relativ einfach:

apt-get install postgrey

Nach der Installation muss die „/etc/postfix/main.cf“ Datei angepasst werden. Der Zeile „smtpd_recipient_restrictions“ wird dabei der Wert „check_policy_service inet:127.0.0.1:10023“ hinzugefügt. Nachdem der Service mittels:

service postfix restart

neugestartet wurde, ist das Greylisting aktiv. In der Logdatei „/var/log/mail.log“ findet man, sobald man eine Mail von einem unbekanntem Sender bekommt folgende Zeile:

Oct 10 10:32:39 service postfix/smtpd[22287]: NOQUEUE: reject: RCPT from mail.example.org[178.19.71.5]: 450 4.2.0 <>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/example.com.html; from=<mail.example.org> to=<> proto=ESMTP helo=<mail.example.org>

Wenn die Mail erneut empfangen wird und die Greylistingzeit vorbei ist, wird Postgrey die Mail annehmen. Möchte man die Greylistingzeit ändern, so muss die Datei „/etc/default/postgrey“ bearbeitet werden. Für eine Verzögerung von 60 Sekunden könnte das ganze dann wie folgt aussehen:

POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=60"

Natürlich muss der Service für diese Änderung neugestartet werden.