Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
pratique:informatique:pibox [07/08/2017 15:24] – [Astuces en plus] Zatalyzpratique:informatique:pibox [08/08/2017 11:15] – [Pibox : Une rapsberry pour les échanges] Zatalyz
Ligne 2: Ligne 2:
 J'ai testé les logiciels "piratebox" et je n'ai pas aimé, ni en tant qu'utilisatrice, ni en tant qu'administratrice. Aussi je tente ma propre interprétation de la chose. J'ai testé les logiciels "piratebox" et je n'ai pas aimé, ni en tant qu'utilisatrice, ni en tant qu'administratrice. Aussi je tente ma propre interprétation de la chose.
  
 +Comme ça se base sur une raspberry pi, j'appelle ça une "pibox", c'est un peu moins inquiétant pour les gens que le terme //pirate//, mais c'est vraiment la même logique : un réseau sans fil auquel se connecter, un site web, de quoi partager des fichiers, discuter, le tout en local.
 ===== Installation du raspberry ===== ===== Installation du raspberry =====
  
 +Voir [[pratique:informatique:raspberry]].
  
-Voir aussi https://raspbian-france.fr/installer-raspbian-premier-demarrage-configuration/ , un tuto complet qui m'a bien aidé ; ce qui est ici est la version raccourcie et adaptée à ma façon de faire. 
- 
-Télécharger [[https://www.raspberrypi.org/downloads/raspbian/|Raspbian Jessie Lite]] (pas d'interface graphique) et mettre l'image sur une carte SD (à l'emplacement ''/dev/sdX'' donc à adapter :-P ) : 
- 
-  sudo umount /dev/sdX 
-  sudo dd bs=4M if=2017-04-10-raspbian-jessie-lite.img of=/dev/sde 
- 
-Mettre la carte SD dans le raspberry, le brancher avec un écran, un clavier, ethernet et l'alimentation (câble micro-usb). 
- 
-Ça démarre, plus ou moins vite. Identifiant ''pi'', mot de passe ''raspberry'' mais en qwerty, il faut donc taper ''rqspberry'' sur notre clavier en azerty. 
- 
-On va vite changer ça en lançant la commande 
-  sudo raspi-config 
-qui s'écrit sur azerty : 
-  sudo rqspi)config 
- 
-Cela lance un chouette programme. En premier le clavier : Localisation Options > Change Keyboard Layout > generic 105-key > other > french > french. Ou comme vous préférez, on peut aussi le passer en bépo. Attention le clavier va rester en qwerty sur cette session. Le plus simple sera de redémarrer à la fin. 
- 
-Ensuite les locales : Localisation Options > Change Locale 
- 
-Sélectionner ''fr_FR.UTF-8 UTF-8'', espace pour valider, puis tab pour aller sur ok, entrée et sélectionner "FR" en locale principale. 
- 
-Maintenant on peut passer aux fioritures. 
- 
-Permettre l'utilisation de SSH, afin qu'on puisse débrancher l'écran : Interfacing Options > SSH => passer "enable" 
- 
-Pendant qu'on est là, donnez un hostname sympa pour le réseau (l'une des options de base). 
- 
-Une option pour que le système prenne toute la place disponible sur la carte : Advanced Options > Expand Filesystem 
- 
-Après ça on va reboot, afin de prendre en compte ce qu'on a fait. 
- 
-Nous avons droit à un message d'avertissement au démarrage, car SSH est activé mais le mot de passe est toujours celui par défaut. Changeons ça rapidement : 
-  sudo passwd 
-  sudo passwd pi 
-Mettez un bon mot de passe et mémorisez-le. 
- 
-Nous allons tout de suite configurer ssh : 
-  sudo nano /etc/ssh/sshd_config 
-   
-On change le port (tout sauf 22), on s'assure que root ne peux pas se connecter directement et on autorise juste "pi" à se connecter 
- 
-  Port 222 
-  PermitRootLogin no 
-  AllowUsers pi 
- 
-Et un petit redémarrage de ssh pour prendre ça en compte. 
-  sudo service ssh restart 
- 
-Ensuite on envoie sa propre clé sur le raspberry : 
-  ssh-copy-id -p 222 -i ~/.ssh/id_rsa.pub pi@192.168.1.01 
- 
-Pour trouver l'adresse ip qui permet de s'y connecter, regardez ce que votre modem vous donne comme adresse pour votre framboise. 
- 
-Dernière chose et pas des moindres... la mise à jour du système... c'est long car la bestiole n'est pas puissante. Allez prendre une pause, c'est le moment. 
- 
-  sudo apt-get update && sudo apt-get upgrade -y && sudo reboot 
- 
-==== Personnalisations cosmétiques en plus ==== 
- 
-Je n'aime pas le message par défaut quand on se connecte en ssh. Il se change dans ''/etc/motd''. 
- 
-Je sais que ce n'est pas "bien", mais quand je passe du temps sur des commandes root, je préfère passer en root (sudo su) ; par contre son bashrc n'est pas bien configuré.  
-  sudo su 
-  nano /root/.bashrc 
- 
-Décommenter/ajouter ceci : 
-<code> 
-export LS_OPTIONS='--color=auto' 
-eval "`dircolors`" 
-alias ls='ls $LS_OPTIONS' 
-alias ll='ls $LS_OPTIONS -l' 
-alias l='ls $LS_OPTIONS -lA' 
- 
-# Autocompletion 
-if [ -f /etc/bash_completion ]; then 
-      . /etc/bash_completion 
-fi 
-</code> 
- 
- 
-===== Installation du serveur web ===== 
- 
-Raspberry étant un mini-machin, il faut préférer des outils légers. Ici, ce sera Lighttpd((Doc basique en français sur https://doc.ubuntu-fr.org/lighttpd)) plutôt qu'Apache ou Nginx. Et nous allons essayer d'éviter les bases de données et les gros logiciels. 
- 
-  sudo apt-get install lighttpd php5-cgi php5-gd php5-imagick php5-curl php5-intl 
- 
-<wrap round tip> 
-Tous ces modules ne vous seront pas forcément utiles, il y a surtout php5-cgi qui compte, mais le reste me sert souvent dans les CMS que j'aime utiliser donc : léger d'un coté, plein de l'autre ! 
-</wrap> 
- 
-Activer les modules de php : 
-  sudo lighty-enable-mod fastcgi  
-  sudo lighty-enable-mod fastcgi-php 
- 
-Et relancer le démon : 
-  sudo service lighttpd force-reload 
- 
-Pour voir si ça marche :  
- 
-<code>sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/info.php' 
-sudo chown -R www-data:www-data /var/www/html/info.php 
-</code> 
- 
-Accédez-y via l'adresse ''ip_de_ma_framboise/info.php''. 
  
 ===== Reconnaître la clé wifi ===== ===== Reconnaître la clé wifi =====
Ligne 127: Ligne 24:
 ===== Transformer la Raspberry en accès wifi ===== ===== Transformer la Raspberry en accès wifi =====
 <WRAP center round info 60%> <WRAP center round info 60%>
-Cette partie est une traduction libre et adaptée de https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software +À noter : je ne cherche pas à sécuriser le réseau donc la configuration d'hostapd et je ne cherche pas à faire un pont vers internet. 
- +
-À noter : je ne cherche pas à sécuriser le réseau donc la configuration d'hostapd est différente, et je ne cherche pas à faire un pont vers internet donc une partie du tutoriel d'Adafruit est ignorée+
 </WRAP> </WRAP>
  
 Quelques logiciels à installer pour créer un "AP" (//Access Point//): Quelques logiciels à installer pour créer un "AP" (//Access Point//):
-  sudo apt-get install hostapd isc-dhcp-server iptables-persistent+  sudo apt-get install hostapd dnsmasq iptables-persistent
  
   * hostapd va générer le réseau sans fil auquel se connecter.   * hostapd va générer le réseau sans fil auquel se connecter.
-  * isc-dhcp-server va donner des adresses ip aux machines qui se connectent et servir de DNS. +  * dnsmasq sert à la fois à gérer la partie dhcp et la partie dns : il va donner des adresses ip aux machines qui se connectent et servir de DNS. 
-  * iptables-persistent va éviter qu'iptable bouge ; répondre "ouiquand il demande s'il doit sauvegarder les configurations.+  * iptables-persistent permet de relancer la même configuration iptable d'un redémarrage à l'autre ; répondre oui” quand il demande s'il doit sauvegarder les configurations.
  
-==== DHCP ==== +Il faut aussi tripatouiller dhcpcd, installé et configuré de base. Il suffit de lui dire d'ignorer wlan0, car nous allons configurer ce dernier avec une adresse statique
-Éditez ''/etc/dhcp/dhcpd.conf''+
  
-Commenter les lignes suivantes : +  sudo nano /etc/dhcpcd.conf 
-<code> +Ajouter au fichiertout au début : 
-#option domain-name "example.org"; +  denyinterfaces wlan0   
-#option domain-name-servers ns1.example.org, ns2.example.org; + 
-</code> +
- +
-Décommenter/ajouter ceci : +
-<code> +
-authoritative; +
- +
-subnet 192.168.42.0 netmask 255.255.255.0 { +
-     range 192.168.42.10 192.168.42.50; +
-    option broadcast-address 192.168.42.255; +
-    option routers 192.168.42.1; +
-    default-lease-time 600; +
-    max-lease-time 7200; +
-    option domain-name "local"; +
-    option domain-name-servers 8.8.8.88.8.4.4; +
-    } +
- +
-</code> +
- +
-Éditez ensuite ''/etc/default/isc-dhcp-server'' et ajouter ''wlan0'' (ou le nom de votre interface wifi) en face de ''INTERFACES=""'' +
-  INTERFACES="wlan0"+
  
 ==== Interface, wlan0 ==== ==== Interface, wlan0 ====
-On va configurer wlan0 pour qu'il soit +On va configurer wlan0  
   sudo ifdown wlan0   sudo ifdown wlan0
 +  sudo nano /etc/network/interfaces
  
-Éditer ''/etc/network/interfaces'' +Éditez-le pour qu'il ressemble à cela (commentez le reste) :
- +
-Il doit ressembler à cela (commentez le reste) :+
  
 <code> <code>
Ligne 184: Ligne 57:
  
 allow-hotplug wlan0 allow-hotplug wlan0
- 
 iface wlan0 inet static iface wlan0 inet static
-        address 192.168.42.1+        address 172.24.1.1
         netmask 255.255.255.0         netmask 255.255.255.0
 +        network 172.24.1.0
 +        broadcast 255.0.0.0
  
 </code> </code>
 +
 +Relancer dhcpcd pour que tout soit pris en compte. 
 +
 +  sudo service dhcpcd restart
  
 Et ensuite, donnez son adresse ip statique à wlan0 : Et ensuite, donnez son adresse ip statique à wlan0 :
-  sudo ifconfig wlan0 192.168.42.1+  sudo ifdown wlan0 
 +  sudo ifup wlan0 
 +  sudo ifconfig wlan0 172.24.1.1
  
  
 ==== Hostapd ==== ==== Hostapd ====
 +Modifiez le ficher de configuration d'hostapd
 +
 +  sudo nano /etc/hostapd/hostapd.conf
 <WRAP center round important 60%> <WRAP center round important 60%>
 Cette configuration est particulière car elle ne demande pas de mot de passe pour se connecter. C'est un wifi ouvert ! Cette configuration est particulière car elle ne demande pas de mot de passe pour se connecter. C'est un wifi ouvert !
Ligne 211: Ligne 94:
 # canal de fréquence Wi-Fi (1-14) # canal de fréquence Wi-Fi (1-14)
 channel=6 channel=6
-# Beacon interval in kus (1.024 ms)+</code> 
 + 
 +Ce qui suit peut aussi s'aouter mais pas sûre que ce soit super utile ? 
 +<code php># Beacon interval in kus (1.024 ms)
 beacon_int=100 beacon_int=100
 # DTIM (delivery trafic information message) # DTIM (delivery trafic information message)
Ligne 220: Ligne 106:
 rts_threshold=2347 rts_threshold=2347
 # Fragmentation threshold; 2346 = disabled (default) # Fragmentation threshold; 2346 = disabled (default)
-fragm_threshold=2346+fragm_threshold=2346</code> 
  
-</code> 
  
 Pour le driver, suivant la carte wifi, cela peut être ''driver=rtl871xdrv'' ou ''driver=nl80211'' ou même rien, dans le cas des Raspberry avec wifi interne.  Pour le driver, suivant la carte wifi, cela peut être ''driver=rtl871xdrv'' ou ''driver=nl80211'' ou même rien, dans le cas des Raspberry avec wifi interne. 
Ligne 236: Ligne 122:
 S'il y a des warning et des erreurs, corriger.  S'il y a des warning et des erreurs, corriger. 
 Sinon, une autre machine ayant le wifi devrait voir apparaître le réseau wifi PiBox (ou le nom que vous lui avez donné) et peut s'y connecter.  Sinon, une autre machine ayant le wifi devrait voir apparaître le réseau wifi PiBox (ou le nom que vous lui avez donné) et peut s'y connecter. 
 +
 +==== Dnsmasq ====
 +Sauvegarder le fichier de configuration d'origine, il est plein d'informations utiles, puis éditez ''/etc/dnsmasq.conf'' :
 +
 +  sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig  
 +  sudo nano /etc/dnsmasq.conf  
 +
 +<code bash /etc/dnsmasq.conf>
 +# Redirect all in local
 +address=/#/172.24.1.1
 +# Use interface wlan0 
 +interface=wlan0
 +# Explicitly specify the address to listen on       
 +listen-address=172.24.1.1
 +# Bind to the interface to make sure we aren't sending things elsewhere  
 +bind-interfaces
 +# Don't forward short names       
 +domain-needed
 +# Never forward addresses in the non-routed address spaces.     
 +bogus-priv
 +# Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time          
 +dhcp-range=172.24.1.50,172.24.1.150,12h 
 +</code>
 +<WRAP center round important 60%>
 +À propos de l'option suivante :
 +  # Redirect all in local
 +  address=/#/172.24.1.1
 +
 +''#'' agit comme un joker, toutes les requêtes (même à mabanque.com) sont redirigées vers notre serveur local. 
 +
 +Cela facilite le boulot lors du partage puisque toute adresse sera la "bonne", mais cela pose aussi des problèmes éthiques car c'est un DNS menteur qui permet le vol de cookies, d'identifiants... 
 +
 +Une autre solution consiste à mettre un nom de domaine sur son serveur, que nos visteurs doivent taper, sinon ils n'ont qu'une page d'erreur. 
 +
 +Vu ce à quoi je destine la pibox, je prends le risque de me faire gronder par un sysadmin de passage. Sachez cependant que lorsque vous vous connectez sur un réseau (quel qu'il soit), un administrateur peu scrupuleux peux enregistrer tout ce que vous faites passer. D'où l'importance de ne pas se connecter à sa banque depuis un hôtel ou un fast-food...
 +</WRAP>
 +
 +
 +
 +==== Donner de l'ipv4 et gérer iptable ====
 +Ok, l'ipv4 c'est mort, tout ça, mais vu le réseau on s'en moque. 
 +
 +  sudo nano /etc/sysctl.conf
 +Enlever le commentaire devant ''net.ipv4.ip_forward=1''
 +
 +
 +<code php>
 +sudo su
 +iptables -A INPUT -i wlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
 +iptables -A INPUT -i wlan0 -p tcp -m tcp --dport 80 -j ACCEPT
 +iptables -A INPUT -i wlan0 -p udp -m udp --dport 53 -j ACCEPT
 +iptables -A INPUT -i wlan0 -p udp -m udp --dport 67:68 -j ACCEPT
 +iptables -A INPUT -i wlan0 -j DROP
 +iptables-save > /etc/iptables/iptables.rules
 +</code>
  
 ==== Finitions ==== ==== Finitions ====
 Relancez les services : Relancez les services :
   sudo service hostapd start   sudo service hostapd start
-  sudo service isc-dhcp-server start +  sudo service dnsmasq start  
 +  sudo service networking start 
  
 Vérifiez que tout tourne sans erreur : Vérifiez que tout tourne sans erreur :
   sudo service hostapd status   sudo service hostapd status
-  sudo service isc-dhcp-server status  +  sudo service dnsmasq status  
- +  sudo service networking status
-et faites qu'ils démarrent automatiquement : +
-  sudo update-rc.d hostapd enable +
-  sudo update-rc.d isc-dhcp-server enable +
  
-Connectez-vous depuis votre autre machine sur le réseau PiBox, puis rendez-vous sur 192.168.42.1/info.php : c'est votre page !+Connectez-vous depuis votre autre machine sur le réseau PiBox, puis rendez-vous sur 172.24.1.1/info.php : c'est votre page !
  
 Redémarrez la Raspberry, vérifiez que ça marche toujours... c'est bon ? Parfait ! Redémarrez la Raspberry, vérifiez que ça marche toujours... c'est bon ? Parfait !
  
 +===== Installation du serveur web =====
  
-==== Améliorer l'adresse (Dnsmasq) ==== +Raspberry étant un mini-machin, il faut préférer des outils légers. Ici, ce sera Lighttpd((Doc basique en français sur https://doc.ubuntu-fr.org/lighttpd)) plutôt qu'Apache ou NginxEt nous allons essayer d'éviter les bases de données et les gros logiciels.
-Taper une adresse du style "192.168.42.1" ce n'est pas vraiment intuitif... +
  
-Bien qu'il soit possible de faire un DNS menteur qui redirige toute demande du navigateur vers notre pi-serveur, cela pose des problèmes éthiques (possibilité de vol de cookies, d'identifiants) donc... on évite de le faire. On peut cependant configurer le DNS local pour ajouter un "nom de domaine", afin de pouvoir donner une adresse comme "pibox.ici" à taper dans le navigateur, pour nos visiteurs. +  sudo apt-get install lighttpd php5-cgi php5-gd php5-imagick php5-curl php5-intl
  
 +<wrap round tip>
 +Tous ces modules ne vous seront pas forcément utiles, il y a surtout php5-cgi qui compte, mais le reste me sert souvent dans les CMS que j'aime utiliser donc : léger d'un coté, plein de l'autre !
 +</wrap>
  
-<WRAP center round todo 60%> +Activer les modules de php : 
-Ça ne va plus, de nouveau. À noter que "pinata.local" fonctionne, mais où est-ce que ça se paramètre ? mystère... +  sudo lighty-enable-mod fastcgi  
-</WRAP>+  sudo lighty-enable-mod fastcgi-php
  
 +Et relancer le démon :
 +  sudo service lighttpd force-reload
  
-  sudo apt-get install dnsmasq +Ajoutez ensuite l'utilisateur pi au groupe www-data et paramétrez les droits sur /var/www/html (dossier par défaut pour le web).
-  sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conforig +
-  sudo nano /etc/dnsmasq.conf+
  
-Et copier les informations suivantes :+<code php>sudo usermod -a -G www-data pi 
 +sudo chown -R www-data:www-data /var/www/ 
 +sudo chmod -R g+rwX /var/www/</code>
  
-address=/.pibox.ici/192.168.42.1 
  
 +Pour voir si ça marche : 
  
-<code> +<code>echo "<?php phpinfo(); ?>" > /var/www/html/info.php' 
-#dont use resolv.conf +</code>
-no-resolv +
-#dont recheck resolv.conf for changes +
-no-poll+
  
-#overwrite dns.. +Accédez-y via l'adresse ''ip_de_ma_framboise/info.php''. À ne pas laisser, ça donne pas mal d'infos pour un éventuel attaquant (oui oui, je sais, vu la sécurité de l'ensemble...).
-#dhcp-authoritative+
  
-# If you don't want dnsmasq to read /etc/hosts, uncomment the +==== CMS à installer ==== 
-# following line. +À partir de làtout ce qui s'installe sur un serveur web peut s'installer ici
-no-hosts +
-# or if you want it to read another fileas well as /etc/hosts, use +
-# this. +
-#addn-hosts=/etc/banner_add_hosts +
-## ^^^^^^  <- generated+
  
-</code>+Je conseille quelque chose comme [[https://github.com/jvaubourg/php-piratebox|php-piratebox]], qui fournit les services habituels d'une piratebox : chat, partage de fichiers. C'est bien fait, relativement léger, par contre il faut impérativement l'installer à la racine du site.
  
 +Pour modifier la barre de menu, par exemple pour ajouter des items, éditez ''/var/www/html/views/home.html.php'' et ajoutez un élément dans ce genre :
  
 +<code php>
 +
 +<!-- ajout perso --><li class=""><a href="/images/"><?= _("Images") ?></a></li>
 +<!-- fin du menu -->      </ul>
 +      <form class="navbar-form navbar-right"></code>
 +
 +J'ai aussi installé [[http://www.photoshow-gallery.com/|Photoshow-gallery]], plus élégant pour naviguer dans les photos envoyées par les gens, en indiquant que le dossier "images" était le dossier de php-piratebox :
 +
 +<code php /var/www/html/images/config.php>$config->photos_dir   = "../public/uploads/Images/";</code>
 +
 +J'ai tenté d'installer Dokuwiki, mais il est déjà trop lourd pour le raspberry, ça rame vite. Si vous voulez une partie "site web", ce sera probablement aussi efficace d'adapter un des thèmes de [[https://html5up.net/|html5up]] (gabarits libres, responsives et superbes).
 ===== Liens utiles (ou pas) ===== ===== Liens utiles (ou pas) =====
-  +Disons que ça m'a servi à en arriver là. 
-  - hostpad sur unbuntu+  - https://doc.ubuntu-fr.org/hostapd
   - http://hardware-libre.fr/2014/02/raspberry-pi-creer-un-point-dacces-wifi/   - http://hardware-libre.fr/2014/02/raspberry-pi-creer-un-point-dacces-wifi/
   - http://www.dericbourg.net/2015/07/04/utiliser-un-raspberry-pi-comme-point-dacces-wifi/   - http://www.dericbourg.net/2015/07/04/utiliser-un-raspberry-pi-comme-point-dacces-wifi/
Ligne 303: Ligne 250:
   - https://wiki.debian.org/DHCP_Server   - https://wiki.debian.org/DHCP_Server
   - https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/connect   - https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/connect
 +  - https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
 +  - https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/
 +  - http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
 +  - http://andrewmichaelsmith.com/2013/08/raspberry-pi-wi-fi-honeypot/
  
-===== Astuces en plus ===== +===== Pour trouver plus d'informations ===== 
-Une fois que c'est fait, pour sauvegarder la carte SD et ne pas tout recommencer, on met la carte sur son ordi puis on copie l'image : +Une recherche sur "raspberry wifi access point" donne des choses, on peut d'ailleurs se passer du mot //raspberry// puisque que tout ça est aussi valable pour toute machine sous linux ayant la capacité de faire du wifi comme point d'accès
-  dd if=/dev/sdh | gzip -v6 | dd of=/media/dossier/pibox20170701.gz  +
-gzip va compresser l'image afin d'éviter que ça prenne trop de place, sinon la carte de 8Go prendra 8Go sur le disque : c'est dd, il copie tout, même le vide. La manoeuvre est très lente. +
- +
-Pour mettre cette version compressée sur une nouvelle carte sd : +
-  sudo umount /media/carte +
-  sudo zcat /media/dossier/pibox20170701.gz | pv | sudo dd bs=4M of=/dev/sdh +
-''pv'' permet de suivre l'avancée de la copie, faire ''apt install pv'' si vous ne l'avez pas déjà sur votre ordi.+
  
 +"Honeypot" est le petit mot pour dire "réseau captif" : en gros, quand on se connecte au wifi, tout est ramené dans le pot de miel, pardon la framboise.
CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki
pratique/informatique/pibox.txt · Dernière modification : 30/11/2020 10:36 de 127.0.0.1