Alexa / Ash - Retour d'expérience / sécurité / optimisations

Hello !

Ce topic « retour d’expérience & suggestions » autour de la problématique de voir leurs appareils hors lignes côté Alexa alors que tout est bon côté Jeedom.

Préambule

Tout d’abord je souhaite mentionner @Salvialf et @Loic et faire amende honorable au sujet des récents échanges que j’ai pu avoir avec eux sur le topic de l’annonce officielle « Perturbation sur le services d’assistant vocaux » car j’ai résolu ce matin mon problème des appareils apparaissant hors ligne ; la balle était dans mon camps (voir plus bas).
NB : vous pouvez également fermer le ticket support à ce sujet ; je ne peux le faire.

Historique

J’ai donc comme tous ceux qui ont eu des problèmes tout d’abord tenté de désactiver / réactiver la skill Jeedom, ainsi que la rotation de la clé API ; sans succès. Voyant que l’incident généralisé était normalement résolu côté Jeedom, et voyant toujours mes appareils offline, je me suis interrogé sur ce qu’il y avait entre les serveurs Jeedom faisant tourner la skill Alexa (abrégé ici SJSA) et mon Jeedom. Ici en l’occurrence il y a Cloudflare (compte free) qui est mon provider de DNS, et qui ajoute en même tant une couche de sécurité pour exposer mon Jeedom plus sereinement sur Internet.

En inspectant les logs de la partie WAF (aka Firewall) j’ai pu isoler des requêtes qui m’ont mises la puce à l’oreille ; en voici une :

Conclusion

C’est donc la fonctionnalité « Mode lutte contre les bots » de CloudFlare qui gêne le SJSA :astonished:. En compte free, il n’est pas possible d’affiner ce filtrage je l’ai donc désactivé. En relançant l’appli Alexa en suivant oh miracle mes appareils sont réapparus en ligne :tada: !

REX

Exposer son Jeedom sur Internet n’est pas anodin et représente de réels risques. Si comme moi vous souhaitez mettre en place le modèle de sécurité Zero Trust pensez à « whitelister » aussi le service Jeedom Assistants Vocaux. Pour se faire comme m’en a informé @Loic ici on ne peut malheureusement pas se baser sur l’adresse IP car aucune plage IP n’est visiblement dédiée. A date je recommande donc d’utiliser ASNUM qui semble matcher quelque soit l’instance du serveur SJSA qui contact notre Jeedom ; c’est le 16276.

Pistes d’amélioration

  1. Générer une clé unique par utilisateur activant le service Assistants vocaux et la transmettre dans les headers de chaque requête faite sur nos Jeedom. Ainsi, le filtrage sera beaucoup plus facile. Il faut aussi permettre de renouveler cette clé à l’initiative de l’utilisateur, en cas de leak.
  2. Alerter l’utilisateur (email) lorsque le SJSA ne reçoit pas un code 200 en réponse aux requêtes, en indiquant dans l’alerte les headers reçu, ainsi que le body. Dans mon cas aucun log côté plugin (logique) mais aucun log nul part et ça c’est compliqué!
    Ainsi, ce genre de blocage réseau sera facilement détectable par l’utilisateur qui pourra ajuster pour corriger.
    NB : Ces alertes doivent peut-être partir avec un rate limite de 1 par 30 minutes par exemple pour éviter de spammer ou d’exploser d’éventuel quota de mail côté Jeedom :slight_smile:
  3. (bonus track) Rendre accessible les logs générés côté SJSA, avec une rétention sur 7 jours qui devrait suffire

Voila voila, je pense avoir fait le tour, en espérant que ce topic donne des idées !

Belle journée