# Test Pi 3, Ethereum & serveur ftp Pour <DAISEE.org> : https://github.com/DAISEE lors du hackathon « [Nuit du Code Cutoyen 2018](http://movilab.org/index.php?title=Nuit_du_code_citoyen_Rennes_2018) » à Rennes au hackerspace [Breizh Entropy](http://breizh-entropy.org/) ## Objectifs 1. Installer un noeud ethereum sur raspi 3 : https://github.com/DAISEE/Prototypes/wiki/2.-Ethereum 2. Installer un Serveur FTP sur le même raspi 3 3. tester : 3.1 Stabilité 3.2 Sécurité 3.3 Usages ## Introduction Le _FTP_ (_File Transfer Protocol_) est un protocole qui nous permet d’accéder aux fichiers d’un ordinateur à distance, (uploader, télécharger, renommer, modifier, déplacer, bref tout ce que vous voulez) à partir du moment qu’un « _serveur_ » FTP est installé. ## Raspi 3 - CPU: 1200 MHz quad-core ARM Cortex-A53 - Memory: 1 GB RAM - Storage: MicroSDHC slot - Graphics: Broadcom VideoCore IV at higher clock frequencies than previous that run at 250 MHz - Power consumption: 4.0 W ## Documentations supplémentaires _j'ai simplement demandeé sur le réseau social [Mastodon](https://fr.wikipedia.org/wiki/Mastodon_(r%C3%A9seau_social)), [Flynn](https://mastodon.roflcopter.fr/@flynn) a répondu gentillement_ 1. [FILE TRANSFER PROTOCOL (FTP)](https://www.ietf.org/rfc/rfc959.txt), Obsoletes RFC: 765 (IEN 149) sur IETF 2. [Tutoriel : Créer son serveur FTP](http://sdz.tdct.org/sdz/creer-son-serveur-ftp.html) 3. [Wikipedia pour le mode passif/actif](https://fr.wikipedia.org/wiki/File_Transfer_Protocol), voir également [FPT protégé par SSL ou TLS](https://fr.wikipedia.org/wiki/File_Transfer_Protocol_Secure) 4. Sur [CCM](http://www.commentcamarche.com/contents/519-le-protocole-ftp-file-transfer-protocol) pour les détails de commandes et les schémas ![](https://i.imgur.com/ldlLwHu.gif) ![](https://i.imgur.com/Wm5QIq5.png) ## Besoins + Un raspberry 3 + un **serveur FTP** et un **client FTP**. Le serveur sera installé sur la machine à laquelle vous voulez accéder (ici votre Raspberry Pi) et le client sur la machine **depuis** laquelle vous voulez y accéder. Vous pourrez accéder à votre Raspberry Pi en FTP uniquement en local. ## Installer le serveur FTP Avec un terminal (possible également SSH) : ``sudo apt-get install vsftpd`` Appuyez sur `[o]` si cela est demandé lors de l'installation dans le terminal. Le serveur est installé, Poiur la configuration, depuis votre terminal, entrez `sudo nano /etc/vsftpd.conf` Un fichier de configuration s’ouvre. ![](https://i.imgur.com/SU0pnmP.png) On retrouve une instruction par ligne. Certaines lignes sont précédées d'un dièse `#` : ce sont des commentaires qui sont ignorés. Il servent la plupart du temps à vous indiquer à quoi sert la ligne qui suit. Parfois, il faudra enlever le `#` au début d'une des lignes pour activer l'instruction qu'elle contient. Faire défilier les lignes Modifier : `Anonymous_enabled=YES` en `Anonymous_enabled=NO` ![](https://i.imgur.com/PbFC5PC.png) Toujours en faisant défiler les lignes, enlevez le `#` devant les lignes suivantes : ``` Local_enable = YES local_unmask=022 Write_enabled=YES Ascii\_upload\_enabled=YES Ascii\_download\_enabled=YES ``` Puis faites `[ctrl]` + `[x]` puis `[o]` puis `[Entrée]` Le server est prêt :::warning ### DefaultRoot Le répertoire auquel auront accès les personnes qui se connecteront en FTP. :::warning Par défaut, quelqu'un qui se connecte en FTP au serveur peut accéder à tous les dossiers du serveur ! ::: success Bien qu'il ne puisse pas les modifier pour la plupart, ce n'est certainement pas quelque chose que vous avez envie d'autoriser. Il est donc recommandé d'activer l'option DefaultRoot ::: Pour activer DefaultRoot, supprimez le `#` en début de ligne. La valeur `~` de la commande signifie que l'utilisateur sera limité à son dossier personnel (`/home/me` par exemple). Il ne pourra pas aller "fouiner" dans d'autres dossiers. ## Installer le client  Télécharger _FileZilla_ [ici](https://filezilla-project.org/download.php?show_all=1) adapté à votre OS. Avec Linux vous pouvez aussi taper `sudo apt-get install filezilla` ## Connexion au Raspi 3 Avant de nous connecter, il nous faut l’adresse IP de notre Raspberry Pi. Pour la trouver en tapant cette commande (depuis le RPi ou en SSH) : ifconfig Si le Raspberry PI est connecté en ethernet, l’adresse IP se trouvera à côté de `eth0`, et si el est en wifi, elle sera à côté de `wlan0`. L’adresse est de la forme `192.168.X.X` Notez cette adresse et revenez à FileZilla. Dans la zone de connexion rapide de Filezilla, renseignez l’IP (192.168.X.X), le nom d’utilisateur (pi), et le mot de passe (_raspberry_ par défaut). Vous avez mainteant accès aux fichiers dans le raspi 3 contenant le noeud ethereum ## Tests 1. https://ftptest.net 2. `$ telnet mon.ip.ftp` 3. Les connexions sont assez faciles à suivre par IP: `grep ftp /etc/services` 4. Utilisez netstat pour voir les connexions ouvertes. Par exemple, pour un FTP simple : `$ netstat -tan | grep \\:21` 5. Ou, si vous voulez que l'on confirme quel programme utilise le port [TCP] 21 : `sudo netstat -tanp | grep \\:21` 6. Si vous utilisez ftp, vous pouvez voir qui est connecté en temps réel et quel type d'opération est en train de faire (dowload, upload) avec la commande suivante: `$ pure-ftpwho ` (_voir https://www.pureftpd.org/project/pure-ftpd) ### Test accès ftp et sécurisation du service 1.Activer le service dans inetd.conf et lancer le service inetd . 2.Vérifier que le port est bien ouvert avec la commande netstat root@monlabtop:/home# netstat -atup | grep LISTEN tcp 0 0 *:ftp *:* LISTEN 879/inetd 3.Vérifier que rien n'interdit l'accès au service ftp dans les fichiers hosts.allow et hosts.deny 4.Commenter le fichier /etc/ftpusers comme ci-dessous : \# /etc/ftpusers: list of users disallowed ftp access. See ftpusers(5). root #ftp #anonymous 5.Tester et vérifier le bon fonctionnement de l'accès ftp anonyme en utilisant le compte "ftp" ou "anonymous" avec la commande : lftp localhost -u anonymous ou lftp localhost -u ftp Si la configuration est correcte, vous devriez avoir le résultat suivant : root@master:/home# lftp localhost -u ftp Mot de passe: #Il n'y a pas de mot de passe, faites ENTREE lftp ftp@localhost:~> ls total 20 d--x--x--x 2 0 0 4096 May 5 03:35 bin d--x--x--x 2 0 0 4096 May 5 03:35 etc drwx-wx-wt 2 0 0 4096 May 5 03:04 incoming dr-xr-xr-x 2 0 0 4096 May 5 03:32 lib dr-xr-xr-x 2 0 0 4096 May 5 03:04 pub 6. Commentez la ligne anonymous dans le fichier /etc/ftpusers et refaites un essai de connexion. 7. Faites un test en utilisant un compte système existant, par exemple "lftp localhost -u util" si util est votre compte. 8. Restaurez l'état initial du fichier /etc/ftpusers. 9. Interdisez l'accès ftp avec TCP-Wrapper. Testez avec l'accès anonyme et en utilisant un compte authentifié. NLDR : Les tests de sécurité et d'usages auront lieu lors des prochaines soirées apéro DAISEE, Internet Of Energy, Energy as a Commons, à Rennes. Pensez à nous suivre pour être tenu⋅e⋅s informé⋅e⋅s ## Licence ``` # DON'T BE A DICK PUBLIC LICENSE > Version 1.1, December 2016 > Copyright (C) 2018 Xavier Coadic pour DAISEE.org Everyone is permitted to copy and distribute verbatim or modified copies of this license document. > DON'T BE A DICK PUBLIC LICENSE > TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 1. Do whatever you like with the original work, just don't be a dick. Being a dick includes - but is not limited to - the following instances: 1a. Outright copyright infringement - Don't just copy this and change the name. 1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a dick. 1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER dick. 2. If you become rich through modifications, related works/services, or supporting the original work, share the love. Only a dick would make loads off this work and not buy the original work's creator(s) a pint. 3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes you a DONKEY dick. Fix the problem yourself. A non-dick would submit the fix back. Everyone is permitted to copy and distribute verbatim or modified copies of this license document. > DON'T BE A DICK PUBLIC LICENSE > TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 1. Do whatever you like with the original work, just don't be a dick. Being a dick includes - but is not limited to - the following instances: 1a. Outright copyright infringement - Don't just copy this and change the name. 1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a dick. 1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER dick. 2. If you become rich through modifications, related works/services, or supporting the original work, share the love. Only a dick would make loads off this work and not buy the original work's creator(s) a pint. 3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes you a DONKEY dick. Fix the problem yourself. A non-dick would submit the fix back. ```