Martin Lantzsch
Software Entwickler
15. Mai 2010

Multi Accounts aufdecken

15. Mai 2010 - Geschrieben von Martin - 2 Kommentare

Heute geht für einen Leser ein Wunsch in Erfüllung. Viel Spaß beim lesen. Falls du dir auch einen Beitrag wünschen willst, schreib mir eine eMail.

Betreiber von Onlinespielen sowie Chats sind immer auf der suche nach sogenannten Doppel- oder Multi-Accounts, das sind Benutzer, die sich öfter auf einer Plattform wie einem Browsergame anmelden um dadurch Vorteile zu erhalten.

Das man sich dabei nicht nur auf sein Gespür verlassen sollte sollte natürlich auch klar sein, darum was kann man machen, damit solche User von vornherein keine Chance haben? Mit ist das sofort eine IP Sperre in den Sinn gekommen, gesagt getan, ich habe meine bestehenden IP Felder – welche die IP Adresse des letzten Logins beinhält – beim Login des Spielers nach seiner IP Adresse abgesucht und wenn sich ein User binnen weniger Stunden öfter als ein mal eingeloggt hat, hab ich ihm den Login untersagt.

Folgendermaßen sieht mein Script aus:

// IP Adresse vom User holen
$ip = $_SERVER['REMOTE_ADDR'];
// die Zeit ab der nach gleichen IPs gesucht wird
$time = time() - 24*60*60;
// nun kann die IP Adresse im users Table gespeichert werden
mysql_query("UPDATE users SET ip = '".$ip."' WHERE userid = '".$userid."'");
// nun können wir prüfen ob andere Benutzer mit dieser IP vorhanden sind
$count = mysql_num_rows("SELECT userid FROM users WHERE ip = '".$ip."' AND last_login > '".$time."'");
if($count > 1)
{
   die('TO MUCH USERS PER IP!');
}

(Geschrieben in PHP)
Dies wäre nun die Brutale Lösung (Kann allerdings durch zusätzliche Filter wie z.B. Punkte entschärft werden), welche alle Multi Account Spieler Aussperrt. Das kann allerdings auch negative Nebeneffekte haben, und zwar können so Familien, Wohngemeinschaften und Büros diese Seite nicht mehr nutzen, da dort alle über einen Internet Anschluss ins Internet gehen und somit eine IP Adresse haben.

Deswegen empfehle ich solange sich der dadurch entstandene Schaden der durch solche Doppelaccounts entsteht in Grenzen hält erst ein mal ein Script zu schreiben, welches alle Doppelaccountspieler auflistet, um diese explizit zu befragen oder ihre Accounts zu überprüfen.

Folgendermaßen hab ich das einmal für ein Mafia Browsergame gemacht:

$query = mysql_query("SELECT ip, userid, username FROM users");
while($users = mysql_fetch_array($query))
{
  // nun gehen wir alle user nach und nach durch
  // falls auch hier ein Zeitlimit benötigt wird, kann das von oben übernommen werden
  $count = mysql_num_rows("SELECT userid FROM users WHERE ip = '".$users['ip']."'");
  if($count > 1)
  {
    // nun da es ja offensichtlich ein Multiaccount Spieler ist, wird er ausgegeben
    // wenn gewünscht könnte man auch in diesem Schritt Informationen zu den
    // gespielten Accounts holen, allerdings würde das dieses Beispiel sprengen
    echo $users['username'] - $users['ip'];
  }
}

(Geschrieben in PHP)

Nun haben wir 2 Möglichkeiten in Betracht gezogen wie man mit Doppelaccounts fertig wird. Ich hoffe sie finden Anklang, und Helfen den Admins bei ihrer Täglichen Arbeit.

8. Mai 2010

Apache klemmt

8. Mai 2010 - Geschrieben von Martin - Keine Kommentare

Letztens erst wieder wollte mein Apache (unter Windows 7) nicht starten, daraufhin hab ich alles mögliche versucht, diverse Optionen durchgetestet, aber kein Erfolg. Letztenendes lag der Fehler bei Skype, welches sich den Port 80 standardmäßig reserviert. Dies kann man aber sehr leicht abstellen, einfach Skype öffnen, dann oben in der Menüleiste Aktionen –> Optionen –> Erweitert –> Verbindung und dort vor der obersten Checkbox den Haken entfernen, das ist alles. Nun sollte spätestens nach einem Skype neustart alles wieder wie gewohnt laufen.

8. Mai 2010

Linux: XAMPP – LAMPP

8. Mai 2010 - Geschrieben von Martin - Keine Kommentare

Da dieser Artikel aus unserem alten Wiki oft angefordert wird, hier das Backup davon:

