Connectez-vous à distance à Home Assistant sur Framboise en toute sécurité

8 minutes de lecture
OBJECTIFS DU GUIDE:
  • Fournir à proprio Home Assistant (installé sur Raspberry Pi) le degré de sécurité le plus élevé possible pour la connexion à distance via Internet (le guide des HASSIO c'est plutôt ici)
  • Niveau de difficulté: prix moyen/élevé
CONCEPTS FACE:
  • Installation et configuration du logiciel
  • Configuration modem / routeur
COMPOSANTS LOGICIELS UTILISES:
Pré-requis:
  • Home Assistant configuré et fonctionnel
  • Raspberry Pi configuré avec IP fixe dans le provotre réseau domestique et accédez à Internet
DISPOSITIFS PHYSIQUES UTILISÉS:
GUIDE plus indiqué pour:

Tous les environnements

Notes et avertissement
  • qualsiasi modifica all'impianto elettrico dev'essere progettata ed effettuata da personale qualificato;
  • tout changement mis en œuvre dans proavant est un prola responsabilité personnelle, ainsi que propremier risque et danger (le contenu de la présente page est purement pédagogique);
  • tout changement mis en œuvre dans proavant un appareil, il annule la garantie, les approbations de qualité et les certifications.
Avis de conduite: 3.8
ATTENTION: ce guide est dédié aux utilisateurs qui ont installé Home Assistant comment appLicence sur la framboise /Windows/Mac ou d'autres réalités opérationnelles. Les utilisateurs HASSIO doit plutôt se référer à laadd-on "DuckDNS" illustré dans cet autre guide.

Abstrait

Comme expliqué lors de un épisode de notre podcast, sécurité dans l'environnement domotique ce n'est jamais trop. Ce n’est pas - trop - jamais absolu, mais lorsque nous courons le risque d’exposer nos composants domotiques à des criminels potentielslumination, c’est pire en ce qui concerne les alarmes, serrures ou autres) il est nécessaire d'avoir un système aussi sûr que possible.

Pour ceux qui ont sagement décidé d'adopter leHUB personnel Home Assistant, l'une des roches les plus importantes à affronter est de le rendre accessible de l'extérieur de la proenvironnement pieux domotique.

