Sichere Wiki-Migration: Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
== Der Ist-Zustand des Altsystem == |
== 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. |
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äre die Version 14. |
||
Als Betriebssystem liegt Debian in der Version 6.0.7 vor. |
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. |
Diese Angaben lassen sich auf der Maschine selbst finden. |
||
Das Mediawiki befindet sich in der Version 1.15. |
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. |
Die folgende Tabelle zeigt den Unterbau, das das Mediawiki verwendet. |
||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|- |
||
! Komponente !! Name !! Version |
! Komponente !! Name !! Version !! Aktuell (Stand Oktober 2017) |
||
|- |
|- |
||
| Webserver || Apache || 2.2 |
| Webserver || Apache || 2.2 || 2.4<ref></ref> |
||
|- |
|- |
||
| Datenbank || MySQL || 5.1 |
| 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 |
| Programmiersprache || PHP || 5.3 || 7.1<ref>http://php.net/supported-versions.php</ref> |
||
|} |
|} |
||
Diese Angaben können auf der [[Special:Version|Versionsseite]] des Mediawiki eingesehen werden. |
Diese Angaben können auf der [[Special:Version|Versionsseite]] des Mediawiki eingesehen werden. |
||
Auf dem Mediawiki sind folgende Extensions installiert: |
Auf dem Mediawiki sind folgende Extensions installiert: |
||
* [https://www.mediawiki.org/w/index.php?oldid=2041521 AWC‘s MediaWiki Forum] |
* [https://www.mediawiki.org/w/index.php?oldid=2041521 AWC‘s MediaWiki Forum] (<span style="color: red">veraltet</span>) Alternative: [https://www.mediawiki.org/wiki/Extension:WikiForum WikiForum] |
||
* [https://www.mediawiki.org/wiki/Extension:CategoryTree CategoryTree] |
* [https://www.mediawiki.org/wiki/Extension:CategoryTree CategoryTree] |
||
* [https://www.mediawiki.org/wiki/Extension:Charinsert CharInsert] |
* [https://www.mediawiki.org/wiki/Extension:Charinsert CharInsert] |
||
* [https://www.mediawiki.org/wiki/Extension:Cite Cite] |
* [https://www.mediawiki.org/wiki/Extension:Cite Cite] |
||
* [https://www.mediawiki.org/wiki/Extension:ConfirmEdit ConfirmEdit] |
* [https://www.mediawiki.org/wiki/Extension:ConfirmEdit ConfirmEdit] |
||
* [https://www.mediawiki.org/w/index.php?oldid=676802 FCKeditor] |
* [https://www.mediawiki.org/w/index.php?oldid=676802 FCKeditor] (<span style="color: red">veraltet</span>) Alternative: [https://www.mediawiki.org/wiki/Extension:WikiEditor WikiEditor] |
||
* [https://www.mediawiki.org/wiki/Extension:Gadgets Gadgets] |
* [https://www.mediawiki.org/wiki/Extension:Gadgets Gadgets] |
||
* [https://www.mediawiki.org/wiki/Extension:Nuke Nuke] |
* [https://www.mediawiki.org/wiki/Extension:Nuke Nuke] |
||
* [https://www.mediawiki.org/wiki/Extension:Math Math] |
* [https://www.mediawiki.org/wiki/Extension:Math Math] |
||
* [https://www.mediawiki.org/wiki/Extension:ParserFunctions ParserFunctions] |
* [https://www.mediawiki.org/wiki/Extension:ParserFunctions ParserFunctions] |
||
* [https://www.mediawiki.org/wiki/Extension:Preloader Preloader] |
* [https://www.mediawiki.org/wiki/Extension:Preloader Preloader] (<span style="color: red">veraltet</span>) Alternative: Keine |
||
* [https://www.mediawiki.org/wiki/Extension:Renameuser RenameUser] |
* [https://www.mediawiki.org/wiki/Extension:Renameuser RenameUser] |
||
* [https://www.mediawiki.org/wiki/Extension:StringFunctions StringFunctions] |
* [https://www.mediawiki.org/wiki/Extension:StringFunctions StringFunctions] (<span style="color: red">veraltet</span>) Alternative: [https://www.mediawiki.org/wiki/Extension:ParserFunctions ParserFunctions] |
||
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight SyntaxHighlighting (GeSHi)] |
* [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight SyntaxHighlighting (GeSHi)] |
||
* [https://www.mediawiki.org/wiki/Extension:UserMerge User Merge and Delete] |
* [https://www.mediawiki.org/wiki/Extension:UserMerge User Merge and Delete] |
||
== |
== Migration == |
||
Dieser Bereich dient zum Vergleich zu [[Der Ist-Zustand des Altsystem|obigen Abschnitt]] |
|||
=== Vorbereitung === |
|||
=== Durchführung (Grob) === |
|||
== Aufgaben == |
== Aufgaben == |
Revision as of 20:58, 16 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ä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:
- AWC‘s MediaWiki Forum (veraltet) Alternative: WikiForum
- CategoryTree
- CharInsert
- Cite
- ConfirmEdit
- FCKeditor (veraltet) Alternative: WikiEditor
- Gadgets
- Nuke
- Math
- ParserFunctions
- Preloader (veraltet) Alternative: Keine
- RenameUser
- StringFunctions (veraltet) Alternative: ParserFunctions
- SyntaxHighlighting (GeSHi)
- User Merge and Delete
Migration
Vorbereitung
Durchführung (Grob)
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.