Sichere Wiki-Migration: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
Line 68: Line 68:


Für die Bilder ist das durchzuführen.
Für die Bilder ist das durchzuführen.
<syntaxhighlight lang="bash">cd /var/lib/mediawiki # Pfad wo sich das Verzeichnis images befindet.
<syntaxhighlight lang="bash">cd /var/lib/mediawiki # Pfad, wo sich das Verzeichnis images befindet.
tar -czf <Name>.tar.gz images/ # Nicht notwendig, erleichert aber den Transport. Packt die Bilder in ein Archiv.</syntaxhighlight>
tar -czf <Name>.tar.gz images/ # Nicht notwendig, erleichert aber den Transport. Packt die Bilder in ein Archiv.</syntaxhighlight>


Line 79: Line 79:


In zuk&uuml;nftigen Mediawikis des Lehrstuhls Softwarearchitektur k&ouml;nnten sich Pfade zu den Bildern und der LocalSettings.php &auml;ndern.
In zuk&uuml;nftigen Mediawikis des Lehrstuhls Softwarearchitektur k&ouml;nnten sich Pfade zu den Bildern und der LocalSettings.php &auml;ndern.

=== Gesicherte Bereiche ins neue System einpflegen ===

Die gesicherte Datenbank kann man auf unterschiedlichen Wegen ins neue System einspielen.

Die gesicherten Bilder sind in das images Verzeichnis des neuen System abzulegen.
<syntaxhighlight lang="bash">tar -xzf <Name>.tar.gz /var/www/mediawiki # Entpackung des Archives an dem Ort, wo sich die Bilder, im Normalfall, befinden.</syntaxhighlight>
F&uuml;r das Logo (Bild, welches sich links oben, auf jeder Seite, innerhalb des Wikis, befindet.) muss in der LocalSettings.php der Wert der Variable $wgLogo angepasst werden. Wenn an der Verzeichnisstruktur des Mediawikis keine individuellen Änderungen durchgeführt wurden, würde beispielhaft diese Zeile funktionieren.
<syntaxhighlight lang="php">$wgLogo = “$wgResourceBasePath/images/logo.png“; # $wgResourceBasePath beinhaltet , wenn dieser nicht manuell modifiziert wurde.</syntaxhighlight>

Die LocalSettings.php

=== Konfiguartion Apache ===


=== Installation / Konfiguration der Extensions ===
Es wird vorausgesetzt, dass die Extensions sich bereits im extentions Verzeichnis des Mediawikis befinden.

