Créez un miroir

Le site wefightcensorship a été spécialement conçu pour être dupliqué sur le principe des sites miroirs. Vous pouvez vous aussi héberger une copie de notre site sur votre serveur et contribuer à combattre la censure dans le monde. Plus les copies seront nombreuses, plus il sera difficile de filtrer et de bloquer wefightcensorship à travers le monde. Afin de faciliter la création de miroirs robustes, nous avons établi une procédure de copie de WeFightCensorship. Cette procédure s’adresse à un public averti qui possède déjà quelques bases en administration de serveur web. Ceux qui connaissent un peu moin bien l’administration de serveurs peuvent également participer et dupliquer notre site à l’aide d’aspirateurs de site tel que httrack.

Procédure de création d'un miroir de wefightcensorship

La procédure décrite dans ce texte permet de créer un miroir secondaire du site wefightcensorship.org sur une machine située n'importe où sur Internet.

Prérequis

Les éléments suivants sont nécessaires :

  1. Une machine type « Unix » assurant la fonction de serveur Web. Le type d'Unix ou la distribution n'est pas contraint. Le serveur Web n'est pas contraint. Il est à la charge de la personne créant le miroir de le configurer.
  2. La machine doit disposer des outils suivants (en plus du serveur web) : rsync et openssh

Dans le cas où vous ne disposez pas de l'ensemble des matériaux identifiés ci-dessus, vous ne devez pas démarrer la procédure.

Mode Opératoire

Prérequis technique

La machine jouant le rôle de serveur web doit être installée et configurée avant de débuter la procédure. Ce document ne décrit pas l'installation et la configuration de ces logiciels (création du virtual host par exemple), ni la création des utilisateurs locaux aux serveurs. Ceci est propre à chaque serveur utilisé.

Les contraintes techniques sont « faibles ». Il est nécessaire d'avoir un serveur web capable de servir du contenu statique (pas d'utilisation de PHP ou d'une base de donnée mysql par exemple).

Il est nécessaire de disposer d'un compte utilisateur pouvant écrire dans l'arborescence du virtualhost. Ce compte fera fonctionner le script de synchronisation des serveurs et doit pouvoir exécuter la commande rsync. Dans les exemples suivants, nous considérons qu'il s'agit du compte nommé www-data.

Principe de fonctionnement de la synchronisation

Les miroirs secondaires sont des serveurs web statiques dont l'objectif est de mettre à disposition des utilisateurs finaux, le contenu du site wefightcensorship.org.

L'arborescence à publier est récupérée auprès d'un miroir primaire par synchronisation rsync. Les miroirs secondaires utilisés doivent être authentifiés sur les miroirs primaires à l'aide d'une clé OpenSSH. Cette clé sers à la fois à l'authentification du miroir secondaire et au chiffrement des flux.

Création des clés d'authentification

Si l'utilisateur www-data ne dispose pas d'une paire de clés OpenSSH, voici les commandes permettant de les créer :

www-data@mirror:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/.ssh/id_rsa):

