Les périphériques connectés (IoT) c’est bien, il y en a de plus en plus sur le marché. Mais on ne parle pas assez de l’aspect de cyber-sécurité lié à leurs utilisation. Ce n’est pas le topic, mais je trouve que nous pouvons mettre en places des mesures pour se protéger un minimum. Voici les quelques observations que j’ai fait lors de l’installation d’un Google Nest Mini sur mon réseau.

Environnement

J’ai décidé d’héberger tout mes devices IoT sur un VLAN avec un SSID dédié.
Je peux ainsi contrôler le traffic qui circule hors de ce réseau.
Cela demande un peu de configuration et de testing pour la mise en place mais c’est pour moi essentiel à partir du moment ou on n’a pas une entière confiance au produit.

Outgoing rule

A la base, j’ai juste autorisé le Nest à joindre internet en UDP et TCP uniquement.
Et j’ai remarqué que ça ne suffit pas, j’avais des déconnexion très régulièrement. En regardant les logs du firewall, je me suis aperçu que le Nest à aussi besoin de IGMP vers le firewall.

Et il est également possible que les ouvertures changent dans le futur

Pour faire communiquer les équipements (chromecast, nest,…) d’un réseau à un autre. Il faudra aussi un mDNS opérationnel. Avahi fait bien le job.
L’ouverture des ports 5353 entre nos VLAN seront nécessaire.

DNS

En analysant le traffic, je me suis également aperçu que le nest contact directement le DNS de google (8.8.8.8 & 8.8.4.4). Alors que ce ne sont pas des paramètres que j’ai renseignés. En effet, il est sensé utiliser PiHole en tant que DNS (données fournies par mon DHCP). Apparemment, le nest n’en tiens pas compte et les DNS 8.8.8.8 et 8.8.4.4 sont hardcodés dans son petit système.

Comme solution (également évoquée ici) nous pouvons faire du NAT afin de rediriger les requêtes vers le PiHole.

NAT DEST: 8.8.8.8 & 8.8.4.4 -> Notre Pihole PORT: 53/UDP

Sans cela, il continuera à envoyer ses requêtes vers le DNS de google, ce que je préfère éviter.
J’ai également essayé de bloquer explicitement ces accès DNS dans le firewall, et il n’a pas fallback sur mon PiHole. De plus il y avait des instabilités.

Donc cette solution du NAT fonctionne parfaitement et c’est stable.

Conclusion

Il est toujours intéressant de prendre un peu de temps pour analyser ce qui passe sur le réseau de IoT.
Dans le cas du Nest, il faut penser à configurer ses règles firewall plus finement (mDNS, IGMP) et rediriger les requêtes DNS si on le souhaite.

Pourquoi et quand activer TRIM ?

TRIM est une fonction qui permet d’améliorer la vitesse et la durée de vie d’un SSD. Une fois activé, l’OS aura la possibilité de connaitre quels sont les blocs occupés. Plus d’infos

C’est donc une fonction intéressante, qui est activée par défaut sur la plus part des OS actuels. (Mais visiblement pas tous)
Activer TRIM n’a d’intérêt que si le système possède un SSD.

pfSense avec SSD

Suivant les besoins, les administrateurs réseaux (ou les bidouilleurs ^^) vont préférer choisir (ou construire) un firewall avec un SSD pour augmenter les performances du système et donc de la solution en général.

Dans mon cas, j’ai installé pfSense sur une petite machine avec plusieurs interfaces réseaux et un SSD.

Après quelques semaines d’utilisation, je m’aperçois que la fonction TRIM est désactivée. Apparemment il est activé par défaut uniquement sur les équipements netgate (l’hardware officiel et corporate de pfSense).
Comme ici le pfSense tourne sur du materiel custom, il faudra l’activer manuellement. (Et ne pas oublier de le refaire en cas de réinstall)

Vérifier le status

Pour savoir si TRIM est activé sur pfSense, il faut lancer l’invite de commande (via ssh ou l’interface web par exemple) et lancer la commande

tunefs -p /

On aperçois la ligne trim et le status

tunefs: trim: (-t)                                        disabled

Si c’est enabled, tout est bon, il n’y a plus rien à faire. Dans le cas contraire, on va voir ci dessous la procédure pour l’activer.

On va donc activer TRIM

On va encore devoir lancer quelques commandes:

/usr/local/sbin/ufslabels.sh

On modifie maintenant le fichier /boot/loader.conf.local pour activer l’ahci (si ce n’était pas le cas). Il faut ajouter ahci_load= »YES » à la fin du fichier

vi /boot/loader.conf.local

On doit maintenant identifier l’ID de notre partition root (/dev/ufsid/xxx – notez l’ID à la place de xxx)

cat /etc/fstab

