Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Table des matières

PirateBox

  • Objet : Faire une PirateBox sur base Raspbian.
  • Niveau requis :
  • Commentaires : Ce tutoriel est conçu pour le Raspberrypi 2 modèle B.
  • Suivi
    • Création par laguespa 15/02/2016
    • Création par Paul 15/02/2016
    • Création par AGeNUx 15/02/2016
    • Testé par laguespa le 12 février 2016
  • Commentaires sur le forum : C'est ici1)

Introduction

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.

Le matériel que nous avons utilisé :

  • Un raspberrypi 2 Modèle B :
    40 euros,
  • une clef WIFI compatible avec le raspberrypi. La notre est une TP-Link TL-WN722N :
    9 euros,
  • une carte SD Sandisk classe10 de 16 Go au moins, 32 Go semblant une capacité confortable :
    15 euros,
  • une alimentation 5v 2000mA Chargeur Adaptateur Micro USB Pour Raspberry Pi 2 modèle B et Modèle B+ :
    9 euros.

Coût total de l'affaire 73 euros.

Les logiciels et autres programmes nécessaires :

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.

.

Se connecter en ssh juste après l'installation de Raspbian pour installer la PirateBox.

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 :

retour de la commande
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

Installer les scripts PirateBox et paramétrer le bazar une fois !

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 !

Les services lighttpd et dnsmasq démarrent avant que la clef wifi soit active.

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 :

  • D'abord il faut créer le fichier qui contiendra le script :
nano /etc/init.d/redemarrer_piratebox 
  • Et le renseigner :
/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
  • Le rendre exécutable : chmod
chmod 755 /etc/init.d/redemarrer_piratebox
  • Lancer cette commande pour que le script soit pris en compte :
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
retour de la commande
● 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.

Se connecter sur le Raspberrypi en ssh via son interface wifi une fois que la piratebox est installée et que tout fonctionne.

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
retour de la commande
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

Etendre la partition système à la capacité de la carte SD sous Raspbian.

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

Franciser l'interface de votre PirateBox.

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

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
Même s'ils fonctionnent avec le raspberry ils sont clairement adaptés au TP-Link MR3020.

Rediriger les adresses en https vers la PirateBox.

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.

retour de la commande
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.

Extrait de lighttpd.conf
$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.

Maintenant que la PirateBox fonctionne il faut lui donner du contenu.

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.

Un exemple simple avec des documents PDF mis à disposition des utilisateurs pour commencer.

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.

Dans le dossier /opt/piratebox/share/Shared nous devons créer le répertoire Programme.

mkdir  /opt/piratebox/share/Shared/Programme/

Y placer le fichier programme.pdf avec la commande scp et lui donner les droits qui conviennent et le bon propriétaire :

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.

Dans /opt/piratebox/www/index.html nous devons créer le lien vers le fichier programme.pdf

Les lignes suivantes doivent figurer dans le fichier index.html :

Extrait de 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.

Faire un accès FTP.

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

Configurer proftp pour que l'utilisateur agenux ait un accès FTP.

Mise en 775 des fichiers uploadés par les utilisateurs.

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 :

Extrait de piratebox.conf
DROOPY_CHMOD="775"

au lieu de DROOPY_CHMOD=“755”

Chrooter l'utilisateur agenux dans /opt/piratebox/share/Shared

nano /etc/proftpd/proftpd.conf

Où il faut modifier cette ligne :

Extrait de proftpd.conf
# Use this to jail all users in their homes
DefaultRoot /opt/piratebox/share/Shared

Ajout de l'utilisateur agenux au groupe nogroup

adduser agenux nogroup

Modification des permissions de /opt/piratebox/share pour que le groupe nogroup puisse lire, écrire et exécuter.

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/

Redémarrage du service ftp pour que les modifications soient prises en compte.

/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.

Attacher une clé usb ou un périphérique externe usb.

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.

Quelques petits trucs utiles.

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

A+

Les derniers trucs à régler.

Il nous reste encore quelques trucs à régler comme :

  • Comment faire pour que les fichiers téléversés depuis l'interface web le soient dans les répertoires que nous avons créés à cet effet, à savoir : Musique pour les mp3, flac, ogg… Vidéo pour les vidéos, PDF pour les pdf et Images pour les images…
  • Et les autres qu'on sait pas encore…

Voir aussi

Liens au forum concernant ce tuto

1) N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/materiel/piratebox.txt · Dernière modification: 02/03/2016 09:02 par laguespa

Pied de page des forums

Propulsé par FluxBB