Home Assistant offre la possibilité d'interdire l'accès par l'utilisation d'un seul mot de passe plutôt que la vraie gestion e proavec utilitaires (à partir à partir de la version 0.77 - Août '18). Ce qui reste découvert (base) est l'utilisation de la cryptographie pour la transmission de donnéesqui, s'il est mis en œuvre, nous protège contre tout réseau non sécurisé dans lequel une personne "à l'écoute" pourrait intercepter les données en transit, identifiants de connexion inclus.

Le cryptage est actif depuis un certain temps le guide offert par Home Assistant communauté, qui cependant présente divers proproblèmes:

  • utilise le client officiel de certbot, qui est très lourd et offre une série de fonctionnalités qui ne nous servent finalement pas dans ce domaine;
  • nécessite que le port 80 n'est pas utilisé au moment de l'actualisation du certificat cryptographique;
  • nécessite que le port 80 est configuré lors du transfert vers l'instance Home Assistant en plus du 8123 canonique.

Andrea Gohn en a monté un procedura qui utilise:

  • un script très léger pour générer des certificats appelés "déshydraté";
  • les défis DNS-01

ainsi que les services habituels de DDNS (DuckDNS) et de émettre des certificats libre (encryptons).

Nb d'utilisateurs HASSIO: se connecter en toute sécurité à Home Assistant en distribution HASSIO la proCedura est extrêmement simple: en fait c'est suffisant installer et configurer leadd-on DNS de canard. Ce guide n'est pas appvotre type d'installation.

Dans ce guide, nous résumons les étapes opérationnelles pour équiper votre installation de Home Assistant su Raspberry Pi (pas le dédié HASSIO) Prise en charge cryptographique SSL et mécanisme de renouvellement automatique des certificats cela ne présente pas i proproblèmes mentionnés ci-dessus.

Nb Nous recommandons, avant procéder, lire attentivement la page consacrée au concept et à la fonctionnamede la "télécommande”Dans la domotique.

Il commence

hypothèses

L’ensemble du guide est basé sur l’hypothèse que l’installation de Home Assistant a été réalisée sur Raspbian dans l'environnement virtuel Python selon notre guide (ou similaire). Pour les utilisateurs HASSIOà la place, la conduite correcte est-ce.

On suppose donc que l'utilisateur est dédié au service Home Assistant que ce soithomeassistant"Et que l'installation duHUB est présent sur le chemin "/home/homeassistant/.homeassistant».

Configurer DuckDNS

Pour que votre réseau soit accessible de l'extérieur doit avoir un nom unique (FQDN) qui voit l’adresse IP correspondante mise à jour automatiquement à chaque changement, puisque celui affecté à votre modem / routeur change de façon cyclique. Pour ce faire, le service intervient DNS dynamique (ou DDNS), ou un service qui garde une trace de la dernière modification et répond, aux systèmes qui demandent la résolution (traduction) du nom DNS, la dernière adresse IP connue, c'est-à-dire l'adresse actuelle.

DuckDNS est le service que nous avons choisi pour cette fonction.

Puis connectez-vous au service via l'adresse https://www.duckdns.org et, une fois inscrit, créez un propremier domaine qui, de manière univoque, rappréinitialisera votre routeur connecté à Internet.

Pour ce guide, nous supposerons que vous avez créé le nom de domaine complet suivant:

casamia.duckdns.org

où "duckdns.org"Est-ce que la partie fixe est"Casamia"Est-ce que le nom de domaine créé par nous comme exemple.

Dans votre section privée de DuckDNS, vous trouverez également un camp important appelé "jeton", Qui appsont analogues à ceci:

e3ff465f-c6d6-acb1-4416-44b2af152111

Appgraissez-le d'un côté, il vous sera utile bientôt.

Configurez le composant "duckdns"

Maintenant, vous devez mettre en œuvre sur Home Assistant un élément qui, face au changement de l'adresse IP Internet du propremier modem / routeur, communiquer ce changement à DuckDNS, afin de mettre à jour la résolution FQDN.

Pour ce faire, ajoutez simplement au fichier configuration.yaml di Home Assistant le code suivant:

duckdns:

  domain: casamia

  access_token: il-tuo-token-duckdns

où:

domainenom de domaine défini sur le service DuckDNS
jeton d'accèstoker défini par DuckDNS

Une fois cette configuration entrée, elle est relancée Home Assistant, DuckDNS saura en temps réel l’adresse IP de votre modem / routeur, et avec elle, vous et qui interrogerez ce nom de domaine complet.

Ceci est cependant valide Uniqueou quand Home Assistant démarre. Pour que l’IP soit toujours à jour - en cas de changement dans le temps - il est nécessaire de mettre en place un petit proprocessus expliqué en détail dans ce guide.

Activer la redirection de port sur le routeur

Pour accéder, depuis le réseau externe, au nôtre Home Assistant il est maintenant nécessaire de configurer le modem / routeur de sorte que tout appel externe au port (8123 ou autre) être tiré directement sur l'adresse IP statique de framboise sur le port 8123, ou celle de Home Assistant.

Pour mener à bien l'activité de configuration de la redirection de port, nous vous recommandons lire cet article de l'excellent Aranzulla; les données nécessaires appCe guide est:

  • IP de destination: IP statique du Raspberry Pi (précédemment assigné);
  • Porte extérieure: 8123 (sauf si vous voulez en utiliser un autre, c'est la même chose);
  • Porte intérieure: 8123

Identifiez maintenant, à Home Assistant, la configuration préexistante relative au bloc "http" de la configuration.yaml et le configurer (en prenant soin de remplacer "Casamia"Col propremier domaine) comme suit:

http:

  base_url: casamia.duckdns.org:8123

Enregistrer e recommencer Home Assistant.

À ce stade (configuré) cconnexion depuis l'extérieur du réseau Wi-Fi (via navigateur ou via leapp mobile de Home Assistant pour iOS ou Android) à:

http://casamia.duckdns.org:8123

(remplaçant évidemment "Casamia"Avec votre domaine précédemment défini) dovrebbe appdéposer notre demande de Home Assistant.

Nb. Si le champ "Porte externe" a été modifié par le port 8123 recommandé, l'adresse doit changer en fonction de cette modification.

Installer et configurer "déshydraté"

Une fois connecté via SSH au Raspberry Pi, changer l'utilisateur en cours d'utilisation en "homeassistant":

sudo su -s /bin/bash homeassistant

puis connectez-vous au chemin dédié à Home Assistant:

cd /home/homeassistant

et exécuter:

git clone https://github.com/lukas2511/dehydrated.git

afin de cloner le script Git "déshydraté" à l'intérieur du cheminhub.
Entrez le chemin du script maintenant appena créé et crée un nouveau fichier, “domains.txt":

cd dehydrated
/
nano domains.txt

et copier-coller le texte suivant:

casamia.duckdns.org

où "casamia" devrait être remplacé avec propremier domaine. Quittez et enregistrez avec CTRL + X / Y / enter.

Maintenant, créez un nouveau fichier "config":

nano config

et copier-coller le texte suivant:

# Which challenge should be used? Currently http-01 and dns-01 are supported
CHALLENGETYPE="dns-01"

# Script to execute the DNS challenge and run after cert generation
HOOK="${BASEDIR}/hook.sh"

et quittez en enregistrant avec CTRL + X / Y / enter.

Maintenant, créez le fichier hook.sh:

nano hook.sh

et copier-coller le texte suivant:

#!/usr/bin/env bash
set -e
set -u
set -o pipefail
 
domain="myhome"
token="your-duckdns-token"
 
case "$1" in
    "deploy_challenge")
        curl "https://www.duckdns.org/update?domains=$domain&token=$token&txt=$4"
        echo
        ;;
    "clean_challenge")
        curl "https://www.duckdns.org/update?domains=$domain&token=$token&txt=removed&clear=true"
        echo
        ;;
    "deploy_cert")
        sudo systemctl restart home-assistant@homeassistant.service
        ;;
    "unchanged_cert")
        ;;
    "startup_hook")
        ;;
    "exit_hook")
        ;;
    *)
        echo Unknown hook "${1}"
        exit 0
        ;;
