Hallo zusammen,
ich kenn mich einigermaßen mit Mikrocontrollern aus und möchte nun mal
eine Netzwerkanwendung entwickeln. Ziel ist es einen uC zu haben, der
Daten sammelt.zb. Temperaturdaten. Diese sollen dann per Smartphone App
abgefragt werden können.
Idee: Der Mikrocontroller soll als kleiner Server im Netzwerklaufen, bei
dem sich dann das Handy bei Bedarf die Daten holt. So ist meine ganz
grobe Idee.
Dann hab ich mal rumgesucht und z.B gefunden, dass man da einen Pi o.ä.
ganz gut nehmen kann. Allerdings stört mich an der Sache, dass ich dann
ja ein eigenen kleine PC betreibe, der für meine Begriffe immer
geupdatet werden muss und relativ gut angegriffen werden kann. Mir ist
wichtig, dass das Dingen sicher ist, da es ja 24/7 am Netz hängt. Und
ich hab auch keinen richtigen Überblick, was das Linux noch alles
veranstaltet im Netz.
Alternativ hab ich noch MICROCHIP DM320007-C gefunden. Das ist ein ARM
mit wohl schon geschriebenen TCP/IP Stack.
Habt ihr noch andere Ideen oder Meinungen dazu?
Es sollte nicht in übelsten Programmieraufwand ausarten. Also erstmal
relativ einfach sein und vorallem sicher.
Vielen Dank für Tipps.
Florian
Dreh es um: Statt den Pi via Internet erreichbar und damit angreifbar zu
machen, lass ihn seine Werte doch selbständig und periodisch an eine
externe Seite liefern. Dazu reicht irgendein kostenloser Webspace mit
kleinem Script, das die Werte in eine Datenbank einträgt und dann
verfügbar macht. So muss der Pi gar nicht von außen erreichbar sein und
das Risiko ist sehr gering, dass das irgendwie angreifbar ist.
Statt nem pi kannst du auch nen microkontroller deiner wahl und irgend
eine art von netzwerkanbindung nehmen, nen esp8266 oder so wie die
arduino's das mit dem ethernet machen.
Da kannst du dann auch deine Werte zu der daten-sammel-stelle schicken.
Andersrum, wenn das teil nur aus dem lokalen Netz verfügbar sein soll
und nicht per internet (ich bin mir bei den Anforderungen nicht sicher)
musst du dir nicht so große sorgen um deine Sicherheit machen.
wenn du auf dem PI Raspian installierst und unattended-upgrades
aktivierst werden da sicherheits-updates auch selbstständig installiert.
Alternativ kannst du dir auch mal Flyport Pro Ethernet bzw. Flyport Pro
Wifi anschauen. Darauf werkelt ein 16-Bit Pic und es gibt eine eigene
IDE mit eigenem Framework, die das Nutzen des TCP/IP-Stacks sehr einfach
macht.
MfG
Florian W.
rme schrieb:> Dazu reicht irgendein kostenloser Webspace mit> kleinem Script, das die Werte in eine Datenbank einträgt und dann> verfügbar macht. So muss der Pi gar nicht von außen erreichbar sein und> das Risiko ist sehr gering, dass das irgendwie angreifbar ist.
Guter Hinweis. So hab ich das auch vor in einem meiner nächsten
Projekte. Als Webspace kann ich Heliohost empfehlen, hab da meine
Testseite schon am laufen.
Ok, danke für die Tipps,
ich finde den WIZ ganz interessant. Hab mir mal den Code angesehen,
finde aber kein wirklich einfaches Codebeispiel.
Ich benötige ja eigentlich bloß ein Socket an dem ich auf eine Anfrage
warte. Wenn ich die Verbindung aufgebaaut habe, schicke ich einfache
Daten bzw lausche am Port. Ist dann ja praktisch ne serielle Verbindung.
Hab sowas mal mit .NET gemacht. Da war das ziemlich leicht. Hier finde
ich das etwas kryptischer, muss ich ja auch parrallel noch vom DHCP eine
IP bekommen.
Gibt es da irgendwie so ein Tutorial oder sowas?
Beim PC aktualisierst du den Web-Browser, das Email-Programm, den
Video-Player und den PDF-Reader regelmäßig, damit keine bösartigen
Seiten fremde Programme einschleusen. All diese Programme wirst du auf
deinem Raspberry Pi aber wohl nicht installieren oder zumindest nicht
benutzen.
Beim PC aktualisierst du das Betriebsystem, damit bösartige Programme
nicht unbemerkt weitere Programme installieren oder andere Programme
modifizieren. Auch das wird auf dem Raspberry Pi wohl kaum passieren,
solange du dort nur Software installierst, die offiziell im
Software-Center bereitgestellt werden.
Sicher - ein gewisses Restrisiko bliebt. Aber das ist geschätzt 100x
geringer, als auf Geräten, mit denen du im Internet herum surfst und
spielst.
Da der Wiznet Chip mehrere gleichzeitige Verbindungen unterstützt ist es
eben nicht ganz so einfach wie ein serieller Port. Gibt's aber auch. Die
AT Firmware des ESP8266 kann einen Socket 1:1 zum seriellen Port
durchschleifen. Und dann gibt es noch den altebkeannten Lantronics
Xport.
Sicher gibt es einige Ethernet/WLAN Chips, die sich über Internet
praktisch nicht hacken lassen. Ich denke, dass gilt praktisch für fast
alle. Angreifer aus dem Internet können nicht
- Fremde Software einschleusen.
- Fehlfunktionen ausnutzen, um befehle/Programme auszuführen, die nicht
vorgesehen sind.
Aber sie können durchaus Befehle ausführen, die in deiner Anwendung
vorgesehen sind. Dafür kann der Ethernet Chip aber nichts und davor kann
er nicht schützen!
Der Knackpunkt ist die Anwendung, die du damit aufbaust. Stell Dir einen
schlechten Türöffner vor, der nicht Passwort-gesichert ist. Den kann
dann jeder Andere Mensch auch missbrauchen - es sei denn, du schränkst
den Zugriff auf bestimmte Endgeräte ein. Oder du sorgst für ein
Passwort, dass niemand erraten kann und niemand belauschen kann.
Wobei man sich bewusst sein sollte, dass es "niemand" nicht gibt. Jedes
Passwort ist knackbar - es ist nur eine Frage des Aufwandes. Das ist bei
herkömmlichen Schlössern ebenso. Absoulte Sicherheit gibt es nicht und
braucht man auch nicht. Angemessene Sicherheit aber schon.
Also mach Dir mehr Gedanken über die Anwendung.
Eine relativ einfache Möglichkeit, unsichere Embedded Systeme zu
beschützen besteht darin, einen Webserevr mit sicherer Web-Anwendung
davor zu schalten. Die kann dann gerne auch irgendwo bei einem Webhoster
extern betrieben werden. Du kannst deinen Home-Router ja so
konfigurieren, dass er Befehle nur von deinem (externen) Webserver rein
lässt und alle Fremden abblockt.
Wir wäre es denn deinen mini Anwendungsserver gar nicht von Netz aus
frei zugänglich zu machen sondern du wählst dich mit deinem Handy über
eine gesicherte VPN Verbindung erst in dein Netz ein greifst dann
"lokal" auf deine Daten zu.