Info2Geek

Ma framboise est un serveur

On continue l’article précédent, parce que ça n’est pas tout. Bon, je l’ai deja écrit dans un billet, mais je le répète quand même avec quelques mises à jour.

1. Sécurisation SSH
On serre un peu la vis du SSH avec le fichier /etc/ssh/sshd_config. Pour cela, on va interdire l’accès au root et autoriser que les membres d’un groupe à se connecter :

2. Sécurisation Fail2ban
Maintenant, on installe fail2ban et créer des règles pour contrer les petits malins. Ce service va donc lire les fichiers logs, repérer les échecs d’identification et les adresses IP correspondantes, les bloquer avec une règle iptables et vous envoyer un mail pour vous avertir.

Maintenant, on passe à la configuration. Tout d’abord le fichier /etc/fail2ban/jail.conf . Je modifie l’action par défaut :

action = %(action_mwl)s

Qui correspond à :

Ensuite nous activons les régles pour les services ssh-ddos, apache, apache-noscript, et apache-overflows en positionnant la variable enable sur true :

Il faut redémarrer le service pour prendre en compte ces modifications :
3. Suppression du user pi
Remplacer dans le fichier /etc/group les occurrences de pi :
Puis supprimer le compte pi :

Ma Framboise devient un serveur

Voilà, une fois mon Wifi fonctionnel, je vais pouvoir passer à la suite.

1. Faire un peu de ménage dans les packages
On peut commencer par virer tout ce qui se rapporte au serveur X, puisqu’on n’en aura pas l’utilité, et surtout par sécurité :

Un dernier coup de ménage pour purger tous les paquets dont il ne reste plus que les fichiers de configuration.
Avec aptitude c’est très simple avec la commande aptitude purge ~c (ou aptitude purge ?config-files). Par sécurité, on remplacera purge par search avant pour visualiser uniquement la liste des paquets concernés :

On installe ensuite localepurge pour faire de la place dans les fichier de locales. Pour info, aptitude -R install est utilisé pour installer que les paquets absolument nécessaires :

2. Se mettre à la page

Dernière étape avant de passer aux choses sérieuses, redéfinir l’espace disque de votre Framboise avec raspi-config :

rootFS

Maintenant, on fait un peu de configuration de base.

3. Modification du hostname

4. Modification du fichier /etc/hosts

5. Modifier les locales (peut être réaliser avec raspi-config) et tzdata

Choisir fr_FR.UTF-8
Autre méthode :

Ensuite, on configure le timezone :

On peut aussi modifier l’éditeur par défaut :

Enfin, j’utilise beaucoup vim donc j’aime bien mon petit confort. On va donc activer manuellement certaines options dans le fichier /etc/vim/vimrc. Commençons par la coloration syntaxique  en de-commentant la linge :
Décommettez les lignes suivantes afin que vim vous repositionne à la ligne où vous étiez dans le fichier précédemment fermé :
Décommettez les lignes suivantes pour que la recherche et la visualisation dans le fichier soit plus aisée :
6. Petites modifications utiles
Ajoutons donc un vrai user (idem) et affectons le au groupe staff :
Maintenant, ajoutons la permission à cet utilisateur  d’être root via un sudo :
Un petit truc pratique que j’aime beaucoup, c’est avoir un joli prompt.
Pour cela, je modifie le fichier /etc/bash.bashrc :
7. Installer les packages de base + Apache/Php/MySQL

Configuration Wifi de la Framboise

Ça serait pas mal que ma Framboise se connecte au réseau Wifi de la maison, ou du bureau pour bosser dessus pendant ma pause déjeuner. Rien de plus simple.
Votre Point d’Accès à la maison est en WPA, son nom est MAISON et le mot de passe est PasseMaison.
Votre Point d’Accès au bureau est en WPA, son nom est BUREAU et le mot de passe est PasseBureau.
Il faut générer les 2 passphrases :

Maintenant, il faut modifier le fichier des interfaces réseau, /etc/network/interfaces :

Puis renseignons le fichier /etc/wpa_supplicant/wpa_supplicant.conf :

Normalement, si tout se passe bien, en redémarrant l’interface wifi, elle devrait se connecter à votre Point d’accès.

Nouvelle installation Raspberry PI

Alors voilà, j’ai reçu (enfin) ma nouvelle carte SD pour ma framboise, mais du coup, je vais devoir tout recommencer. En même temps, faire et défaire, … .

Alors on récapitule les étapes :

1. On copie la Raspbian sur sa carte SD en utilisant Win32 Disk ImagerWin32 Disk Imager

2. On boot dessus avec notre Framboise
3. On se connecte en root (Password: raspberry)
1st_connection

4. Configurer sa Framboise avec raspi-config
raspi-config

  • info : affiche les info du système
  • expand_rootfs : L’image de Raspbian fait 2Go, si votre carte SD en fait 32 alors vous perdez 30 Go, pour que Raspbian étende tout le système sur la carte SD, utiliser cette option
  • overscan : permet lors de l’affichage sur un écran de décaler les bords de l’images par rapport aux bords de l’écran
  • configure_keyboard : configure le clavier
  • change_pass : change le mot de passe de l’utilisateur root
  • change_locale : change la zone dans la quelle vous vous trouvez
  • change_timezone : détermine le fuseau horaire
  • memory_split : le Raspberry Model B possède 512Mo de mémoire RAM. Cette mémoire est partagée de manière dynamique entre le CPU et GPU. Cette option permet de modifier ces réglages.
  • ssh : active ou désactive le serveur ssh
  • boot_behaviour : Démarrage du Raspberry en mode graphique (desktop) ou mode console (command line).
  • update :  lance l’utilitaire de mise à jour .

