Funksteckdosen via. Arduino Wemos übers Internet ansteuern

Hey,

ich möchte über eine Webseite gerne mehrere Funksteckdosen ansteuern, leider habe ich nur eine sehr traffic lasitge Idee die ich so nicht gerne umsetzen möchte.

Meine Idee wäre, jede Sekunde (!) außer zwischen z.B. 24 Uhr - 7 Uhr eine Anfrage an meinen Webspace zu senden, der mir via. PHP Script dann eine Zahl zurückmeldet, überdie ich dann die Steckdosen ansteuern kann.
Das halte ich aber aus Traffic Gründen und da es wie ein Serverangriff aussehen könnte für eine schlechte Idee.

Da ich "Weltweit" meine Steckdosen steuern möchte, möchte ich auch keinen Webserver auf dem Arduino einrichten, da ich dann zudem auch nicht meine Seite nutzen kann bzw. es unschön finde, wenn die Seite neugeladen werden muss, wenn ein Licht angeschaltet wurde.

Habt ihr eine andere Idee, wie ich kontinuierlich abfragen kann, ob ein Licht angeschaltet worden ist?
Ich wäre euch echt sehr dankbar! :wink:

mfg
Kai

KaiAlexander:
... leider habe ich nur eine sehr traffic lasitge Idee die ich so nicht gerne umsetzen möchte.

Ich sehe nicht, wo da sonderlich viel Traffic erzeugt wird.

Evtl. ist Dein Wunsch besser realisierbar, wenn Du einen Raspberry Pi nimmst, der über eine „geheime“ URL erreichbar ist (mit Passwortabfrage und Todesstreifen). Wenn der minütlich oder so eine Seite ins Netz stellt, auf der sich ein Link zu ihm befindet und Du diese Seite/URL nirgendwo verlinkst oder sonstwie veröffentlichst, ist das IMO sicher genug.

Gruß

Gregor

Ajax wäre hier das Stichwort.
Schalten per Websocket, mit NETIO App siehts auch schön aus.

Diese Aufgabe schreit geradezu nach einem MQTT Broker.
Den kannst du auf einem RaspberryPi aufsetzen (Mosquitto) oder bei einem Webdienst.

Will er ja nicht.

skorpi08:
Ajax wäre hier das Stichwort.
Schalten per Websocket, mit NETIO App siehts auch schön aus.

An Ajax bzw. jQuery habe ich auch schon gedacht.
Dann könnte ich das aber nur Zuhause steuern, da der Arduino ja nur local in meinem Wlan existiert, oder? Wobei man sich dann fragen sollte, ob ich meine Lichter überhaupt von außerhalb steuern muss.

Habe mir dafür vor einigen Jahren ein simples JavaScript geschrieben.
Die HTML-Seite dazu kann man entweder irgendwo in den Tiefen des Webs ablegen oder auch auf dem EthernetShield auf die SD-Karte schubsen.
Der Arduino braucht eine feste IP und muss im Router nach außen freigegeben werden.

Als nächstes benötigt man einen DynDNS-Dienst, der die IP des Routers nach jeder Änderung speichert. Dann kann man im JavaScript die URL fest eintragen und DynDNS löst die IP korrekt auf.

Seitens des Arduino kommt dann eine Anfrage an, die man mit Parametern versehen kann. Z.B. welche Steckdose geschaltet werden soll, an oder aus, ein Kennwort und ein Salt-Wert, damit nicht jeder Hanswurst Deine Anlage schalten kann.

Dann muss auch nicht ständig was gepingt werden.

Simplifiziert sieht die "Anfrage" in der Form der URL etwa so aus:
http://meinArdu.dyndns.de/switch=1&on&password&4711

Trib:
Als nächstes benötigt man einen DynDNS-Dienst, der die IP des Routers nach jeder Änderung speichert. Dann kann man im JavaScript die URL fest eintragen und DynDNS löst die IP korrekt auf.

Über DynDNS sollte man wirklich gut nachdenken. Wenn man das nutzt, wird die IP-Nummer des betreffenden Rechners öffentlich. Als ich das einmal probeweise mit einem kleinen Rechenknecht gemacht hatte, wurde der prompt angegriffen. Deshalb bevorzuge ich die Methode mit einer „geheimen“ HTML-Datei. Wenn man diese Datei nirgendwo verlinkt und dort auch keine Links nach anderswo platziert, bleibt die geheim und taucht auch nirgendwo als „Referer“ auf.

Gruß

Gregor

