Debian MozillaSync

Aus Wiki
Zur Navigation springen Zur Suche springen

Allgemein

Mozilla-Sync.png

Mittels Mozilla Firefox Sync Addon (https://addons.mozilla.org/de/firefox/addon/10868/) und dem hier vorgestellten Mozilla Syncserver (Weave) kann auf elegante und sichere Art und Weise (https-Übertragung) die Bookmarks, History, Passwörter und geöffnete Tabs synchronisiert werden. Mozilla Firefox Sync wird fester Bestandteil des kommenden Firefox 4.0 sein. Es muss dann kein Plugin mehr installiert werden.

Der komplette Syncserver Weave besteht aus zwei Teilen. Der Sync-Server kümmert sich um die Synchronisation der Firefox-Daten. Der Reg-server kümmert sich um die User authorisierung. Sämtliche Sync- und Userdaten werden verschlüsselt in einer MySQL-Datenbank abgelegt. Die Syncdaten werden mit Hilfe einer Passphrase, die der User beim Anlegen seines Account vergibt, verschlüsselt. Die Userpasswörter werden mittels SHA-256 Verschlüsselung abgelgt. Der für diese Verschlüsselung nötige SALT (Passphrase) wird vom Serveradmin im Rahmen der Konfiguration festgelgt.

Das Anlegen eines neuen Accounts, Änderung des Passwortes usw. wird komplett vom Client Sync-Plugin erledigt. Nach der Serverinstallation ist keinerlei Eingriff diesbezüglich am Server erforderlich.

Voraussetzung:


Installation

Download

Download Verzeichnis erstellen und downloaden:

mkdir /usr/local/src/mozilla_sync
cd /usr/local/src/mozilla_sync
wget http://hg.mozilla.org/services/sync-server/archive/fc6beddf7e61.tar.gz -O sync-server.tar.gz
wget http://hg.mozilla.org/services/reg-server/archive/0a3be81af7cc.tar.gz -O reg-server.tar.gz

entpacken:

tar -xvf sync-server.tar.gz
tar -xvf reg-server.tar.gz

Verschieben auf den Webserver und Rechte anpassen:

mkdir /var/www/weave
mv sync-server-fc6beddf7e61 /var/www/weave/sync-server
mv reg-server-0a3be81af7cc /var/www/weave/reg-server
chown -R root:www-data /var/www/weave


MySQL-Datenbank anlegen:

Datenbank und User anlegen:

mysql -u root -p

Passwort sql_root_pwd eingeben, wenn danach gefragt wird. Dann folgende Befehle eingeben (mozillasync_pwd mit dem gew. Datenbank Passwort ersetzen):

CREATE DATABASE weave;
GRANT ALL PRIVILEGES ON weave.* TO weave@localhost IDENTIFIED BY 'mozillasync_pwd';
exit

SQL-Template angelegen, das anschließend die nötigen Tabellen in der SQL Datenbank erzeugt.

vi weave.sql

Folgende Zeilen einfügen:

CREATE TABLE `users` (
  id int(11) NOT NULL PRIMARY KEY auto_increment,
  username varbinary(32) NOT NULL,
  password_hash varbinary(128) default NULL,
  email varbinary(64) default NULL,
  status tinyint(4) default '1',
  alert text,
  reset varchar(32),
  reset_expiration datetime
) ENGINE=InnoDB;

CREATE TABLE `collections` (
  `userid` int(11) NOT NULL,
  `collectionid` smallint(6) NOT NULL,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY  (`userid`,`collectionid`),
  KEY `nameindex` (`userid`,`name`)
) ENGINE=InnoDB;

CREATE TABLE `wbo` (
  `username` int(11) NOT NULL,
  `collection` smallint(6) NOT NULL default '0',
  `id` varbinary(64) NOT NULL default '',
  `parentid` varbinary(64) default NULL,
  `predecessorid` varbinary(64) default NULL,
  `sortindex` int(11) default NULL,
  `modified` bigint(20) default NULL,
  `payload` longtext,
  `payload_size` int(11) default NULL,
  PRIMARY KEY  (`username`,`collection`,`id`),
  KEY `parentindex` (`username`,`collection`,`parentid`),
  KEY `modified` (`username`,`collection`,`modified`),
  KEY `weightindex` (`username`,`collection`,`sortindex`),
  KEY `predecessorindex` (`username`,`collection`,`predecessorid`),
  KEY `size_index` (`username`,`payload_size`)
) ENGINE=InnoDB; 

Datenbank Template importieren (sql_root_pwd erforderlich):

 mysql -u root -p weave <weave.sql


Konfiguration

Reg-Server:

cd /var/www/weave/reg-server/1.0
cp weave_user_constants.php.dist weave_user_constants.php
vi weave_user_constants.php

Nach "# ***** END LICENSE BLOCK *****" folgende Zeilen einfügen und mozillasync_pwd mit dem beim Erstellen der Datenbank angegebenem Datenbank Passwort ersetzen:

define('WEAVE_AUTH_ENGINE', 'mysql');
define('WEAVE_MYSQL_AUTH_PASS', mozillasync_pwd);
define('WEAVE_SHA_SALT', 'Weave_Salt');
Warning.png Achtung:

Für den Parameter WEAVE_SHA_SALT eine beliebige sehr lange (mind. 10 Zeichen) Text/Zahlenkombination Weave_Salt eingeben. Dies ist enorm wichtig für die verwendete SHA256-Verschlüsselung


Sync-Server:

cd /var/www/weave/sync-server/1.0
cp default_constants.php.dist default_constants.php
vi default_constants.php

Nach "# ***** END LICENSE BLOCK *****" folgende Zeilen einfügen und mozillasync_pwd mit dem beim Erstellen der Datenbank angegebenem Datenbank Passwort ersetzen:

define('WEAVE_STORAGE_ENGINE', 'mysql');
define('WEAVE_MYSQL_STORE_READ_PASS', mozillasync_pwd);
define('WEAVE_AUTH_ENGINE', 'mysql');
define('WEAVE_MYSQL_AUTH_PASS', mozillasync_pwd);
define('WEAVE_SHA_SALT', 'Weave_Salt');
Bulbgraph.png Hinweis:

Für den Parameter WEAVE_SHA_SALT den selben Weave_Salt eingeben, wie oben beim Reg-Server. Ansonsten kann der Syncserver den User später nicht authentifizieren und die Synchronisation scheitert.


Apache Virtualhost

Da der Zugriff auf den Syncserver über einen Standard Apache Virtualhost erfolgt, wird dieser hier angelegt


HTTP nur lokal

Aus Sicherheitsgründen sollten Sync-Daten nicht per HTTP via Internet übertragen werden. Aus diesem Grund ist folgender beschriebener HTTP-Virtualhost nur aus dem lokalen Netzwerk erreichbar. Dazu wird ein weiterer Port (8000) definiert, auf dem Apache neben Port 80 (HTTP) und 443 (HTTPS) lauschen soll.

vi /etc/apache2/ports.conf

Dieses File folgendermaßen ergänzen:

NameVirtualHost *:80
NameVirtualHost *:8000
Listen 80
Listen 8000

Nun wird der Virtualhost für Port 8000 erstellt:

vi /etc/apache2/sites-enabled/mozilla-sync_http.conf

Folgende Zeilen einfügen:

<VirtualHost *:8000>
   DocumentRoot /var/www/weave
   Alias /1.0      /var/www/weave/sync-server/1.0/index.php
   Alias /user/1.0 /var/www/weave/reg-server/1.0/index.php
   Alias /user/1   /var/www/weave/reg-server/1.0/index.php
   Alias /misc/1.0/captcha_html     /var/www/weave/reg-server/1.0/captcha.php
   Alias /misc/1/captcha_html       /var/www/weave/reg-server/1.0/captcha.php
   Alias /weave-registration-static /var/www/weave/reg-server/1.0/static
   Alias /weave-password-reset      /var/www/weave/reg-server/1.0/forgot_password.php
   CustomLog /var/log/apache2/mozilla-sync/access.log combined
   ErrorLog /var/log/apache2/mozilla-sync/error.log
   DirectoryIndex index.php index.html index.htm
   ServerSignature Off
   <Directory "/var/www/weave/">
      Options Indexes FollowSymLinks
      AllowOverride none
      Order allow,deny
      Allow from 192.168.0.0/255.255.255.0
   </Directory>
</VirtualHost>

Dieser Virtualhost verwendet eigene Access- und Error- Logfiles. Für diese wird ein eigenes Unterverzeichnis angelegt:

mkdir /var/log/apache2/mozilla-sync

Apache neu starten:

/etc/init.d/apache2 restart


HTTPS

vi /etc/apache2/sites-enabled/mozilla-sync_https.conf

Folgende Zeile eingeben (den ServerName mozillasync.domain.org anpassen):

<VirtualHost *:443>
   SSLEngine On
   SSLCertificateKeyFile /etc/ssl/CA/key/wildcard-key.pem
   SSLCertificateFile    /etc/ssl/CA/certs/wildcard-cert.pem
   ServerName mozillasync.domain.org
   DocumentRoot /var/www/weave
   Alias /1.0      /var/www/weave/sync-server/1.0/index.php
   Alias /user/1.0 /var/www/weave/reg-server/1.0/index.php
   Alias /user/1   /var/www/weave/reg-server/1.0/index.php
   Alias /misc/1.0/captcha_html     /var/www/weave/reg-server/1.0/captcha.php
   Alias /misc/1/captcha_html       /var/www/weave/reg-server/1.0/captcha.php
   Alias /weave-registration-static /var/www/weave/reg-server/1.0/static
   Alias /weave-password-reset      /var/www/weave/reg-server/1.0/forgot_password.php
   CustomLog /var/log/apache2/mozilla-sync/access.log combined
   ErrorLog /var/log/apache2/mozilla-sync/error.log
   DirectoryIndex index.php index.html index.htm
   ServerSignature Off
   <Directory "/var/www/weave/">
      Options Indexes FollowSymLinks
      AllowOverride none
      Order allow,deny
      Allow from all
   </Directory>
</VirtualHost>

Dieser Virtualhost verwendet eigene Access- und Error- Logfiles. Für diese wird ein eigenes Unterverzeichnis angelegt:

mkdir /var/log/apache2/mozilla-sync

Apache neu starten:

/etc/init.d/apache2 restart


PHP Bugfix

Leider enthält die verwendete Reg-Server-Version noch zwei kleine Bugs.

  • Durch diesen Bug wird beim Anlegen eines neuen Accounts ein Fehler generiert.
vi /var/www/weave/reg-server/1.0/captcha.php

In Zeile 58 am Zeilenende ein ; anhängen, sodass diese Zeile korrekterweise so aussieht:

echo '<script>var RecaptchaOptions = {theme: "clean"};</script>;
  • Dieser Bug verhindert das Zusenden des Passwortes per Email.
vi /var/www/weave/reg-server/1.0/templates/forgot_1.php

In Zeile 18 am Zeilenende ein ; anhängen, sodass diese Zeile korrekterweise so aussieht:

echo '<script>var RecaptchaOptions = {theme: "clean"};</script>';


Client Installation und Konfiguration

Installation

Das Firefox-Sync Plugin erstellt automatisch auf dem Server einen Account. Auf dem Server ist dazu keinerlei Aktion erforderlich.

Bulbgraph.png Hinweis:

Damit die spätere Synchronisation mittels HTTPS (falls konfiguriert, siehe oben) funktioniert, muss das Root-CA Zertifikat importiert werden. Details → siehe hier. Es empfiehlt sich dies noch vor der Installation des Plugins durchzuführen. Wurde das Zertifikat nicht in Firefox importiert, dann scheitert die Anmeldung am Server mit der Fehlermeldung "Server konnte nicht erreicht werden."


Das Firefox Sync-Plugin kann von dieser Seite: https://addons.mozilla.org/de/firefox/addon/10868/ heruntergeladen und installiert werden. Mozilla-Sync1.png

  • Den grünen Button + Add to Firefox anklicken
  • Installation bestätigen und anschließend Firefox neu starten, wie vom Plugin Installer gefordert.


Inbetriebnahme und Konfiguration des Plugin

Nach dem Firefox Neustart, öffnet sich automatisch das Fenster Firefox-Sync-Setup. Dieses bietet zwei Auswahlmöglichkeiten: Mozilla-Sync-Menu.png

  • Create a New Account
Mit diesem Punkt wird das Sync-Konto auf dem Server erstellt und der Client eingerichtet.
Mozilla-Sync2.png
Server: use a custom server (Damit oben installierter Weave-Server anstatt des Mozilla Server verwendet wird)
Server-URL (für http): http://IP_DES_SERVER:8000
Server-URL (für https): https://mozillasync.domain.org
E-Mail-Adresse: Mail-Adresse des Users. Fungiert gleichzeitig als Benutzername
Passwort: beliebiges Passwort
Wenn alle nötigen Angaben gemacht sind, Button weiter anklicken


Hier die Passphrase eingeben, die zur Verschlüsselung der Daten (Bookmarks, Passwörter, History, usw.) in der Datenbank verwendet werden soll:
Mozilla-Sync3.png
Mit Button Sync Options können die Synchronisations Einstellungen getroffen werden:
Mozilla-Sync4.png
Die gewünschten Optionen einstellen
Mit Button Done bestätigen
In obigen Privacy ...-Fenster den Button weiter anklicken


  • I have a Firefox Sync Account
Dieser Punkt sollte verwendet werden, wenn auf dem Sync-Server bereits mit dem ersten Punkt (auf einem anderen PC) ein Konto angelegt wurde, um den PC mit diesem Konto zu synchronisieren.
Die Einstellungen analog zu den bei der Erstellung des Accounts eingeben. E-Mail-Adresse, Passwort und Passphrase identisch zu den Angaben bei der Accounterstellung wählen.


Konfiguration ändern

Die Einstellungen des Firefox-Sync-Plugin können jederzeit im Firefox Menü Extras/Sync/Preferences...