Toujours plus avec ma Framboise #RaspberryPi

Un détecteur d’ouverture de portes, de mouvements, une sonde température, humidité, un moteur pas à pas, et voilà, il ne reste plus de GPIO de libre. Et si je veux ajouter un LCD, je fais comment?

Si comme moi, le nombre de GPIO disponibles sur le Raspberry Pi ne vous convient pas, il est possible d’en rajouter.
La puce MCP23017 permet d’ajouter 16 GPIO. Quant à la puce MCP23008, elle permet d’en rajouter 8.
Ces puces se connectent au Raspberry Pi en utilisant des GPIO “spéciaux”, dédiés au protocole I²C.

Ces deux puces coûtent $1.95 pour le MCP23008, et $2.95 pour le MCP23017 (chez Adafruit, mais on peut trouver encore moins cher).  Seule différence, le MCP23008 se présente sous forme d’une puce à 16 broches, en 2*8, alors que le MCP23017 est une puce à 28 broches, en 2*14. Donc je vous conseillerais le MCP23017.

MCP23017Coté câblage, c’est assez simple. J’ai utilisé le tutoriel d’Adafruit sur l’utilisation du MCP23017.

Le MCP23017 est alimenté par du 3.3V : VDD (9) sur la puce et 3V3 sur le RaspBerry
La masse du Raspberry : VSS (10) sur la puce et GND sur le RaspBerry
Le GPIO SDA : SDA (13) sur la puce et SDA0 sur le RaspBerry
Et pour finir, le GPIO SCL :  : SCL (12) sur la puce et SCL0 sur le RaspBerry

MCP23017_montage

Le MCP23017 a donc 16 pins, de A0 jusqu’à A7 et de B0 jusqu’à B7.
A0 est nommé 0 dans la librairie, et A7 est appellé 7. Ainsi, B0 sera le GPIO 8 et, de la même manière, B7 sera la pin 15

Coté code, il faudra récuperer la librairie de Adafruit. Quant au code python pour utiliser ce chip, il pourra être le suivant ( pareil, cela provient de Adafruit, je n’invente rien) :

Ma framboise en digital

Nos framboises ne disposant pas d’entrées digitales, le seul moyen de faire des lectures analogiques est d’utiliser un ADC (ADC signifie « Analog to Digital Converter » autrement dit « Convertisseur Analogique vers Digital »).
Petit defaut du Raspberry, il est purement digital a contrario des Arduino, AVR ou microcontroleur qui eux disposent souvent d’au moins  6 entrées analogiques.

Les entrées analogiques sont pratiques parce que beaucoup de sondes utilisent des sorties analogiques (photorésistance, des senseurs de forces, des potentiomètres ou des résistances sensibles à la chaleur, etc…), il est donc important de faire en sorte que le Raspberry soit aussi capable de faire des lectures analogiques, même si celles-ci sont assez souvent moins précises.

Cela est donc possible en connectant une puce MCP3008 sur notre framboise comme je l’ai fait avec la sonde température LM35.
Le MCP3008 agit donc comme un « pont » entre le monde digital et analogique. Il dispose de 8 entrées analogiques que notre Raspberry peut « lire » en utilisant seulement 4 pins digitales.

 

mcp3008 mcp3008-tech

Pour pouvoir lire des données analogiques nous devons utiliser les broches suivantes pour alimenter la puce MCP3008:

  • VDD (alimentation),
  • DGND (digital ground, masse digitale).

Nous avons aussi besoin de 4 broches/pins pour les données ‘SPI’:

  • DOUT: broche « Data Out », sortie de donnée de la puce MCP3008,
  • CLK : broche « Clock » pour le signal d’horloge,
  • DIN : broche « Data In », entrée des données dans la puce MCP3008, données provenant du Raspberry Pi,
  • /CS : broche « Chip Select », qui permet d’activer la puce.

Les sources de donnée analogiques sont quant à elles reliées au pin CHx.

Le MCP3008 a quelques broches complémentaires qui doivent aussi être connectées:

  • AGND: (analog ground, masse analogique), broche quelque-fois utilisées dans les montages de précision.
  • VREF: tension de référence. Utilisée pour changer l’échelle de mesure de la tension.
    Comme nous désirons une mesure sur l’échelle complète, nous raccordons VREF à 3.3V

Un thermomètre pour ma framboise

Encore un autre morceau de PYTHON pour ne pas le perdre.
Cette fois ci, il s’agit d’une sonde température LM35.
En terme de sonde température, nous avons le choix entre de l’analogique (le cas du LM36, LM36…) et du digital (DS18B20, DS1621…).
Or, notre framboise ne fait que du digital… Pour exploiter l’analogique, il faut un MCP3008 qui permet d’ajouter 8 sondes analogiques en utilisant que 4 pin GPIO.

A terme, je conseille d’opter pour le digital, plus précis et plus simple, mais en attendant, rien ne nous empêche de faire mumuse, et surtout de se faire la main sur le MCP3008… Coté câblage, nous avons donc ceci :

babyroom_lm35

Coté code, c’est la dessous :

bla