esac

en prenant soin de remplacer évaluations sur le terrain "domaine"Et"jeton”Avec les données déjà vues lors de la Configuration DuckDNS up Home Assistant (nom de domaine personnel et jeton).

Enfin quittez en enregistrant avec CTRL + X / Y / enter.

Nous rendons maintenant le script "hook.sh" appena créé exécutable:

chmod 0777 hook.sh

Générez le certificat avec le comando:

./dehydrated --register  --accept-terms

qui rapportera une sortie semblable à ceci:

# INFO: Using main config file /home/homeassistant/dehydrated/config
+ Generating account key...
+ Registering account key with ACME server...
+ Fetching account ID...
+ Done!

Puis exécutez ce qui suit comando:

./dehydrated -c

qui rapportera une sortie semblable à ceci:

# INFO: Using main config file /home/homeassistant/dehydrated/config

Processing myhome.duckdns.org

+ Signing domains...

+ Generating private key...

+ Generating signing request...

+ Requesting challenge for myhome.duckdns.org...
OK

+ Responding to challenge for myhome.duckdns.org...
OK

+ Challenge is valid!
 + Requesting certificate...

+ Checking certificate...

+ Done!

+ Creating fullchain.pem...

+ Walking chain...

+ Done!

Nb. Au cas où à la fin de cette exécution il est demandé le mot de passe de l'utilisateur en cours d'utilisation, interrompre avec CTRL + C. L'exécution est cependant correcte.

Automatiser le renouvellement du certificat

Depuis le certificat cryptographique a une durée limitée, nous allons maintenant configurer un proJe demande qu'on en demande plusnameautomatique tous les premiers jours du mois.

effectuer:

export VISUAL=nano; crontab -e

si on vous demande quel éditeur utiliser, nous vous recommandons d’utiliser "nano".

Puis ajoutez à la configuration crontab l'entrée suivante:

0 1 1 * * /home/homeassistant/dehydrated/dehydrated -c

