Une PirateBox permet de créer un réseau sans fil (indépendant de l'Internet), accessible en WiFi (donc par ordinateur, tablette ou téléphone)… sa portée est limitée (réseau adapté à la salle de classe à une médiathèque, bar, événement culturel, etc…)… Ce réseau permet aux personnes qui s'y connectent de télécharger, d'échanger, de partager facilement des fichiers… et ceci sans laisser de traces sur le dispositif.
Avant de vous lancer dans la réalisation de votre PirateBox il faudra savoir utiliser la ligne de commande, le ssh, connaître un petit peu le langage html et avoir quelques rudiments en ftp. Rien d'insurmontable toutefois puisqu'à part la ligne de commande je ne connaissais pas grand chose de plus en commençant.
Toutes les opérations de ce tutoriel sont à réaliser dans l'ordre même si l'ordre on n'aime pas ça.
Coût total de l'affaire 73 euros.
C'est seulement une fois que vous aurez terminé avec ces tutos que vous pourrez passer à la suite de l'opération !
Attention, certaines parties de ces tutoriels comme le téléchargement de l'image raspbian et l'upgrade une fois la distribution installée peuvent prendre énormément de temps.
Par défaut, après l'installation de Raspbian, le compte pi est créé avec pour mot de passe raspberry.
Nous nous en servirons pour notre première connexion ssh.
Au départ, quand on a seulement la Raspbian d'installée on ne peut se connecter qu'à travers le routeur (notre box) et par conséquent il faut un câble ethernet pour relier le raspberry à la box.
Il faut d'abord connaitre l'adresse ethernet du raspberry connecté par un câble à notre box/routeur.
Lancer sur son propre ordinateur la commande nmap
nmap -sP 192.168.1.1/24
(si votre routeur est une Livebox par exemple et 192.168.0.1/24 si c'est une Freebox)
Qui renvoie :
Starting Nmap 6.47 ( http://nmap.org ) at 2016-01-31 09:32 CET .... Nmap scan report for pc61.home (192.168.1.10) Host is up (0.045s latency).
Admettons que “pc61.home,(192.168.1.10) soit notre Raspberypi. Si l'on veut se connecter en ssh sur le “pc61.home,(192.168.1.10)” sur le compte de l'utilisateur “pi” nous lançons la commande ssh
ssh pi@192.168.1.10
Maintenant il faut entrer le mot de passe “raspberry” qui n'apparaita pas et passer à l'étape de modification de notre Raspberrypi par la console.
Dans le tutoriel c'est ici : https://debian-facile.org/doc:materiel:raspberry-pi#modifier-la-configuration-de-son-rpi-par-la-console
Dans notre cas nous avons créé un compte nommé “agenux”. C'est le nom de notre lug.
Pour des raisons de sécurité nous avons modifié le mot de passe de l'utilisateur “pi” une fois le compte root et le compte agenux créés.
Pour installer et paramétrer notre PirateBox nous avons suivi ce tutoriel : http://pirateboxfr.com/tutoriel-sur-raspberry-pi/#
Pour installer les scripts PirateBox nous nous connecterons maintenant en ssh via le réseau filaire avec la commande suivante :
ssh agenux@ip_du_raspberrypi
Notez ici que les manipulations liées au modèle de clef wifi du tutoriel ne sont pas nécessaires pour la clef que nous avons choisie. On est pas teubés à aGeNUx !
Nous ne pouvons malheureusement pas encore nous connecter en ssh via le réseau wifi de la PirateBox. Il faut d'abord régler le problème de l'ordre de démarrage des services qui nous empêche pour l'instant encore de nous connecter à cette satanée machine par son interface wifi !
L'ordre de démarrage des services fait que lighttpd et dnsmasq démarrent avant que la clef wifi soit active. Ceci nous empêche de nous connecter au réseau wifi de la PirateBox alors qu'il est visible. Par conséquent nous ne pouvons pas accéder à la page d'accueil du bidule.
Nous avons décidé de faire un script qui arrête les services lighttpd et dnsmasq et redémarre la PirateBox dès qu'elle est allumée.
Voici le contenu de notre script :
nano /etc/init.d/redemarrer_piratebox
#!/bin/sh ### BEGIN INIT INFO # Provides: redemarrer_piratebox # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: stoppe lighttpd et dnsmasq et relance la piratebox pour que la clef wifi ait le temps de demarrer # Description: This file should be used to construct scripts to be placed in /etc/init.d. # ### END INIT INFO systemctl stop lighttpd && systemctl stop dnsmasq && systemctl restart piratebox exit 0
chmod 755 /etc/init.d/redemarrer_piratebox
update-rc.d redemarrer_piratebox defaults
Au prochain démarrage votre script sera exécuté et vous pourrez vérifier que tout fonctionne bien avec cette commande :
systemctl status --all piratebox
● piratebox.service - LSB: All services around piratebox Loaded: loaded (/etc/init.d/piratebox) Active: active (running) since mer. 2016-01-20 19:22:52 CET; 12s ago Process: 1167 ExecStop=/etc/init.d/piratebox stop (code=exited, status=0/SUCCESS) Process: 1196 ExecStart=/etc/init.d/piratebox start (code=exited, status=0/SUCCESS) CGroup: /system.slice/piratebox.service ├─1246 /usr/sbin/hostapd /opt/piratebox/conf/hostapd.conf ├─1293 /usr/sbin/dnsmasq -x /var/run/piratebox_dnsmasq.pid -C /opt/piratebox/conf/dnsmasq_generated.conf ├─1299 python /opt/piratebox/bin/droopy -d /opt/piratebox/share/Shared -m --chmod 755 8080 ├─1302 /bin/sh /opt/piratebox/bin/shoutbox_stuff.sh /opt/piratebox/www /opt/piratebox/conf/piratebox.conf ├─1304 /bin/sh /opt/piratebox/bin/shoutbox_stuff.sh /opt/piratebox/www /opt/piratebox/conf/piratebox.conf ├─1305 sleep 20 └─1311 /usr/sbin/lighttpd -f /opt/piratebox/conf/lighttpd/lighttpd.conf janv. 20 19:22:51 raspberrypi piratebox[1196]: Setting up wlan0 janv. 20 19:22:52 raspberrypi dnsmasq[1293]: demarré, version 2.72 (taille de cache 150) janv. 20 19:22:52 raspberrypi dnsmasq[1293]: options à la compilation : IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect janv. 20 19:22:52 raspberrypi dnsmasq-dhcp[1293]: DHCP, plage d'adresses IP 192.168.77.10 -- 192.168.77.250, durée de bail 12h janv. 20 19:22:52 raspberrypi dnsmasq[1293]: lecture /opt/piratebox/conf/hosts_mesh - 0 adresses janv. 20 19:22:52 raspberrypi dnsmasq[1293]: lecture /opt/piratebox/conf/hosts_generated - 1 adresses janv. 20 19:22:52 raspberrypi piratebox[1196]: Starting dnsmasq... :. janv. 20 19:22:52 raspberrypi piratebox[1196]: Starting droopy...:. janv. 20 19:22:52 raspberrypi piratebox[1196]: Generated HTML-Shoutbox File. janv. 20 19:22:52 raspberrypi piratebox[1196]: Starting lighttpd...:. janv. 20 19:22:52 raspberrypi systemd[1]: Started LSB: All services around piratebox.
On soulignera certaines lignes :
Active: active (running) since mer. 2016-01-20 19:22:52 CET; 12s ago la piratebox fonctionne dnsmasq-dhcp[1293]: DHCP, plage d'adresses IP 192.168.77.10 -- 192.168.77.250, durée de bail 12h une plage d'adresses est attribuée pour 12 heures Starting lighttpd...:.
le serveur web est démarré et fonctionne normalement. Redémarrez tout de même votre ordinateur parce que des fois il faut relancer les interfaces réseau pour voir apparaître celui de la PirateBox.
Quand les scripts sont installés et que tous les problèmes ont été réglés la PirateBox crée un réseau wifi au démarrage.
L'adresse de la piratebox par défaut est : 192.168.77.1
On peut se connecter en ssh sur cette IP et faire des scoubidous avec le câble ethernet.
Pour notre culture personnelle on pourra utiliser les commandes qui suivent pour connaitre l'adresse ip de la PirateBox. Évidemment il faudra avoir démarré la PirateBox d'abord et nous être connecté sur son réseau wifi avec notre ordinateur. Maintenant que c'est fait allons-y.
Commandes à entrer sur votre ordinateur netstat
netstat -rn
Destination Passerelle Genmask Indic MSS Fenêtre irtt Iface 0.0.0.0 192.168.77.1 0.0.0.0 UG 0 0 0 wlan0 192.168.77.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Ici vous voyez l'ip de la carte wifi de la PirateBox (c'est la passerelle) qui est 192.168.77.1 Vous pouvez maintenant vous connecter en ssh sur cette adresse. Chez nous c'est :
ssh agenux@192.168.77.1
Même si c'est dans le tutoriel on rappelle qu'il est impératif d'étendre la partition système à la capacité totale de la carte SD.
Ça nous a empêché de téléverser des fichiers sur la PirateBox. En effet, Raspbian est pré-installé sur une partition de 3,6Go environ avant mises à jour. Lors de la copie du système sur une clé d'une taille supérieure seuls 4Go sont alloués au système. L'outil de configuration de la distribution (raspi-config) permet d'étendre la partition principale à la capacité totale de la carte SD.
Pour le lancer :
raspi-config
Vous trouverez toutes les informations nécessaires dans ce tutoriel :
http://www.soft-alternative.com/raspberry-pi-etendre-partition-systeme-capacite-carte-sd-raspbian.php
AGeNUx propose une archive adaptée au Raspberrypi avec le mode d'emploi à l'intérieur ici :
https://www.agenux.org/wp-content/uploads/2016/02/personnalisation_francais_piratebox.zip (lien HS)
Vous pouvez aussi trouver des fichiers de personnalisation adaptés au routeur wifi TP-Link MR3020 avec lequel on peut aussi faire une PirateBox au lieu d'utiliser le raspberrypi à cet endroit :
http://www.sitetechno.fr/communaute/piratebox/personnalisation_piratebox.zip (lien HS)
Même s'ils fonctionnent avec le raspberry ils sont clairement adaptés au TP-Link MR3020.
Par défaut les adresses https ne sont pas redirigées vers la PirateBox. Ce qui fait que quelqu'un qui se connectera au réseau qu'elle génère et demandera l'affichage d'une page qui commence par https ne sera pas redirigé sur la PirateBox et son navigateur affichera un 404 page not found. En effet, la PirateBox n'écoute pas le port 443 qui est celui utilisé pour le https. Pour régler ça il va falloir générer notre propre certificat ssl.
Prévenez les utilisateurs qu'il faudra qu'ils ou elles ajoutent une exception dans leur navigateur parce qu'il s'agit d'un certificat auto-signé par nous.
Pour ces lignes nous nous sommes inspirés de ce tutoriel : http://redmine.lighttpd.net/projects/1/wiki/docs_ssl
Nous allons commencer par vérifier que la PirateBox n'écoute pas le port 443 :
netstat --inet -apn
Ici on voit les ports écoutés par la PirateBox et le 443 n'y figure pas.
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp 0 0 192.168.77.1:80 192.168.77.106:48424 TIME_WAIT - tcp 0 0 192.168.77.1:80 192.168.77.106:48446 TIME_WAIT - tcp 0 204 192.168.77.1:22 192.168.77.106:41384 ESTABLISHED - tcp 0 0 192.168.77.1:80 192.168.77.106:48408 TIME_WAIT - tcp 0 0 192.168.77.1:80 192.168.77.106:48414 TIME_WAIT - tcp 0 0 192.168.77.1:80 192.168.77.106:48398 TIME_WAIT - tcp 0 0 192.168.77.1:80 192.168.77.106:48436 TIME_WAIT - tcp 0 0 192.168.77.1:80 192.168.77.106:48430 TIME_WAIT - udp 0 0 0.0.0.0:5353 0.0.0.0:* - udp 0 0 0.0.0.0:53 0.0.0.0:* - udp 0 0 0.0.0.0:67 0.0.0.0:* - udp 0 0 0.0.0.0:68 0.0.0.0:* - udp 0 0 0.0.0.0:40036 0.0.0.0:* - udp 0 0 169.254.152.184:123 0.0.0.0:* - udp 0 0 192.168.77.1:123 0.0.0.0:* - udp 0 0 127.0.0.1:123 0.0.0.0:* - udp 0 0 0.0.0.0:123 0.0.0.0:*
-
Il faut aller en ssh sur la PirateBox et générer un certificat ssl.
Pour l'exemple nous allons nous placer dans /home/agenux/ qui est le /home/ du compte que nous avons créé. Vous adapterez à votre cas.
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Cette commande génère un fichier server.pem dans le dossier utilisateur. Pour vérifier :
lighttpd -v
Mettre le fichier server.pem au bon endroit.
cp /home/agenux/server.pem /opt/piratebox/conf/lighttpd/
Modifier le fichier de configuration /opt/piratebox/conf/lighttpd/lighttpd.conf en ajoutant ces lignes à la fin.
$SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/opt/piratebox/conf/lighttpd/server.pem" }
Vous pouvez redémarrer la PirateBox, éventuellement vider le cache de vote navigateur et essayer de taper des adresses en https pour voir si vous êtes bien redirigé sur la PirateBox.
Le contenu viendra se placer dans le répertoire /opt/piratebox/share/Shared. C'est le répertoire de partage accessible aux utilisateurs via la page d'accueil de la PirateBox. Il sera accessible via des liens que nous ajouterons dans le fichier /opt/piratebox/www/index.html. Le fichier index.html n'est ni plus ni moins que le code html de notre page d'accueil.
Dans le dossier /opt/piratebox/www/ existe un lien symbolique (un raccourcis quoi) qui redirige les requêtes des utilisaterurs vers le contenu de /opt/piratebox/share/Shared.
Comme nous le disions des liens doivent être créés dans le fichier /opt/piratebox/www/index.html (notre page d'accueil) pour qu'ils pointent vers le contenu que nous aurons mis dans /opt/piratebox/share/Shared.
Admettons que pour une action “Reclaim the Streets” nous voulions créer sur la page d'accueil de notre PirateBox une rubrique “Reclaim the Streets” dans laquelle il y aura des sous-rubriques et parmi elles une intitulée “Programme” qui donne accès à un document PDF contenant le programme des concerts et conférences dans les squats environnants.
On pourra adapter cet exemple à une action “Reclaim the Déambulateurs” dans un EHPAD si on le souhaite.
mkdir /opt/piratebox/share/Shared/Programme/
chown -R nobody:nogroupe /opt/piratebox/share/Shared/Programme/
Pour aller déposer un fichier sur la piratebox vous aurez plusieurs solutions dont le protocole ftp, la commande scp ou encore retirer la carte SD de la PirateBox et la mettre dans le lecteur de votre ordinateur pour glisser/déposer des fichiers.
Les lignes suivantes doivent figurer dans le fichier index.html :
<class="icon-download:before" > <h3> Reclaim the Streets </h3> <div> <ul class="nav nav-list"> <li><a href="/Shared/Programme/programme.pdf" target="_parent"><i class="icon-book"></i> Programme des trois jours</a></li> </ul> </div> <ul class="nav nav-list"> </ul> </div>
On peut vérifier que tout fonctionne bien en allant sur la page d'accueil et en cliquant sur le lien.
Un accès FTP permet de déposer facilement des fichiers sur notre PirateBox. Ce n'est pas obligatoire mais c'est pratique comme la mayonnaise près du paquet de frites.
Il faut d'abord installer proftpd sur la PirateBox. A l'installation choisissez Indépendamment.
apt-get install proftpd
Cette commande dit que les fichiers uploadés par les utilisateurs du module de partage de la page web (c'est une des fonctionnalités de la piratebox) sont mis en 775.
nano /opt/piratebox/conf/piratebox.conf
Où il faut modifier cette ligne :
DROOPY_CHMOD="775"
au lieu de DROOPY_CHMOD=“755”
nano /etc/proftpd/proftpd.conf
Où il faut modifier cette ligne :
# Use this to jail all users in their homes DefaultRoot /opt/piratebox/share/Shared
adduser agenux nogroup
chmod -R 775 /opt/piratebox/share/
Nous faisons tout ça parce que par défaut les fichiers et répertoires qui sont dans /opt/piratebox/share/ appartiennent à nobody et au groupe nogroup. Toutefois les droits pour share sont en 755 ce qui empêche les utilisateurs de groupe nogroup de les modifier. En 775 les utilisateurs appartenant à nogroup auront le droit de lire, modifier et exécuter les fichiers et répertoires de /opt/piratebox/share/
/etc/init.d/proftpd restart
Vous pouvez maintenant vous connecter en ftp avec un client comme filezilla ou bien votre navigateur de fichier qu'il faudra bien sûr renseigner avec l'adresse ip du serveur et votre identifiant et mot de passe.
Adaptation de la page: https://piratebox.cc/raspberry_pi:mods?&#usb_fat-storage
Attention, si vous avez comme sur les clés actuelles du commerce, une partition PARTUUID sur la clé, reformatez-la en FAT32 sinon ce sera impossible !
Créer le point de montage permanent d'une clé usb et monter la clé usb :
echo "/dev/sda1 /mnt/usbdrive vfat umask=0,noatime,rw,user 0 0" >> /etc/fstab
mkdir -p /mnt/usbdrive
mount /mnt/usbdrive
Déplacer le dossier partagé et tout son contenu :
mv /opt/piratebox/share/Shared /mnt/usbdrive
Créer un lien symbolique entre le dossier-contenu de la clé et le logiciel piratebox :
ln -s /mnt/usbdrive/Shared /opt/piratebox/share
Déplacer le chat :
mv /opt/piratebox/share/board/src /mnt/usbdrive/kareha_uploads
ln -s /mnt/usbdrive/kareha_uploads /opt/piratebox/share/board/src
Comme le système de fichiers VFAT de la clé usb ne gère pas les droits sur les fichiers, avec la commande mv nous avons droit à des messages d'erreur de ce type :
“impossible de préserver l'appartenance pour « /mnt/usbdrive/Shared/Vie privee/guide.boum.org/home/amnesia/Persistent »: Opération non permise”
Ne pas s'inquiéter outre mesure, la copie s'effectue
Une fois terminée la copie qui peut durer longtemps si vous avez beaucoup de données sur votre carte, il vaut mieux rebooter totalement le système.
Pour les dernières petites choses utiles qui n'ont pas été évoquées dans ce tutoriel déjà assez long nous vous renvoyons a l'original, écrit par l'équipe d'AGeNUx, le LUG Gnu/Linux d'Agen, où vous apprendrez comment configurer le streaming, ce qu'on peut faire avec le fichier /opt/piratebox/conf/piratebox.conf, un bref rappel des commandes scp, tar, comment connaître l'ordre de démarrage des services…
C'est ici https://www.agenux.org/wp-content/uploads/2016/02/tutoriel_piratebox.pdf.zip (lien HS)
A+
Il nous reste encore quelques trucs à régler comme :