==== [https://www.mediawiki.org/wiki/Extension:CategoryTree CategoryTree] ====
In der Datei LocalSettings.php muss folgendes hinzugef&uuml;gt werden.
<syntaxhighlight lang="php">wfLoadExtension(‘CategoryTree‘);</syntaxhighlight>
F&uuml;r die Extension [https://www.mediawiki.org/wiki/Extension:CategoryTree CategoryTree] bedarf es keiner Konfiguration.
==== CharInsert ====


==== [https://www.mediawiki.org/wiki/Extension:Cite Cite] ====
In der Datei LocalSettings.php muss folgendes hinzugef&uuml;gt werden.
<syntaxhighlight lang="php">wfLoadExtension(‘Cite‘);</syntaxhighlight>
F&uuml;r die Extension [https://www.mediawiki.org/wiki/Extension:Cite Cite] bedarf es keiner Konfiguration.
==== ConfirmEdit ====
==== [https://www.mediawiki.org/wiki/Extension:Gadgets Gadgets] ====
In der Datei LocalSettings.php muss folgendes hinzugef&uuml;gt werden.
<syntaxhighlight lang="php">wfLoadExtension(‘Gadgets‘);</syntaxhighlight>
F&uuml;r die Extension [https://www.mediawiki.org/wiki/Extension:Gadgets Gadgets] bedarf es keiner Konfiguration.
==== Nuke ====


==== Math ====
==== ParserFunctions ====
==== RenameUser ====
==== SyntaxHighlighting (GeSHi) ====

F&uuml;r die Extension bedarf es keiner Konfiguration.
==== User Merge and Delete ====
==== WikiEditor ====
==== WikiForum ====

=== Absicherung ===


== Aufgaben ==
== Aufgaben ==

Revision as of 17:44, 19 October 2017

Diese Seite erklärt, wie man das Mediawiki des Lehrstuhls Softwarearchitektur erfolgreich migriert. Desweiteren liefert es Techniken, die ein Mediawiki in einigen Bereichen der Sicherheit verbessert.

Der Ist-Zustand des Altsystem

Beim Altsystem handelt es sich um ein TurnKey-Appliance, welches sich für den Einsatz eines Mediawikis spezialisiert ist. Es hat die Version 12. Aktuell w%auml;re die Version 14. Als Betriebssystem liegt Debian in der Version 6.0.7 vor. Aktuell wäre die Version 9. Diese Angaben lassen sich auf der Maschine selbst finden.

Das Mediawiki befindet sich in der Version 1.15. Aktuell wäre zurzeit (Stand Oktober 2017) die Version 1.29<ref></ref>. Die folgende Tabelle zeigt den Unterbau, das das Mediawiki verwendet.

Komponente Name Version Aktuell (Stand Oktober 2017)
Webserver Apache 2.2 2.4<ref></ref>
Datenbank MySQL 5.1 5.7.19<ref>https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-19.html</ref>
Programmiersprache PHP 5.3 7.1<ref>http://php.net/supported-versions.php</ref>

Diese Angaben können auf der Versionsseite des Mediawiki eingesehen werden.

Auf dem Mediawiki sind folgende Extensions installiert:

Migration

Vorbereitung

Für die Migration muss ein neues System bereitsstehen, welches mindestens die folgende Software enthält<ref>https://www.mediawiki.org/wiki/Installation#Summary</ref>:

  • einen Webserver (beispielsweise Apache)
  • PHP
  • einen relationenalen Datenbankserver (z.B. MySQL, MariaDB, PostgreSQL)
  • ein Mediawiki in der gewünschten Version

Das Mediawiki sollte so eingerichtet sein, dass man es über einen Browser aufrufen kann. Das heißt, der Webserver muss das Mediawiki nutzen können.

Desweiteren wäre es von Vorteil, wenn alle Extensions, die benötigt werden bereits heruntergeladen, entpackt und in das extension Verzeichnis des Mediawikis verschoben sind.

Bemerkungen:

Da es sich beim Altsystem um ein Turnkey-Appliance handelt, muss ein neues System bereitgestellt werden. Laut x ist es nämlich nicht zu empfehlen, Softwareupdates innerhalb eines bestehenden Turnkey System durchzuführen.

Bis auf den Extension Teil kann man sich diese Vorarbeit sparen, in dem man die aktuellste Turnkey-Mediawiki-Appliance nutzt.

Das Betriebssystem kann frei gewält werden, solange es für dieses die notwendige Software gibt. Wir haben, aus Interesse, die Migration unter Ubuntu, Debian und OpenSuse durchgeführt. Bei alle den genannten hat es funktioniert.

Was ist auf dem Altsystem zu sichern?

Auf dem Altsystem sind die folgenden drei Bereiche zu sichern und auf dem neuen System zu übertragen:

  • die Datenbank
  • die Bilder (Verzeichnis images)
  • die Datei LocalSettings.php (auch extensions.php, weil LocalSettings.php diese benutzt)

Die Datenbank kann man mit folgendem Kommandozeilenbefehl sichern. (Es kann auch statt root der Datenbankbenutzer, der in der LocalSettings.php steht genommen werden.)

mysql -u root -p --databases <Databasename> > <Name>.sql

Für die Bilder ist das durchzuführen.

cd /var/lib/mediawiki # Pfad, wo sich das Verzeichnis images befindet.
tar -czf <Name>.tar.gz images/ # Nicht notwendig, erleichert aber den Transport. Packt die Bilder in ein Archiv.

Die LocalSettings.php sowie die extensions.php liegen auf dem Pfad.

/etc/mediawiki

Mit welchen Mitteln die Bereiche zum neuen System übertragen werden, ist jedem selbst überlassen. Beispielsweise kann die Übertragung mit Hilfe des Programms Filezilla oder dem Kommadozeilenprogramm scp vollzogen werden.

Bemerkungen:

In zukünftigen Mediawikis des Lehrstuhls Softwarearchitektur könnten sich Pfade zu den Bildern und der LocalSettings.php ändern.

Gesicherte Bereiche ins neue System einpflegen

Die gesicherte Datenbank kann man auf unterschiedlichen Wegen ins neue System einspielen.

Die gesicherten Bilder sind in das images Verzeichnis des neuen System abzulegen.

tar -xzf <Name>.tar.gz /var/www/mediawiki # Entpackung des Archives an dem Ort, wo sich die Bilder, im Normalfall, befinden.

Für das Logo (Bild, welches sich links oben, auf jeder Seite, innerhalb des Wikis, befindet.) muss in der LocalSettings.php der Wert der Variable $wgLogo angepasst werden. Wenn an der Verzeichnisstruktur des Mediawikis keine individuellen Änderungen durchgeführt wurden, würde beispielhaft diese Zeile funktionieren.

$wgLogo = $wgResourceBasePath/images/logo.png“; # $wgResourceBasePath beinhaltet , wenn dieser nicht manuell modifiziert wurde.

Die LocalSettings.php

Konfiguartion Apache

Installation / Konfiguration der Extensions

Es wird vorausgesetzt, dass die Extensions sich bereits im extentions Verzeichnis des Mediawikis befinden.

CategoryTree

In der Datei LocalSettings.php muss folgendes hinzugefügt werden.

wfLoadExtension(‘CategoryTree‘);

Für die Extension CategoryTree bedarf es keiner Konfiguration.

CharInsert

Cite

In der Datei LocalSettings.php muss folgendes hinzugefügt werden.

wfLoadExtension(‘Cite‘);

Für die Extension Cite bedarf es keiner Konfiguration.

ConfirmEdit

Gadgets

In der Datei LocalSettings.php muss folgendes hinzugefügt werden.

wfLoadExtension(‘Gadgets‘);

Für die Extension Gadgets bedarf es keiner Konfiguration.

Nuke

Math

ParserFunctions

RenameUser

SyntaxHighlighting (GeSHi)

Für die Extension bedarf es keiner Konfiguration.

User Merge and Delete

WikiEditor

WikiForum

Absicherung

Aufgaben

Mediawiki aktualisieren Erstellung einer Auswahl von Zusatzpaketen Sichere Konfiguration bezüglich Spam und Nutzerverwaltung

Unsere Ziele

Primär geht es darum, das Mediawiki zu aktualisieren, nach nützlichen Zusatzpaketen zu recherchieren und eine sichere Konfiguartion gegen Spam zu finden.

Die Aktualisierung des Mediawikis hat den Grund, dass das System schwer zu pflegen ist. Außerdem besteht, aufgrund der Tatsache, dass das Mediawiki sich in einer nicht mehr vom Entwickler gepflegten Version befindet, die Gefahr, das es bekannte Sicherheitslücken, welche nicht behandelt wurden, das Mediawiki gefährden.

Die Recherche nach nützlichen Zusatzpaketen dient zur Verbesserung der Benutzerfreundlichkeit.

Das Finden einer sicheren Konfiguration gegen Spam hat den Grund, dass in der Vergangenheit auf dem Mediawiki Spam ein Problem darstellt.

Da auch die Komponenten, die

- aktuelle Software % - Migration des Datenbestandes und der Konfiguration % - Beibehalten der Funktionalität % - evtl. Erweiterung bzw. Verbesserung des Systems

Ist-Zustand (Ausgangssituation)

Altsystem

Gegeben ist ein Turnkey-Mediewiki in der Version 12. Auf diesem befindet sich als Betriebsystem Debian 6.0.7. Das Mediawiki liegt in der Version 1.15 vor.

Webserver: Apache 2.2 PHP 5.3 Datenbank: MySQL 5.1 Finden kann man diese Angaben unter Special:Version.

Da Altsystem verwendet folgende Extensions:

  • AWC‘s MediaWiki Forum
  • CategoryTree
  • CharInsert
  • Cite
  • ConfirmEdit
  • FCKeditor
  • Gadgets
  • Nuke
  • Math
  • ParserFunctions
  • Preloader
  • RenameUser
  • StringFunctions
  • SyntaxHighlighting (GeSHi)
  • User Merge and Delete


Relevante Informationen

Laut x ist es nicht empfohlen, Softwareupdates innerhalb auf ein bestehendes Turnkey System durchzuführen. Es empfiehlt gleich eine neue Turnkey-Appliance zu nehmen.

Auf das neue System muss sowohl die Datenbank als auch die Bilder vom Altsystem zur Verfügung gestellt werden.

Die Extensions, die auf dem Altsystem verwendet werden, müssen für das neue System für die entsprechende Mediawiki Version recherchiert werden. Falls welche nicht mehr zu verwenden sind, weil sie als veraltet gelten, dann sind entsprechende Alternativen zu finden. Eine Übertragung der Extensions sei nicht zu empfehlen, da diese von der Version des Mediawikis abhängen und dadurch auf einer neueren Version unter Umständen nicht funktionieren.

Folgende Extentions gelten als veraltet und werden daher nicht mehr gepflegt: AWC‘s MediaWiki Forum FCKeditor Preloader StringFunctions

Mögliche Zielplattformen und Vorgehensweisen

Die Migration wurde auf verschiedenen Plattformen getestet, weil zum Einen ein persönliches Interesse bestand und zum Anderen, weil keine Zielplattform festgelegt wurde.

Auf den folgenden Zielplattformen wurde getestet:

  • aktuelle TurnKey Version
  • Ubuntu
  • Debian
  • OpenSuse

Je nach Zielplattform nutzte man Mediawiki aus den Paketquellen oder die händische Installation. Unter händischer Installation ist gemeint, dass sowohl die Für TurnKey ist bereits das Mediawiki, samt dessen Voraussetzungen vorhanden.

Allgemein

Die Migration erfolgt im Allgemeinen in folgenden Phasen:

  • Die Datenbank und die Bilder, die das Mediawiki verwendet, auf dem Altsystem sichern.
  • Die gesicherte Datenbank und die gesicherten Bilder ins neue System übertragen.
  • Datenbank ins neue System einspielen.
  • Die Bilder in das entsprechende Verzeichnis des neuen Systems ablegen.
  • Die Datei LocalSettings.php auf dem neuen System anpassen (Datenbank, Bilder).
  • Die Datei update.php, die sich im Verzeichnis maintenance befindet, ausführen.
  • Individuelle Konfigurationen aus dem Altsystem auf dem neuen System, wenn möglich, umsetzen.
  • Extension installieren. Wenn nötig konfigurieren und herrunterladen.

Beispielhafter Ablauf

Absicherung

Wenn ein Angreifer das System schädigen will, aus welchen Motiven auch immer, dann würde er versuchen Angriffe durchzuführen, die sich entweder gegen die Datenbank richten, oder direkt den Server betreffen. Angriffe, die den Server betreffen hätten den Zweck, diesen lahm zu legen. Dies würde bedeuten, dass keine Clienten kurzzeitig auf das Mediawiki zugreifen könnten. Ein Angriff gegen die Datenbank wäre die bewusste Fehlmanipulation des Datenbestandes oder die völlige Löschung der Datenbank.

Server

Folgende Ansätze vermeiden die Chance

  • Die Datenbank darf nicht von außen zugreifbar sein.
  • Der verwendete Webserver muss jede PHP-Datei ausführen.
  • Ein vorgeschalteter (D)DoS-Schutz

Mediawiki

Im Mediawiki selbst könnte ein Angreifer für sich einen Account erstellen, um Manipulationen durchzuführen. Oder gleich Anonym. Für die vollständige Löschung benötigt er ein Adminaccount. Aber auch Spambot sind ein Problem.

Sichere Konfiguration für das Mediawiki

Für eine sichere Konfiguration gegen Spam können Extensions helfen.

Ausblick