enregistrer et quitter.
Cette configuration fera que le certificat est automatiquement renouvelé tous les premiers mois.

Enfin, sortir de l'usurpation d'identité de l'utilisateur homeassistant avec:

exit

reconfiguration Home Assistant

À ce stade, l'entrée de cryptographie dans le fichier configuration.yaml doit être ajoutée.

Identifier la configuration préexistante relative au bloc "http" et le configurer (en prenant soin de remplacer "Casamia"Col propremier domaine) comme suit:

http:

  ssl_certificate: /home/homeassistant/dehydrated/certs/casamia.duckdns.org/fullchain.pem

  ssl_key: /home/homeassistant/dehydrated/certs/casamia.duckdns.org/privkey.pem

  base_url: casamia.duckdns.org:8123

ssl_certificateest le certificat appena créé
ssl_keysont les clés appena créer
base_url est l'adresse à laquelle accéder pour accéder à votre instance de Home Assistant (attention à ajuster correctement le nom de domaine complet)

Une fois redémarré Home Assistant, de l'extérieur et de l'intérieur, via l'adresse

https://casamia.duckdns.org:8123

(évidemment en remplaçant "casamia" par votre domaine précédemment défini) dovrebbe appdéposer notre demande de Home Assistant.

Nb. Si le champ "Porte externe" a été modifié par le port 8123 recommandé, l'adresse doit changer en fonction de cette modification.

Maintenant le vôtre Home Assistant il est contrôlable à distance en toute sécurité.

Vérifier l'expiration du certificat

Il est également possible de vérifier à l’interface utilisateur la durée du certificat utilisé via un capteur spécifique, comme suit:

sensor:
  - platform: command_line
    name: Scadenza certificato SSL
    #12 ore indicato in secondi
    scan_interval: 43200
    command: "/usr/bin/sudo ssl-cert-check -b -c /home/homeassistant/dehydrated/certs/my_domain.duckdns.org/cert.pem | awk '{ print $NF }'"

Évidemment, vous devrez personnaliser la chaîne "my_domain"Col proprénom domaine.

Pour que ce capteur fonctionne, il est nécessaire que ssh-cert-contrôle est installé.
En cas d'absence, installez-le via la commande:

sudo apt-get install ssl-cert-check

Il faut aussi exécuter la commande suivante:

sudo visudo

e appurare que la ligne suivante existe (sinon, ajoutez-le) dans le fichier qui apparirà:

homeassistant ALL=(ALL) NOPASSWD:ALL

Puis enregistrez, quittez et redémarrez.

Modifier la recherchenameautomatique

Il peut arriver que l’adresse IP WAN attribuée au routeur changement et que la plus grandenamento non reçu par DuckDNS, comme telle une mise à journameest réalisée seulement au démarrage Home Assistant, sur la base des réalisations de ce guide jusqu’à présent.

Nous vous recommandons donc de suivre le guide suivant pour configurer le système d’exploitation Raspbian de sorte que, de manière cyclique, envoyer une mise à journamede l'IP à DuckDNS:

Mettre à jour automatiquement DuckDNS à partir de propremière framboise

Connexion locale

Quand vous êtes à la maison, connectez-vous au Wi-Fi/ LAN local - vous pouvez vous connecter à Home Assistant sans avoir à utiliser nécessairement adresse FQDN externe, mais pointant directement à mDNS "Raspberry.local" ou à l'adresse IP du Raspberry. Le seul soin nécessaire sera d'utiliser le proProtocole SSL.

En substance, au lieu d'utiliser:

https://casamia.duckdns.org:8123

il sera possible d’utiliser l’adresse (si activé, lemDNS):

https://raspberry.local:8123

ou plus simplement:

https://IP_DEL_RASPBERRY:8123

où évidemment "IP_DEL_RASPBERRY"Sera l'adresse IP attribuée au propremier Raspberry IP et déjà utilisé pour la portforwarding au routeur.


Home Assistant Logo officielATTENZIONE: rappelez-vous qu'il y a sur notre communauté FORUM une section ad hoc dédiée à Home Assistantpour tout doute, question, information sur le mérite spécifique de ces composants.