Fürs Webdesign und die Webentwicklung werden natürlich Apache (Webserver), PHP, MySQL und noch ein paar andere Tools wie Pearl oder Python benötigt, dieser Artikel zeigt wie man LAMPP, bzw. XAMPP auf dem eigenem Linux System installiert.

Herunterladen

Als erstes muss das Archiv heruntergeladen werden. Einen Aktuellen Link finden Sie hier:

http://www.apachefriends.org/de/xampp-linux.html

Installieren

Installieren muss man eigentlich gar nichts, man muss lediglich das heruntergeladene Archiv ins Verzeichniss /opt entpackt werden. Dies erledigen Sie mit dem Befehl tar:
Sie müssen diesen Befehl mit root Rechten ausführen!

tar xvfz xampp-linux-1.7.tar.gz -C /opt

Ersetzten Sie „xampp-linux-1.7.tar.gz“ durch das von ihnen heruntergeladene Archiv!

Nun ist die Installation abgeschlossen.

Starten

Um jetzt Lampp zu starten müssen Sie lediglich eine Konsole öffnen und:

/opt/lampp/lampp start

ausführen, und zwar mit root Rechten.

Autostart

Damit Lampp Automatisch startet, öffnen Sie die Datei:

/etc/init.d/rc.local

Und fügen Sie den Befehl zum Starten von Lampp ein:

/opt/lampp/lampp start

Speicheren Sie nun ab. Jetzt sollte LAMPP bei jedem Hochfahren Automatisch starten.

Wenn ein Dienst nicht startet

Falls ein oder mehrere Dienste nicht starten wie z.B. Apache, PHP, MySQL, usw. müssen Sie die Rechte des LAMPP Verzeichnisses anpassen, dies machen Sie mit dem Kommando chmod. Öffnen Sie eine Konsole und führen folgendes aus (Natütlich mit root Rechten):

chmod -R 777 /opt/lampp

Nun müssen Sie noch den Konfiugurationsdateien die richtigen Rechte zuweisen.

chmod 755 /opt/lampp/etc/my.cnf

Und

chmod 755 /opt/lampp/phpmyadmin/config.inc.php

Nach diesem Schritt sollten zwar die Dienste wieder laufen, aber es hat nun jeder vollen Zugriff auf die Dateien und Verzeichnisse! Falls Sie die Dienste mit dieser Methode wieder in Gange bringen wollen, sollten Sie eine Firewall während Sie LAMPP am laufen haben verwenden.

Tipps

Ein Paar Tipps, die den Umgang mit LAMPP erleichern.

MySQL Passwort
Es ist kein MySQL Passwort gesetzt, d.h. das Feld einfach frei lassen.

Wo kommen die html/php Dateien hin

Ihre html/php Dateien kommen hier hin:

/opt/lampp/htdocs

Achten Sie darauf, das die richtigen Rechte für die Dateien gesetzt sind!

PHP.ini

Die PHP.ini finden Sie hier:

/opt/lampp/etc/php.ini

Weiterführende Links

http://www.apachefriends.org/de/index.html – Webseite von XAMPP und LAMPP
http://www.apachefriends.org/de/xampp-linux.html – Webseite von LAMPP

5. Mai 2010

Linux Server absichern

5. Mai 2010 - Geschrieben von Martin - Ein Kommentar

Heute widmen wir uns einem absolut notwendigem Thema, dem absichern eines Linux root/vServers. Hier eine kleine Zusammenfassung aller wichtigen Themen, ausgegangen wir hier von einem Debian System.

1. Updaten des Servers
Als erstes sollten wir sichergehen, das die verwendete Software stets auf dem aktuellem stand ist.
Mit folgendem Kommando aktualisieren wir die Paketliste:

apt-get update

Nun können wir die neuen Pakete herunterladen und installieren:

apt-get upgrade

2. Root Login deaktivieren
Wenn wir dem potenziellem Angreifer verbieten, sich via SSH mit dem Benutzername „root“ anzumelden, haben wir schon mal eine mögliche Angriffsstelle weniger.

Dazu öffnen wir die „/etc/ssh/sshd_config“ darin ändern wir folgende Konfigurationsvariable:

PermitRootLogin yes

zu

PermitRootLogin no

3. Ports verlegen
Wenn Ports verlegt werden, kann ein Angreifer nicht mehr von außen auf Dienste zugreifen. Falls bereits ein Mailserver läuft, sollte man aber allen User vorher mitteilen, das der Port geändert wird, ansonsten liefert der Server keine Mails mehr aus.

Die Konfigurationsdateien befinden sich unter „/etc/“ im entsprechenden Programmverzeichnis (je nach dem welches Programm, oder welcher Dienst, können die Pfade und Dateinamen abweichen).

Tipp: Je höher der Port, desto schwerer ist es ihn durch einen Portscanner zu erreichen.

