Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Joomla! von Anja Ebersbach, Markus Glaser, Radovan Kubani
Das Handbuch für Einsteiger
Buch: Joomla!

Joomla!
496 S., mit CD, 29,90 Euro
Galileo Computing
ISBN 3-89842-632-7
gp Kapitel 18 Systemwartung
  gp 18.1 Aktualisieren
    gp 18.1.1 Update
    gp 18.1.2 Upgrade
  gp 18.2 Backup der Daten
    gp 18.2.1 Manuelles Backup
    gp 18.2.2 Die Backup-Komponente
  gp 18.3 Deinstallation
  gp 18.4 Seitenumzug
  gp 18.5 Statischer Export
  gp 18.6 Sicherheit
    gp 18.6.1 SQL Injection
    gp 18.6.2 Parametermanipulation
    gp 18.6.3 Cross Site Scripting (XSS)
    gp 18.6.4 Man in the Middle
    gp 18.6.5 Vorbeugende Maßnahmen
  gp 18.7 Spamvorbeugung


Galileo Computing

18.6 Sicherheit  downtop

Sobald Ihr Rechner mit dem Internet verbunden ist, müssen Sie damit rechnen, dass ungebetene Gäste versuchen, sich an Ihren Daten zu vergreifen. Dabei handelt es sich in den wenigsten Fällen um echte Hacker oder Cracker, sondern vielmehr um so genannte Scriptkiddies, die irgendwo im Netz eine Anleitung gefunden haben, wie man in ein System eindringt und das jetzt ausprobieren wollen. Ziele eines Angriffs kann man bei Webseiten generell auf drei Ebenen festmachen:

gp  Seiteninhalt. Es wird versucht, den Inhalt einer Homepage zu verändern und eigene Botschaften einzuschleusen.
gp  Software. Das Programm, das eine dynamische Seite steuert, wird vom Missetäter verändert.
gp  Rechner. Es wird versucht, über die Software den Rechner, auf dem die Webapplikation läuft, unter Kontrolle zu bringen. Diese Art von Angriff ist die gefährlichste. Falls sie erfolgreich ist, kann der Angreifer Ihren Computer weit reichend ändern und als Basis für weitere Angriffe auf andere Computer nutzen.

Absolute Sicherheit vor Angriffen wird man niemals garantieren können. Es gibt jedoch eine Reihe von Maßnahmen, um das Risiko zu minimieren. Die wichtigste ist: Halten Sie Ihre Software, also Webserver, PHP, MySQL und Joomla! auf dem neuesten Stand. Wie man Joomla! updaten kann, wird weiter oben in diesem Kapitel beschrieben. Verfolgen Sie dazu auch die Nachrichten-Ticker auf www.joomla.org bzw. www.mamboserver.com.

Das Einfallstor für Angreifer ist in webbasierten Applikationen immer die Kommunikation zwischen Browser und Server. Dabei kann man einige häufige Angriffstypen unterscheiden.


Galileo Computing

18.6.1 SQL Injection  downtop

Nehmen wir an, Sie verwenden ein Login-Formular, das die Authentifizierung mittels einer Datenbankabfrage durchführt. Der PHP-Code sieht folgendermaßen aus:

$query = "SELECT * FROM users WHERE username = '"
        .$_POST['username'].'"';
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) $auth = true
else $auth = false;

Es wird also in der Datenbank nachgesehen, ob der Username existiert. Ist das der Fall, wird eine Variable $auth, die den Autorisierungsstatus festlegt, so gesetzt, dass der Zugriff gewährt wird. Stellen Sie sich nun vor, Sie sind ein bösartiger Angreifer. Natürlich geben Sie keinen gültigen Usernamen ein, da Sie ihn ja nicht kennen. Da Sie findig sind, versuchen Sie, das SQL-Statement zu manipulieren. Sie geben also diese Zeichen ein:

nix' OR '' = '

Wenn das SQL-Statement nun zusammengesetzt wird, so wird diese Abfrage gestartet:

SELECT * FROM users WHERE username = 'nix' OR '' = ''

Da die zweite Bedingung in der WHERE-Klausel immer wahr ist, werden wir im System angemeldet.

Ein ähnlich gelagerter Fall ist die so genannte »Command Injection«, die möglich ist, wenn das Skript auf dem Server beispielsweise mittels exec ein Betriebssystemkommando ausführt, das direkt Parameter aus den übergebenen Formulardaten übernimmt.

