NEWS
den ioBroker sicher machen
-
Hallo,
ich hätte eine Bitte, könnte ein Fachmann von euch mal ein kleines tutorial erstellen wie man eine ioBroker Installation bestmöglich absichern kann (ohne Rechenzentrum zuhause:-)
Mich würde z.B. sehr interessieren wie ich ein letsencrypt Zertifikat erstellen könnte und dieses einbinde.
Ist es ohne überhaupt ein Risiko? ich nutze viele Adapter wie Nuki oder BMW… werden die Passwörter bei deren Abfragen ohne Umstellung auf https unverschlüsselt übertragen?
ich habe eine FritzBox und nutze den VPN Zugang über MyFritz. Ist das ok, oder gibt es bessere Lösungen?
(Die Risiken von Portfreigaben sind mir bewusst, die nutze ich nicht)
Ich, und ich denke viele hier, sind da halt keine Profis, und aktuell liest man hier halt von betroffenen Usern.
Also… vielleicht können wir diesen Beitrag für Sicherheitsempfehlungen nutzen.Meine Punkte:
https
vpn -
@stenmic Bin zwar vom Fachmann weit entfernt, aber kann Dir sagen, dass eine Absicherung mit letsencrypt Zertifikaten empfehlenswert ist, wenn Du die ports 80/443 ins Internet freigibst.
Hierzu solltest Du jedoch, z. B. mit einem reverse proxy, den eingehenden Datenverkehr in deinem Netzwerk routen und zusätzlich weitere Authentifizierungsabsicherungen einrichten.Ja, mit http wird der gesamte Datenverkehr unverschlüsselt (plaintext) übermittelt, https ist verschlüsselt.
VPN ist eine derzeit als sicher eingestufte Datenübertragung.
-
@meister-mopper sagte in den ioBroker sicher machen:
Ja, mit http wird der gesamte Datenverkehr unverschlüsselt (plaintext) übermittelt, https ist verschlüsselt.
auch der von Adaptern, Passwörter etc.? Das wäre ja ein hohes Sicherheitsrisiko.
Wie gesagt, ich nutze keine Portfreigabe, nur VPN und die ios App. -
@stenmic sagte: ich nutze keine Portfreigabe, nur VPN
Dann spielt sich alles nur im Heimnetz ab. Wo ist da ein Sicherheitsrisiko, außer man hat sich einen Trojaner eingefangen?
-
@paul53 sagte in den ioBroker sicher machen:
@stenmic sagte: ich nutze keine Portfreigabe, nur VPN
Dann spielt sich alles nur im Heimnetz ab. Wo ist da ein Sicherheitsrisiko, außer man hat sich einen Trojaner eingefangen?
ja, ich bewege mich nur im Heimnetzwerk, das ist richtig. Wie sieht es mit den Adaptern aus. Hier sind oft Passwörter hinterlegt und diese gehen schließlich bei Abfragen ins Internet. Macht https da einen Unterschied oder ist es da auch egal?
-
@meister-mopper sagte in den ioBroker sicher machen:
wenn Du die ports 80/443 ins Internet freigibst.
Warum sollte man diese Ports überhaupt freigeben?
-
@stenmic Die Passwörter brauchen die Adapter doch nur für den Zugriff, z.B. auf die Fritzbox - das hat doch nichts mit dem Internet zu tun...
Was könntest du denn z.B. mit meinen Fritzbox Login anfangen - der nützt dir nix, wenn du nicht hier im Netzwerk bist und sonst keine Infos hast. -
@ssw-mcor Beispiel:
Mit dem BMW Adapter frage ich mit meinen (BMW) Login Daten den Status vom PKW online ab. Was hat das mit der FritzBox zu tun.
Es gibt genug Adapter die sich mit Passwörtern bei online Diensten anmelden. Die Frage ist, macht da https (Zertifikat) einen Unterschied. -
Nein setzt du auf https mit letsencrypt wird die die Kommunikation mit deinem Browser verschlüsselt, das ändert nicht automatisch wie deine Adapter mit Diensten im Web kommunizieren.
Ich bin kein Entwickler und kann deswegen keine Aussagen treffen wie einzelne Adapter mit dem Web kommunizieren, aber am Ende hängt es sicherlich vom jeweiligen Dienst ab wie dieser kommunizieren will.
Dein iobroker hat auch bereits automatisch bei der Installation Zertifikate generiert für https, vielleicht werden diese auch von den Adaptern für eine verschlüsselte Kommunikation benutzt.
Der Unterschied beim Einsatz von letsencrypt ist das alle gängigen Browser die Zertifizierung Stelle kennen und somit keine Warnmeldung erscheint.
Zur Erhöhung der Sicherheit solltest du sowie deinen admin Benutzer mit einem Passwort versehen, und somit stellt du automatisch auf https um, die Warnmeldungen kannst du dann ignorieren bzw. eine Ausnahme im Browser setzen.
Und zu deiner Frage ob es bessere Lösungen als myfritz gibt. Ja es gibt immer bessere und vor allem schnellere Lösungen, aber für deinen Einsatzweck reicht der Dienst völlig aus auch von der Sicherheit.
Grüße
TeNNo2k5 -
@tenno2k5 danke für deine Erklärung
-
Hi,
ich versuche mal etwas Licht ins Dunkel zu bringe.
Es gibt zwei grundlegende unterschiedlich Verbindungsarten.
Eingehende und Ausgehende. Fangen wir mit den einfacheren an.-
Ausgehende
Jedes mal wenn man den Webbrowser öffnet und eine Webseite sehen will wird einer Ausgehende Verbindung aufgebaut. Wie jedem klar seinen sollte muss man dafür nur eine Verbindung ins Internet haben und nichts extra konfigurieren. Welches Protokoll gesprochen wird und welcher Port dafür benötigt wird kann ohne Probleme selbst gewählt werden. -
Eingehende
Hier wird die Verbindung von außen aufgebaut. Jetzt müsste man sich mal verdeutlichen das bei einem normalen Internetanschluss es ja nur ein Gerät (Router) gibt der wirklich mit einem Kable (egal ob DSL, Kable oder Mobilfunk) mit dem Internet verbunden ist. Das heißt alle Rechner/Handys die man zu Hause hat sende ihre Daten zu diesem Router und der versendet es dann ins Internet.
Wenn jetzt von außen einen Verbindung aufgebaut werden soll wird der Router das im normal Fall erst mal abblocken. Da er ja nicht weiß an welchen der vielen Geräte die man besitzt die Daten gesendet werden soll. Dies passiert durch die Firewall. Um es trotzdem hin zu bekommen einen Rechner gezielt aus dem Internet anzusprechen kann man eine Postweiterleitung bzw. NAT einrichten. Dabei sagt man der Firewall wenn jemand eine Verbindung zu einem ganz bestimmten Port öffnen will dann sende die Daten bitte genau an diese Gerät.
Was bedeute das jetzt konkret?
Die Adapter im iobroker entscheiden selber ob sie verschlüsselt oder unverschlüsselt mit dem Internet kommunizieren (Ausgehende Verdingung).
Solange man keine Postweiterleitung einrichtet kann auf die ioBroker instanz nur von den Rechner/handys hinter dem Router zugegriffen werden. Also auch allen Geräten die im WLan hängen[1]Was kann ich machen wenn ich von unterwegs an den ioBroker kommen möchte
Meine Persönliche Empfehlung ist es nicht den Port zum ioBroker weiterzuleiten.
Ja man kann mit https es etwas sicherer machen jedoch nützt das nichts wenn im Login Code noch ein Fehler ist.
Ich bin der Meinung das es nur 3 gute Möglichkeiten dafür gibt.-
VPN
Über einen VPN Service (z.b. in der Fritzbox)[2] kann man sich z.b. mit dem Handy von unterwegs in den Bereich hinter dem Router einwählen so das man an alle Geräte kommt (auch dem ioBroker) -
SSH
Mein Favorit jedoch für die meisten nicht Praktikable. Such begriffe wären "ssh-tunnel" (infos) -
Messanger
Wenn es nur darum geht ein paar Werte zu bekommen und etwas zu starten könnte man auch einfach einen Chatbot einrichten. So kann man einfach eine Nachricht senden um z.b. das Licht an zumachen oder so. (hier )
[1] außer wenn man VLANs und extra Firewall Regeln oder eine Gast-Wlan hat.
[2] habe ich selber noch nie verwendet.P.S. Ich weiß ich habe das sehr vereinfacht da ich nichts über IP Adressen, dhcp, dyndns, DS-Lite usw. geschrieben haben.
-
-
@ignis-draco auch dir ein Dankeschön für deine Erklärung.
Ich nutze den VPN Service der Fritzbox und bin somit eigentlich zufrieden.Was ich noch nicht verstehe, für was nun ein Zertifikat (https) überhaupt sinnvoll ist.
Vielleicht in einem Haushalt mit mehreren Personen (WG) wo man sich "hinter" dem Router etwas absichern möchte?
Ansonsten müsste ich ja gerade zur Zertifikaterstellung bzw. -erneuerung einen Port öffenen, oder? -
Durch ein Zertifikat (z.b. lets encrypt) kann man den Daten Verkehr zwischen Rechner und Server Verschlüsseln und verifizieren. Also sicherstellen das der Server der richtige ist und das die Daten nicht einfach mit belauscht werden können.
In einem Privaten umfällt (ohne Öffentlichen Port) ist es nicht zwingend Notwendig (Meine Meinung nach).Es gibt mehrere Wege ein Zertifikat zu erstellen.
-
Selbst erstellen ohne signatur (kostenlos)
Man hat alle Vorteile von z.b. https jedoch wird der Webbrowser meckern das er das Zertifikat nicht überprüfen kann. Dies kann man aber per Ausnahmeregelung (muss bei jedem benutzen Endgerät gemacht werden) umgehen. -
mit Signatur (kostenlos oder Teuer)
Das Zertifikat wird von einer Zentralen stelle unterschrieben. Dadurch kann der Webbrowser es überprüfen und man bekommt keine Warnmeldung.
Wenn man die Signatur von einer der großen Stellen bekommt dann ist das Zertifikat meist zwischen 1-5 Jahren gültig.
Man bekommt eine Datei die man auf den Rechner mit IoBroker packt diese Verfahren ist meinst Kostenpflichtig (ca. 200€).
Seit ein paar Jahren besteht die Möglichkeit kostenlos eine Signatur über lets encrypt zu bekommen. Diese Zertifikate sind "nur" 90 Tage gültig. Dies führt dazu das die Überprüfung Maschinell passieren muss. Bei der "Domain-Validierung"
die benötigt wird muss auf den Rechner eine Datei mit einem ganz bestimmten Inhalt erstellt werden die dann von lets encrypt überprüft wird[1]. Dies führt dazu das von lets encrypt eine Verbindung (Eingehende) zu dem Rechner aufgebaut werden muss. Also muss eine Portweiterleitung eingerichtet werden.Meiner Meinung nach ist der Zugewinn an Sicherheit viel kleiner als die Unsicherheit durch den offene Port.
Anders sieht es aus wenn man z.b. ein Webserver betreiben möchte (z.b. Nextcloud) der aus dem Internet erreichbar seinen soll dort sollte man zwingend ein Zertifikat verwenden und das darf natürlich auch ein lets encrypt sein da der Port ja für die Funktion schon offen seien muss.[1] Es gibt Programmen die sich um das regelmäßige erneuern kümmern. Wenn man das einmal eingerichtet hat passiert alles von alleine ohne das man was machen muss.
P.s. Ich habe extra den weg über ein eigenes Root-Zertifikat das man auf jedem Client installiert nicht erwählt.
-
-
@ignis-draco sagte in den ioBroker sicher machen:
Also ich bin sehr an Deinem Angebot interessiert.
[3] Wenn Interesse besteht kann ich hier auch mehr ins Detail gehen.
[4] hier im Forum gibt es ein paar gute Beispiele dafür. Bei Interesse würde ich auch meinen Bot mal vorstellen.Gruss Thomas
-
Um es einfach zu halten, bleibe bei deiner VPN Lösung, verwende keine Port Freigaben und setze ein Passwort für deinen Admin Benutzer, was dann automatisch dazu führt (außer du lehnst das im Menü explizit ab) das du https mit dem selbst erstellen Zertifikat deiner ioBroker Instanz nutzt.
Den Aufwand mit letsencrypt und co. kannst du dir sparen.
Damit hast du alles nötige erfüllt um deinen ioBroker abzusichern.
Grüße
TeNNo2k5 -
Hat jemand zufällig einen Weg gefunden auf iOS - Geräten, die Zertifikatswarnung zu umgehen?
Im Safari unter MacOS kann ich die Ausnahme hinzufügen, bzw. die Warnmeldung umgehen, aber unter iOS ist es mir bislang nicht gelungen.
Es wird lediglich die Seite "Die Seite ist unsicher" angezeigt und das war es dann.Zwar sind bei mir alle Ports dicht, aber etwas mehr Sicherheit kann ja nie schaden.
-
@stenmic sagte in den ioBroker sicher machen:
@ssw-mcor Beispiel:
Was hat das mit der FritzBox zu tun.Fritzbox (Adapter TR-064) sollte als Beispiel dienen - hier sind schließlich auch Login-Daten hinterlegt, ohne Diese, kein Zugriff !!!
Was das Internet angeht, laufen alle Adapter hinter dem Router (bei mir der Fritzbox), somit gehe ich mal davon aus, dass die gesamte Kommunikation/Datenaustausch verschlüsselt wird...
Siehe auch:
Allerdings hab ich auch keine Ahnung
-
@ignis-draco sagte in den ioBroker sicher machen:
Durch ein Zertifikat (z.b. lets encrypt) kann man den Daten Verkehr zwischen Rechner und Server Verschlüsseln und verifizieren. Also sicherstellen das der Server der richtige ist und das die Daten nicht einfach mit belauscht werden können.
@ignis-draco Vor ab, ich bin kein Netzwerkexperte, war mir bis eben aber sicher, daß ein lets encrypt Zertifikat (wie alle anderen Zertifikate auch) nichts zur Verschlüsselung beiträgt, sondern lediglich den Browser veranlaßt, bei einer https-Verbindung (also einer Verbindung, die auch ohne irgendein Zertifikat bereits verschlüsselt ist) keine Warnung anzuzeigen, weil er die Identität des Servers mit Hilfe des Zertifikats überprüft.
Ich wäre sogar soweit gegangen zu behaupten, daß ich auch einem Server, der meinem Browser bei einer https-Verbindung ein vertrauensvolles Zertifikat "zeigt" und der Browser ihm daher "vertraut" (also keine Warnung anzeigt), zusätzlich auch noch immer selber vertrauen muß, denn schließlich kann sich ja jeder (also auch ein "nicht seriöser Serverbetreiber") solch ein Zertifakt beschaffen - oder?
Gibt es nicht einen Unterschied zwischen Zertifikaten und Schlüsseln?
Liege ich mit meinem "sicher geglaubten Wissen" falsch?
-
Beim Verbindungsaufbau über https werden die Zertifikate dein eigenes und die vom Ziel Server werden dazu genutzt die eigentliche Verschlüsselung aufzubauen, zu einem Zertifikat gehört ein privater und ein öffentlicher Schlüssel.
Die öffentlichen Schlüssel werden zwischen beiden Seiten ausgetauscht, und durch ein Mathematisches Verfahren wird sichergestellt das nur der Server und der Client mit ihrem privaten und geheimen Schlüssel die eigentliche Verbindung entschlüsseln können.
Näheres dazu hier:
https://www.elektronik-kompendium.de/sites/net/1909031.htmAlso ja es ist egal woher die eigentlichen Zertifikate stammen solange Sie einem gewissen aktuellen Standard entsprechen, dein Betriebssystem und auch z. B. der Firefox Browser bringen von Haus aus eine Liste von Zertifizierungsstellen mit und nur deren Zertifikaten wird automatischer vertraut solange Sie gültig sind.
Und ja ein nicht „seriöser Serverbetreiber“ kann sich einfach z. B. ein kostenloses letsencrypt Zertifikat ausstellen, und somit Seine Webseite mit https anbieten ohne das beim User im Browser eine Fehlermeldung erscheint.
Es gibt auch Zertifizierungsstellen die kostenpflichtig sind und bei denen genau geprüft wird, wer denn da sich für welchen Dienst ein Zertifikat austellen möchte.
Nicht desto trotz ist letsencrypt ein super Service der den https Standard vorangetrieben hat.
-
@tenno2k5 Hm..., ich bin noch nicht überzeugt, denn so wie ich das verstehe, ist Dein Link https://www.elektronik-kompendium.de/sites/net/1909031.htm ja gerade die Beschreibung eines Verfahrens, daß z. B. für https eingesetzt wird, aber eben nichts mit einem erworbenen, selbst erzeugten oder auf einem Server installierten/bereitgestellten Zertifikat zu tun hat, sondern "nur" die Verschlüsselung realisiert.
Beim Verbindungsaufbau über https werden die Zertifikate dein eigenes und die vom Ziel Server werden dazu genutzt die eigentliche Verschlüsselung aufzubauen, zu einem Zertifikat gehört ein privater und ein öffentlicher Schlüssel.
Diese Deine Beschreibung kenne ich so nur für Email-Verschlüsselung. Das hat aber soweit mir bekannt, nichts mit https zu tun, sondern soll dafür sorgen, daß eine Email die (warum auch immer) auf ihrem Weg zum Empfänger irgendwo (zwischen)gespeichert wird, dort dann verschlüsselt liegt (also nicht von Personen mit Zugriff auf den Speicherort gelesen werden kann) und wirklich nur vom vorgesehenen Empfänger gelesen werden kann.
Ich bin noch immer der Meinung (laß mich aber gern eines Besseren belehren):
Verschlüsselung und Zertifikat sind zwei Paar Schuhe und für die sichere Kommunikation mit einem Server via https braucht keine Seite (schon gar nicht der Client. Woher soll das denn auch kommen, wenn man z. B. mit einer frisch installierten Maschine eine https-Seite im Browser aufruft?) ein Zertifikat, wenn ich dem Server vertraue. Ein Indiz, ob ich dem Server vertrauen sollte/darf ist dann vorhanden, wenn er ein anerkanntes (also vom Browser ohne Warnung akzeptiertes) Zertifikat vorweisen kann.