4. PHP
Es gibt viele Möglichkeiten PHP abzusichern. Erst einmal sollten alle Sicherheitskritischen Funktionen deaktiviert werden, dazu muss die PHP.ini in „/var/php5/“ geöffnet werden. Folgende Parameter sollten gesetzt werden:

disable_functions = show_source, exec, shell_exec
allow_url_fopen = Off
register_globals = Off

5. Log Files überprüfen
Die Log Files sollten hauptsächlich auf Fehler und Schlagartige Zugriffsänderungen überprüft werden (letzteres kann oft auf einen Angriff zurückzuführen sein). Zu finden sind diese unter „/var/log/“

5. Mai 2010

JavaScript und str_replace()

5. Mai 2010 - Geschrieben von Martin - Keine Kommentare

Unter JavaScript gibt es leider keine so tolle str_replace() Funktion wie unter PHP. Hier das JavaScript Pendant dazu:

// hier unser Text
string = 'Test and Test';
// nun ersetzen wir es
new = string.split('and').join('und');
// und geben das ersetzte aus
document.write(new);

Wer gar nicht mehr von der PHP Funktion str_replace los kommt, kann sich auch seine eigene Funktion schreiben:

function str_replace(search, replace, string) {
  return string.split(search).join(replace);
}
4. Mai 2010

Adobe Premiere Audio und Videospur trennen

4. Mai 2010 - Geschrieben von Martin - 3 Kommentare

Nicht ganz trival ist der Vorgang in Adobe Premiere Pro CS3, wenn man Audio und Videospur unten in der Schnittleiste trennen will. Denn sobald man einen Clip anklickt, werden automatisch Audio und Video Spur markiert, wenn man auf [ENTF] drückt, sind beide weg. Doch es gibt einen ganz einfachen Kniff:

  • Erst die Videospur anklicken
  • Nun einen Rechtsklick darauf machen, sobald sie markiert ist
  • Die Option „Verknüpfung auflösen“ wählen und schon sind die beiden getrennt

Nun können beide Spuren beliebig verschoben werden. Allerdings hab ich noch keine Möglichkeit gefunden, die Audiospur nachträglich zuzuschneiden, egal ob mit der Rasierklinge oder via Drag’n’Drop, keines der beiden will klappen.

Kleiner Tipp, wenn sich die frisch getrennte Audio Spur nicht lösen lassen will, einfach die kleine Markierauswahl darüber aufziehen.

Windows – kleiner Trick für mehr Leistung am Notebook

1. Mai 2010 - Geschrieben von Martin - 3 Kommentare

Heute ein kleiner aber feiner Trick, der egal ob am Notebook oder am Netbook unter Umständen eine Rapide Leistungssteigerung ermöglichen kann. Denn viele wissen gar nicht, was sich hinter dem kleinen Akku Symbol (Trayicon) in der Taskleiste verbirgt. Und zwar öffnet sich beim klick darauf ein Fenster, in dem man die Aktuelle Leistungseinstellung festlegen kann. In der Regel steht diese auf „Ausalanciert“, was auch für den Akku Betrieb ganz Akzeptabel ist, benötigt man aber am Schreibtisch mehr Power, so kann man dieses ganz leicht auf „Höchstleistung“ umschalten, und vòila, der CPU wird nicht mehr Untertourig betrieben, das WLAN funkt angemessen stark und die Festplatten reagieren schneller denn je.

Windows Energiesparplan


Wer seninen ganz individuellen Energiesparplan erstellen will, kann dieses mit ein paar Grundgelegenen Kenntnissen über die Schaltfläche „Erweiterte Energieoptionen“ tun.

23. April 2010

PHP – Mail Domains ausschließen

23. April 2010 - Geschrieben von Martin - 10 Kommentare

Gestern war es wiedermal so weit, einige User hatten sich bei Resigame mit feigen Müll Mail Adressen angemeldet. Aber damit ist jetzt Schluss, ich hab die Registrierung gegen diese Mail Adressen abgesichert. Mit folgendem RegEx bin ich vorgegangen:

  // hier die Mail Adresse, welche idR via Formular übergeben wird
  $mail = 'haha@mülldomain.tld';
  // hier können beliebig viele Mail Domains eingetragen werden
  $trash = array('müllmaildomain.tld', 'nochsoeine.tld');
  // nun durchlaufen wir alle Domains
  foreach($trash as $var)
  {
    // wenn die Adresse in die Vorlage passt
    // stirbt das Script und es wird ein Fehler ausgegeben
    if(preg_match('/([a-zA-Z0-9._-])*@'.$var.'/', $mail))
    {
      die('BLOCKED MAIL DOMAIN!');
    }
  }

Das wäre es dann auch schon. Der Array könnte auch aus einer Datenbank befüllt werden, aber das sollte jeder selbst hinbekommen.