Um solche Angriffe zu verhindern, müssen Sie bei der Programmierung sorgfältig darauf achten, dass die übergebenen Daten auch wirklich dem entsprechen, was erwartet wird, und auf keinen Fall SQL-Statements oder Kommandos enthalten.


Galileo Computing

18.6.2 Parametermanipulation  downtop

Diese Art des Angriffs macht sich ungeschützte Parameter einer Seitenabfrage zunutze. Die Gefahr geht dabei davon aus, dass Daten, die sicherheitsrelevant sind, in diesen Parametern gespeichert werden, oft aus dem falschen Glauben heraus, dass man diese nicht manipulieren könnte. Zwei Beispiele, die so schon vorgekommen sein sollen, mögen dies verdeutlichen:

Mittels POST-Parameter

Eine Seite (nicht Joomla!) hatte die Mail-Adresse, an die eine Anfrage gesendet werden sollte, nicht auf dem Server, sondern direkt in ihrem Kontakt-Mail-Formular in einem <hidden>-Feld gespeichert.

<form action="mail.php" method="POST">
   <input type="hidden" name="an" value="admin@seite.de">

Dies wurde von einem findigen Spammer ausgenutzt, der die Adresse aus diesem Feld einfach austauschte und so eine Menge unerwünschter E-Mails über diese Seite – und deren Namen – verschickte.

Mittels Cookie

Eine andere Seite hatte zur Erleichterung der Kommunikation die Zugriffsparameter des Nutzers in einem Cookie auf seinem Rechner gespeichert. Das sah in etwa so aus:

Cookie: admin=no; time=10:00;

Es wurden also der Adminstatus und der letzte Zugriff (zur Sicherheit) protokolliert. Cookies sind allerdings nur Textdateien auf dem Computer. Ein nachfolgender schlitzohriger Benutzer änderte also einfach die beiden Werte in

Cookie: admin=yes; time=13:00;

und schon hatte er Zugriff auf die Seite. Und das auch noch mit Administratorrechten!

Eine mögliche Lösung für Probleme dieser Art ist, alle sicherheitsrelevanten Daten auf dem Server mittels Sessions zu verwalten, die auf jeden Fall sicherer sind als die vorgestellten Methoden.


Galileo Computing

18.6.3 Cross Site Scripting (XSS)  downtop

Mit dieser Methode wird weniger der Webseite selbst als vielmehr ihren Usern geschadet. Der Angreifer versucht, bösartigen Code, beispielsweise in JavaScript, auf der Seite zu platzieren, der den User dann dazu bringt, Daten preiszugeben oder eine bestimmte Seite aufzurufen. Sehen wir uns das einmal genauer an. Der bösartige Code soll nur ein Hinweisfenster sein:

<script>alert ("Ich bin böse")</script>

Ein Angreifer hat zwei grundlegende Möglichkeiten, diesen Code zu platzieren. Erstens kann er versuchen, ihn in Foren, Gästebücher, Seiteninhalte etc. einzuschleusen, zu denen er Zugriff hat. Ruft der nichts ahnende User eine dieser Seiten auf, wird der Code ausgeführt.

Zweitens kann der Code über eine URL eingeschleust werden. Häufig werden Usereingaben beispielsweise auf Bestätigungsseiten noch einmal ausgegeben. Der Angreifer kann nun eben so eine URL auf der Seite platzieren. In Joomla! werden beispielsweise Rückmeldungen an den Benutzer auf diese Weise erzeugt. Keine Angst, Joomla! filtert hier bösartigen Code. Der Mechanismus kann dennoch benutzt werden, um den Besucher übel zu beschimpfen:

http://localhost/joomla/index.php?mosmsg=Sie+sind+wohl+doof

Wird diese URL aufgerufen, so steht über dem Content-Bereich »Sie sind wohl doof«.

Die Gegenmaßnahme ist auch hier wieder die sinnvolle Filterung der Eingaben. Lassen Sie auf keinen Fall <script>-Tags in irgendwelchen Foren zu!


Galileo Computing

18.6.4 Man in the Middle  downtop

Eine Gefahr für die sichere Kommunikation zwischen Client und Server stellt immer der Mitleser dar, der sich zwischen die beiden stellt und die Botschaften, die ausgetauscht werden, abhört und unter Umständen manipuliert. Aufgrund der Natur des Internets kann man diese Mithörer nie ausschließen, da die Informationspakete auf dem Weg zwischen den beiden Endpunkten über viele Computer laufen.

Dies verdient insbesondere deshalb unsere Aufmerksamkeit, weil Zugangsdaten wie Passwörter zwar im Browserfenster maskiert werden, bei der Übertragung jedoch im Klartext gesendet werden. Ein Mitleser kann sie also sehr leicht abfangen und für seine Zwecke missbrauchen.