Validez le chemin par défaut, ou bien choisissez un emplacement ou vous voulez stocker la clé. Si vous modifiez le chemin par défaut ( homedir de l'utilisateur www-data ), vous devez vous assurer qu'OpenSSH pourra accéder les clés. Si besoin, utilisez un agent SSH pour cela.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/www/.ssh/id_rsa.
Your public key has been saved in /var/www/.ssh/id_rsa.pub.
The key fingerprint is:
79:01:ff:20:c5:65:0d:ff:0c:76:9c:db:34:a0:da:3f www-data@mirror
The key's randomart image is:
+--[ RSA 2048]----+
|        ....++   |
|         +....o..|
|        . +.  +o+|
|         oo+ . *+|
|        S....  .+|
|         .  .    |
|             E   |
|              .  |
|                 |
+-----------------+

Déclaration du miroir auprès de WeFightCensorShip.org

Il est nécessaire de demander un accès aux serveurs de synchronisation de WeFightCensorShip.org, et de transmettre la clé publique (et surtout pas privée) lors de votre demande. Pour cela vous devez envoyer un courrier électronique à wefightcensorship [at] rsf.org avec comme objet “création de miroir”. Vous recevrez en retour le script de synchronisation et ses fichiers de configuration associé.

Création de l'arborescence du serveur Web

La création de l'arborescence du serveur web et du virtualhost associé sont de la responsabilité du possesseur du miroir. Celles-ci différent selon les distributions, serveurs web et procédures d'exploitation en vigueur.

Nous considérons pour la suite que l'arborescence est placé sous /var/www/mirror.wefightcensorship.org-443/htdocs. Les adaptations sont possibles et seront à réaliser par l'exploitant du miroir.

Mise en place du script de synchronisation

Suite à la déclaration du miroir auprés de WeFightCensorship.org, trois fichiers vous sont fournis. Le premier est le script de synchronisation, les deux autres sont les fichiers de configuration associés.

Par convention, les fichiers doivent être placés respectivement sous /opt/cybershelter/bin pour le script de synchronisation, et /opt/cybershelter/etc pour les fichiers de configuration. Vous devez vous assurer que le script possède les droits d'exécution par l'utilisateur www-data.

Il est préconisé que la première exécution du script soit manuelle. Ceci afin de diagnostiquer d'éventuels problèmes de configuration. Par la suite, l'execution du script devrait être automatisée à l'aide d'une tâche dans la crontab de l'utilisateur www-data.

Par exemple la crontab suivante peut être utilisée pour une synchronisation une fois par heure.

 www-data@mirror:~$ crontab -l50 * * * * /opt/cybershelter/bin/synchro-miroir-secondaire.sh

Configuration du script de synchronisation

Le script de synchronisation possède deux fichiers de configuration permettant de régler les paramètres utilisés par rsync. Les contenus sont le suivants : 

www-data@mirror:~$ cat /opt/cybershelter/etc/synchro-miroir-secondaire
MIROIR_PRIMAIRE=adresse.du-miroir.fournie
RSYNC_USER=synchro
REMOTE_PATH=/srv/synchro-miroir-secondaire

Ce fichier contient des paramètres définis par WeFightCensorShip.org. Vous ne devez pas les modifier sans risquer de bloquer le fonctionnement du script de synchronisation.

Le premier paramètre est une liste de miroir primaire depuis lesquels vous pouvez vous synchroniser. Cette liste vous est fournie et est pas modifiable. Elle pourra être mise à jour automatique lors des synchronisations.

Le deuxième paramètre est le compte utilisateur à utiliser lors de la synchronisation. Cette valeur vous est fournie et est pas modifiable. Elle pourra être mise à jour automatique lors des synchronisations.

Le troisième paramètre est le chemin sur le serveur distant contenant les fichiers à synchroniser. Cette valeur vous est fournie et est pas modifiable. Elle pourra être mise à jour automatique lors des synchronisations.

www-data@mirror:~$ cat /opt/cybershelter/etc/synchro-miroir-secondaire.local
LOCAL_PATH=/var/www/$(hostname).wefightcensorship.org-443/htdocs

Ce fichier contient la déclaration des variables locales que vous pouvez modifier.

Le premier paramètre est le chemin vers l'arborescence local du site (le contenu du vhost). La valeur doit être ajustée conformément au contenu de la définition du virtual host.

Les nouvelles versions du script de synchronisation et du fichier de configuration sont envoyées lors de la mise à jour du miroir. Les fichiers reçus, et leurs sommes de contrôle MD5, sont disponibles dans le répertoire ${LOCAL_PATH}/synchro.

Le possesseur du miroir peut soit mettre à jour, à la main, les scripts de synchronisation, soit, à l'aide liens symboliques, utiliser automatiquement les fichiers reçus.

Dans ce cas /opt/cybershelter/etc/synchro-miroir-secondaire doit pointer vers ${LOCAL_PATH}/synchro/synchro-miroir-secondaire, et /opt/cybershelter/bin/synchro-miroir-secondaire.sh doit pointer vers ${LOCAL_PATH}/synchro/synchro-miroir-secondaire.sh.

Remarque : Si vous redéclarez une variable présente dans le fichier /opt/cybershelter/etc/synchro-miroir-secondaire, alors sa valeur locale sera prise en compte. Cependant, en faisant cela les mises à jour ne seront plus prises en compte, et le fonctionnement du script de synchronisation peut s'en trouver altéré.