Fais ton propre miroir Wikileaks \o/

Si tu habites sur cette planète, tu n'es pas sans savoir que Wikileaks a dévoilé par le passé et encore maintenant tout un tas d'informations qui n'étaient pas supposées arriver jusqu'au oreille du public, les dernières en date étant les fameux câbles diplomatiques américains qui sont en train de mettre une belle grouille planétaire. Or, il se trouve que notre cher gouvernement veut faire fermer sa gueule à ces fauteurs de trouble, ces dangereux terroristes, ces immondes chiens galeux, qui te permettent de découvrir la vérité sur tout un tas de sujet.

Et si personne n'en veut, il faut pourtant bien qu'il existe, il faut démontrer au monde entier qu'on ne plaisante pas avec ce genre de choses et qu'on ne peut pas museler un site de cette importance impunément. Je te propose donc, puisque tu n'as probablement pas grand chose à faire ce dimanche, de créer ton propre miroir de Wikileaks et permettre ainsi que ce dernier soit virtuellement ineffaçable. Au moins, ça t'occupera entre deux hentaïs.

Histoire de faire du ludique en prime (j'aime bien le ludique), je te propose de réaliser un chroot rsync avec accès HTTP directement sur ton serveur. Les prérequis pour faire un miroir Wikileaks son simple :

  • Une machine Unix (en l'occurence, je vais te montrer comme faire avec un Linux faut de mieux…) ;
  • un serveur HTTP (n'importe lequel devrait faire l'affaire) ;
  • un accès SSH ;
  • du rsync ;
  • environ 2Gio d'espace disque ;
  • une paire de testicules (Mesdames, je vous propose d'utiliser des testicules virtuelles ou d'emprunter celles de votre mâle dominant).

This time, it's fucking serious !

Couilles molles, s'abstenir ! Réaliser ce genre d'opérations est périlleux non seulement pour ton système mais aussi pour la connexion Internet qui le supporte. Tu pourras pas dire que t'es pas prévenu.

On va commencer par vérifier qu'on a bien un serveur Web et un OpenSSH des familles qui marchent tous les deux correctement et qui sont accessibles sur Internet (en IPv4 ou v6, les deux sont acceptés). Il faut également rsync sur le serveur (la plupart des distribs l'ont par défaut) et le petit script setup-chrootdir-rsync.sh que l'on peut trouver dans le paquet libpam-chroot ou quelque chose du genre dans la plupart des distribs (ce n'est pas indispensable, mais ça aide).

On commence donc par créer l'utilisateur qui va bien et on y adjoint la clé RSA de Wikileaks :

# useradd --user-group -m --shell /bin/bash wikileaks
# su - wikileaks
$ mkdir .ssh
$ wget http://46.59.1.2/id_rsa.pub -O ~/.ssh/authorized_keys
$ mkdir www
$ exit

L'utilisateur est prêt, il ne reste plus qu'à contrôler que le répertoire www dans son home directory est bien accessible par tout le monde (y compris Apache donc, c'est un peu le but de l'opération). On va donc s'attaquer au serveur OpenSSH. Je présuppose que l'authentification par clé est activée (c'est en général, mais pas toujours, le cas). On ajoute donc simplement quelques lignes en fin de fichier sshd_config :

atch User wikileaks
	ChrootDirectory %h\
	X11Forwarding no\
	AllowTcpForwarding no\

aintenant que wikileaks est chrooté dans son répertoire personnel, l'accès au serveur va être extrêmement limité. D'autant plus que pour que le chroot fonctionne au niveau de SSH, il va falloir ajouter une petite subtilité :

# chown root.root /home/wikileaks/

Sinon, OpenSSH refusera de chrooter quoique ce soit ! Alors, c'est bien joli tout ça, mais maintenant si on essaye de se connecter avec l'utilisateur wikileaks, on obtient donc une magnifique erreur :

/bin/bash : no such file or directory

Ce qui est logique vu que le shell de l'utilisateur n'existe pas dans le chroot (en l'occurence son homedir). C'est là qu'intervient setup-chrootdir-rsync.sh qui va peupler l'ensemble de ce répertoire avec toutes les données nécessaires pour faire tout marcher correctement (si tu ne le trouves pas sur ta distrib, tu dois pouvoir le télécharger sans difficulté sur Internet). Il te suffit alors de le rendre exécutable et de donner le nom du répertoire du chroot /home/wikileaks en paramètre.

Ce petit script fait l'essentiel du boulot, toutefois, comme il commence à dater un peu, il va manquer quelques petites bricoles pour que tout fonctionne bien. D'abord, sur les machines non-i386 (x86_64/ppc/ppc64/etc…), le script ne copie pas le programme de chargement de tous les programmes ld-linux. Il suffit le regarder la dernière ligne de la commande ldd pour savoir quel est ce programme :

$ ldd /bin/bash
	linux-vdso.so.1 =>  (0x00007fff25bff000)\
	libreadline.so.6 => /lib/libreadline.so.6 (0x00007fb8c8596000)\
	libncursesw.so.5 => /lib/libncursesw.so.5 (0x00007fb8c833c000)\
	libdl.so.2 => /lib/libdl.so.2 (0x00007fb8c8138000)\
	libc.so.6 => /lib/libc.so.6 (0x00007fb8c7ddb000)\
	/lib/ld-linux-x86-64.so.2 (0x00007fb8c87d9000)\

Il faut donc vérifier sa présence dans /home/wikileaks/lib/. Pareil pour rsync, il va sûrement falloir ajouter libattr et libacl pour qu'il fonctionne correctement. La même commande te permettra de vérifier cela et de compléter éventuellement avec les bibliothèques/exécutables qui sont indispensables au fonctionnement de rsync (si tu n'as pas le petit script, il va falloir tout se palucher à la main).

Rien ne vaut un petit test avec ta clé personnelle ou avec un mot de passe (qu'il faudra bien entendu supprimer après) pour être certain que tout va bien, et hop!, il ne te reste maintenant plus qu'à mettre un virtualhost sur ton Apache, d'y associer le répertoire /home/wikileaks/www/ et le tour est joué.

aintenant, pour devenir le sauveteur de la planète et faire chier tous les gouvernements du monde, rend-toi sur cette page pour participer à la super opération de mass mirror de Wikileaks. Il te suffit d'indiquer l'adresse v4 ou v6 du serveur SSH, le nom d'utilisateur, le répertoire en écriture et le nom de domaine (ou à défaut www.wikileaks.org) et de t'ajouter à la liste.

aintenant, aux dirigeants malveillants de cette planète, tous ensemble :