Die einzig sichere Variante, diesem Problem zu entkommen, ist, eine verschlüsselte Verbindung zu verwenden. Dies ist über das HTTPS-Protokoll möglich. Um wirklich sicherzugehen, benötigen Sie dafür allerdings eine feste IP-Adresse und ein Vertrauenszertifikat. Das ist durchaus mit einigen Kosten verbunden.


Hinweis: Das HTTPS-Protokoll wurde bisher von Joomla! nicht unterstützt. Es wird aber – soweit Ihr Server sie anbietet – ab Joomla! Version 1.1. ins System integriert werden.


Galileo Computing

18.6.5 Vorbeugende Maßnahmen  toptop

Viele der besprochenen Sicherheitsprobleme lassen sich leider nur durch eine saubere Programmierung beheben. Selbst da können sich noch Fehler einschleichen. Daher möchten wir Sie an dieser Stelle nochmals ermuntern, immer die neuesten Updates einzuspielen, besonders, wenn diese als sicherheitskritisch eingestuft werden.

Es gibt eine Komponente, die Ihnen hilft, Ihre Systemumgebung auf Sicherheitslücken zu testen: Mambo Security Check. Leider läuft diese Erweiterung nur mit PHP 4, eine Portierung auf PHP 5 wurde in Aussicht gestellt.


Tipp: Wenn Sie XAMPP zum Testen verwenden, wird standardmäßig PHP 5 eingesetzt. Wir können aber relativ leicht auf PHP 4 umschalten. Stoppen Sie dazu zunächst den Apache-Webserver über das Control Panel. Jetzt führen Sie mit einem Doppelklick die Datei php-switch.bat im XAMPP-Verzeichnis aus. In einem Auswahl-Dialog werden Sie gebeten, die Umstellung mit einer 4 zu bestätigen. Dann wird die Version umgestellt, und Sie können Apache wieder starten und die Arbeit fortsetzen.


Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 18.2   Der Mambo Security Check


Sie finden die Erweiterung auf der CD im Verzeichnis Erweiterungen/Security_ Check. Installieren Sie die Datei com_securitycheck_v095.zip im Backend als Komponente. Im Menü Components · Mambo Security Check finden Sie die beiden Unterpunkte Check Environment, mit dem die Systemumgebung überprüft wird, und Check FileSystem, das die Dateiberechtigungen durchgeht. Die Überprüfung starten Sie jeweils mit dem Scan-Button.

Wie Sie aus der Überprüfung des Dateisystems schon folgern können, sind falsch gesetzte Zugriffsberechtigungen ein mögliches Sicherheitsrisiko. Nun ist es so, dass einige Dateien und Verzeichnisse von Joomla! beschreibbar sein müssen. Eine Liste dieser Verzeichnisse finden Sie in Kapitel 2, Installation. Die anderen Verzeichnisse sollten nur von Ihnen beschreibbar sein, so dass Sie die Rechte mit dem Befehl chmod auf 755 für Verzeichnisse und 644 für Dateien setzen sollten. Damit können die Files von allen gelesen, aber nur vom Besitzer geändert werden. Die Berechtigungen können Sie sehr einfach mit dem Joomla!-Explorer setzen.

Darüber hinaus können Sie über diverse Maßnahmen verhindern, dass ungebetene Gäste auf Ihren Seiten Bearbeitungen vornehmen können. Da dies auch im Zusammenhang mit Spam interessant ist, verweisen wir Sie dazu auf das folgende den folgenden Abschnitt.

 << zurück
  
  Zum Katalog
Zum Katalog: Joomla!
Joomla!
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Joomla! 1.5 für Einsteiger






 NEU: Joomla! 1.5 -
 für Einsteiger


Zum Katalog: Einstieg in Joomla! - Das Video-Training






 Einstieg in Joomla! -
 Das Video-Training


Zum Katalog: CSS-Layouts






 CSS-Layouts


Zum Katalog: Webseiten erstellen für Einsteiger






 Webseiten erstellen
 für Einsteiger


Zum Katalog: Suchmaschinen-Optimierung für Webentwickler






 Suchmaschinen-Optimierung
 für Webentwickler


Zum Katalog: Professionelles Webdesign mit (X)HTML und CSS






 Professionelles Webdesign
 mit (X)HTML und CSS


Zum Katalog: Einstieg in osCommerce/xt:Commerce






 Einstieg in
 osCommerce/xt:Commerce


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de