Maintenant on reboot et on démarre sur la clé USB d’installation de pfSense -> 2. Boot [S]ingle User

Une fois démarré sur la clé usb on active TRIM sur notre partition root (remplacez xxx par l’id récupéré plus haut)

/sbin/tunefs -t enable /dev/ufsid/xxx

On reboot

/sbin/reboot

On peut ensuite revérifier le status qui est passé en enable et c’est fait 😉

tunefs -p /
....
tunefs: trim: (-t)                                        enabled

Source: https://gist.github.com/mdouchement/853fbd4185743689f58c

Edit: Ajout d’images

Guide d’achat 2020

Voici quelques exemples mais on peut très bien trouver un clone équivalent dans une autre marque (alfawise,tronxy,creality,Anet,…):

  • Anet A8 : +-120€ C’est l’entrée de gamme mais ça fonctionne déjà très bien, parfait pour celui qui veut monter entièrement son imprimante et qui aime chipoter. Elle a plein d’upgrade qu’il est possible d’imprimer.
  • Creality Ender-3 : +-200€ le cadre est un peu plus robuste, le montage est très facile, elle est fort reconnue pour être facile pour les débutants. Elle a une version « pro » avec plus d’options.
  • Alfawise U20: 250€ elle dispose de fonctions intéressantes (détection de fin de filaments et reprise après coupure de courant) elle a aussi un grand plateau.
  • Creality CR10 : 400€ elle est très connue car elle offre une qualité d’impression élevée et elle a des versions (cr10s ou pro) qui ont l’auto leveling, le détecteur fin de filaments et la reprise après coupure 230v.
  • Prusa i3 MK3s: 800€ c’est hors de mon budget mais elle est incontournable, elle a le meilleur rapport qualité d’impression/prix. Le fondateur est le créateur des premières imprimantes 3d open hardware. Ils ont également développé leurs propre slicer en open source. C’est fait en République tchèque. Ils sont très fort.
  • 3donline Magma: 900€ elle a été créée et montée en Belgique. Elle dispose de rails cnc sur les axes, ce qui est unique. Ils sont installés a jemeppe s/s. Le support est au top et ils ne sont pas avare de conseils.

Pour acheter l’imprimante, Il est possible de commander en ligne (geatbest/Aliexpress/Amazon par exemple) ou en magasin (3DOnline a un magasin en Belgique).

Architecture de la carte mère

La plupart des cartes mères sont en 8bit, le 32bit pointe doucement le bout de son nez. Mais pour le moment ça reste rare pour les imprimantes chinoises dans un budget < 300€.

Logiciels

Réalisation 3D

Concernant les logiciels j’utilise Fusion 360 (gratuit pour une utilisation privée) ou SketchUp pour la modélisation. Il existe aussi des bibliothèques avec pleins d’objets déjà modélisé, thingiverse par exemple.

Slicer

Ultimaker Cura - Logiciel disponible en téléchargement gratuit

Une fois l’objet créé ou téléchargé (format STL), on doit ensuite le passer dans un slicer qui va générer les instructions pour imprimer l’objet à l’imprimante dans un langage compréhensible par l’imprimante (format gcode). C’est ici qu’on règle les paramètres propres à l’impression (température, rétractation, remplissage,…)

J’utilise personnellement Cura, qui est gratuit et qui bénéficie d’une belle communauté.

Matières

Amazon.com: 3D Printer PLA Filament 1.75mm, LABISTS Plastic 3D Printing PLA  Filament Bundle 1kg/2.2lb in Total, 0.25KG/Spool 4 Colors (White, Red,  Black, Blue): Office Products

Concernant le filament, les 3 les plus connus sont le PLA, l’ABS et le PETG. Elles ont des caractéristiques différentes. Je conseille vraiment de commencer par le PLA car il est plus facile a imprimer, on peut ensuite passer à d’autres matières en fonction des besoins/contraintes.

On dit généralement que le PLA est plus fragile et se dégrade facilement avec le temps et l’environnement (extérieur).
L’ABS est plus solide mais plus difficile à imprimer (beaucoup de warping). Les vapeurs d’ABS sont nocives.

Firmware

Les imprimantes ont un firmware de base qui est installé par le constructeur, il est souvent possible de le remplacer par un autre. Marlin par exemple qui est opensource (sur github).

Cela permet d’ajouter certaines fonction ou d’améliorer/fine-tuner certains paramètres.
Sur certains modèle, le fait de flasher le firmware fait sauter la garantie.

Next step

L’étape suivante, pour ceux qui en veulent plus c’est d’utiliser octoprint sur un raspberry pi (octopi) pour faciliter la surveillance et la gestion des impressions. Une petite webcam en plus et c’est vraiment très comfortable pour imprimer et surveiller les prints.