Nachtrag: Mein Bananenrechner (Banana Pi) ist zwar nicht via DynDNS über eine öffentliche Adresse erreichbar, aber über eine HTML-Datei, die er minütlich aktualisiert. Siehe hier. Wer gerade nichts Besseres zu tun hat, kann mich bechatten, auf dem Bananenrechner läuft ein IRC-Daemon. Ach ja: Die „geheim.html“ gibt es nur vorübergehend :slight_smile:
Was solche Spiele angeht, vermeide ich nach besten Kräften den Einsatz anderer als der unbedingt nötigen Techniken. Je komplexer eine Sache ist, desto mehr muss man wissen, um Fehlern auf die Schliche zu kommen. Und um manche Fehler zu finden muss man sich wirklich sehr gut auskennen.

Naja, ich gebe meine IP weiter und öffne exakt einen Port. Und an diesem Port hängt ausschließlich der Arduino.
Selbst wenn der Ardu gehackt werden sollte, weil mein Kennwort + Salt ausgelesen wurde und die Signatur meiner Anfragen bekannt wäre, dann kann der böse Hacker bei mir Licht an und ausschalten.
Nichts was ich als Sicherheitsrelevant ansehe :wink:

Deine IP ist immer und überall einsehbar und ob man nun DynDns nutzt oder nicht, ist man ständig angreifbar.

Der Arduino reagiert überhaupt nicht, wenn die URL, die Parameter und Kennwort übereinstimmen. Daher wird ein Crawler auf einen Timeout laufen.

Trib:
Der Arduino reagiert überhaupt nicht, wenn die URL, die Parameter und Kennwort übereinstimmen.

Solche Arduinos hab ich auch :slight_smile: :slight_smile: :slight_smile:
Bist du dir da sicher, dass das so gewünscht ist?

Hehe, natürlich reagiert der Arduino schon, aber er antwortet nicht. Und das ist Absicht :smiley:

Ups, und jetzt sehe ich erst dass dort ein "nicht" zu wenig im Satz versteckt ist :o Das war selbstverständlich beabsichtigt, um Eure Aufmerksamkeit zu testen...

Trib:
... Deine IP ist immer und überall einsehbar ...

Woher willst Du die (oder irgendeine) IP-Nummer kennen, wenn sie nicht irgendwo „veröffentlicht“ wird? Wie willst Du zum Beispiel sehen, von welcher IP-Adresse aus ich hier jetzt gerade oder sonstwann poste?

Gruß

Gregor

Trib:
Naja, ich gebe meine IP weiter und öffne exakt einen Port. Und an diesem Port hängt ausschließlich der Arduino.
Selbst wenn der Ardu gehackt werden sollte, weil mein Kennwort + Salt ausgelesen wurde und die Signatur meiner Anfragen bekannt wäre, dann kann der böse Hacker bei mir Licht an und ausschalten.
Nichts was ich als Sicherheitsrelevant ansehe :wink:

Deine IP ist immer und überall einsehbar und ob man nun DynDns nutzt oder nicht, ist man ständig angreifbar.

Der Arduino reagiert überhaupt nicht, wenn die URL, die Parameter und Kennwort übereinstimmen. Daher wird ein Crawler auf einen Timeout laufen.

Sorry to blow your Bubble

Du richtest dein Netzwerk als Heimnetzwerk ein und nicht als öffentliches. Wenn doch, wird dir zumindest Windows fast alle Zugriffe blockieren. Weder NAS noch Netzwerkdrucker funktionieren dann ordentlich. Überall Einschränkungen, weil eben jedes andere Gerät als Angreifer gesehen wird.

Und da kommen dann die Probleme: im Heimnetzwerk ist dein Arduino vertrauenswürdig. Alle mit seiner internen IP ankommenden Dinge gelten erstmal als Harmlos. Er darf also Ports pingen, passwörter testen usw. Nichts was ihm verwehrt wird. Ist der Arduino infiltiert, wäre es durchaus möglich Updates aufzuspielen die mehr machen als du willst. Und da deine Netzwerkfreigaben intern sichtbar sind (zb port 443 oder port 139) kann man den arduino als relais programmieren, so das er dir den Zugriff auf diese Ports tunnelt. Und dann schützt nur noch dein Rechnerpasswort.

Was meinst du was die ganze Story mit den IoT Geräten, die umprogrammiert wurden und nun als Botnetz im Internet selbst starke Server vom Netz schiessen, bedeutet. Und selbst wenn dein netzwerk NICHT infiltiert wird, der Arduino wird dann zum Bot der deine Netzwerkbandbreite nutzen kann, soweit ihm seine Rechenleistung reicht. Und ich möchte wetten, das kaum ein Netzwerkdrucker im Heimnetz ein Passwort hat. Und die sind fast alle Updatefähig.

Ein Gerät das infiltiert ist hinter dem Router und dein Netzwerk zuhause ist übernommen.

Ein Gerät das infiltiert ist hinter dem Router und dein Netzwerk zuhause ist übernommen.

Richtig. IOT und Sicherheit ist ein wichtiges Thema.

Aber wie ändert man den Flash eines Arduino übers Netz?
Die Anleitung zum Bau einer Atombombe habe ich noch nicht gefunden. Aber dies würde mich mehr interessieren.

michael_x:
Richtig. IOT und Sicherheit ist ein wichtiges Thema.

Aber wie ändert man den Flash eines Arduino übers Netz?

Damit es nicht sofort auffällt, müsste ja zusätzlich die eigentliche Funktion des Arduinos erhalten bleiben (z.B. Steckdosen schalten oder Messwerte liefern). Man müsste das ganze Sketch mit zusätzlicher Bot-Funktionalität nachbauen. Das lohnt sich nur, wenn es ein extrem großes Interesse gibt, genau diesen Arduino zu knacken und es absolut keine anderen Einfallstore gibt.

Bei 100.000-fach verkauften IOT-Dingen sieht es natürlich anders aus. Hier lohnt ein Angriff, da sich bestimmt bei den 100.000 Teilen Unmengen wertvoller Daten abschöpfen oder eine Menge Schabernack treiben lässt. Viele IOT-Geräte lassen sich über Fernwartungsschnittstellen relativ leicht knacken. Sie bieten ein gigantisches Mehr an Rechenleistung als ein Arduino. Auf Ihnen läuft oft ein vollwertiges Betriebssystem, wo man ohne, dass es auffällt, eine Funktion nachrüsten kann.

Auch wenn es keine Anzeichen für Sicherheitslecks gibt, wird beim ESP8266 allerdings gewarnt, ihn in sicherheitskritischen Bereichen einzusetzen, da er aus chinesischen Quellen stammt, Hintergrundprozesse mit unveröffentlichtem Quelltext ausführt und nicht so durchsichtig wie ein 8bit-Arduino ist.

chefin:
Ist der Arduino infiltiert, wäre es durchaus möglich Updates aufzuspielen die mehr machen als du willst.

Man könnte den Arduino crashen/überlasten/... aber nicht infiltrieren.

Via Hack/Exploit den Flash neu zu programmieren wäre schon ein echtes Kunststück.

Sehe ich auch so. Vollkommener Quatsch den Arduino zu übernehmen und programmieren zu können.
Er bietet nach außen nur die Schnittstelle die man ihm programmiert hat.
Diese dient a) nicht zum programmieren und b) ist diese so individuell, dass ein generischer Virus/Angriff keine Chance hätte.
Es müsste schon jemand genau auf mich abgesehen haben und viel Zeit investieren. Mit dem Ergebnis: Licht an & aus.

Anders bei IoT. Dort sind Dinge genormt und bieten schlimmstenfalls OTA Firmware-Updates. Das ist wahrhaftig ein Problem!

Auch einen Port durch zu routen ist nicht so schlimm wie chefin es beschreibt. Sonst wäre potentiell jeder Router auf der Welt simplest anzugreifen und auszuhebeln.
Denn jede NAS, jedes Filesharing-Programm, selbst Win10 öffnen ständig Ports und diese werden zu dem einen Endgerät durchgeschleift. Da springt keine Firewall an und blockiert das gesamte Netzwerk.
Auch der Zugriff auf andere Geräte innerhalb des Netzes sind so nicht möglich. Schon allein physikalisch können die meisten Router die öffentliche IP von intern gar nicht auflösen.

Bleibe daher dabei, wenn man es einigermaßen vernünftig macht, passiert da nix.

@gregorss: Z.B. dieses Forum speichert Deine IP. Oder ich verlinke hier einfach ein Bild, welches auf einem von mir präparierten Server liegt.

Trib:
...
@gregorss: Z.B. dieses Forum speichert Deine IP. Oder ich verlinke hier einfach ein Bild, welches auf einem von mir präparierten Server liegt.

Dass das „Forum“ meine IP-Nummer kennt, ist klar. Aber wie Du es beschrieben hast, klang es, als könntest Du jederzeit feststellen, von welcher IP-Nummer meine Postings kommen. Das ist mit Sicherheit nicht der Fall.

Gruß

Gregor

PS: Man möge mir meine Vorsicht in diesen Dingen wohlwollend verzeihen. Ich habe ein paar Jahre das Netzwerk einer Werbeagentur, in der alle Plattformen von Windows bis Irgendwas-Unix (u. A. Linux) vertreten waren. Möglicherweise zeige ich leichte Nachwirkungen einer SAP (System-Administranten-Paranoia :slight_smile:

Früher konnte man sich von jedem die IP ansehen, jetzt können es nur die Admins

skorpi08:
Früher konnte man sich von jedem die IP ansehen, jetzt können es nur die Admins

Mag sein. Das war dann aber eine „Funktion“, die die Forums-Software möglich gemacht hat. Oder irre ich mich? Das war wohl vor meiner Zeit hier.

Gruß

Gregor