Node.js Server auf VPS Server erreichen HTTP

Javaris

Grünschnabel
Hallo, ich versuche zur Zeit mit Node.js Sachen aus zu testen, ich kann etwas Hilfe gebrauchen, bin noch ganz neu dabei.

Ich habe heute ein einfaches HTTP Server Beispiel ausgestet, folgender Code kommt in eine index Javascript Datei und dann startet man die Datei ueber node index.js

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
}).listen(8080);

Wenn man dann im Browser die Adresse http://localhost:8080 eingibt bekommt man ein "Hello Wordl" im Browser zurueck, ganz simpel und einfach klappt alles.

Jetzt habe ich das ganze auf die gleiche Weise auf ein VPS Server installiert und dort funktioniert es natuerlich auch genauso wie auf meinem PC, aber was ich jetzt machen will ist folgendes, wenn ich auf meinem lokalen PC die IP adresse von meinem VPS Server aufrufe, dann will ich den node.js server erreichen koennen und von ihm die Ausgabe auch bekommen, also zum beispiel folgende Adresse will ich auf meinem lokalen PC im browser eingeben: http://194.84.342.181:8080 also statt localhost gebe ich die IP Adresse vom VPS Server ein.

Im Moment funktioniert es nicht und ich weis nicht genau warum, muss ich in der index.js datei auf dem VPS Server Sachen einbauen und aendern, oder muss man fuer den VPS Server irgendwelche Sachen anders einstellen?
 

ComFreek

Mod | @comfreek
Moderator
Typischerweise musst du die/oder mehrere Firewall(s) konfigurieren, dass Port 8080 zur eingehenden Kommunikation zugelassen wird.

Schau am besten mal in die Doku deines VPS-Providers.
 

Javaris

Grünschnabel
Typischerweise musst du die/oder mehrere Firewall(s) konfigurieren, dass Port 8080 zur eingehenden Kommunikation zugelassen wird.

Schau am besten mal in die Doku deines VPS-Providers.

Das habe ich vermutet, dann suche ich mal nach Beispielen wie ich den Port freischalten kann, danke fuer den Tipp.

Weist du ob es vielleicht Sicherheitsrisiken gibt wenn man den Port freischaltet, kann es sein das dann auch anderes Leute auf mein VPS Server Zugang bekommen durch diesen Port? ich will ja eigentlich nur erlauben das ueber den Browser mein Node.js Webserver erreicht werden kann.
 

Javaris

Grünschnabel
ich habe eben Testweise die Firewall vom vps server ganz ausgeschaltet und dann funktioniert es auch.

ich muss also heraus finden wie ich ein bestimmten port immer freischalten kann fuer mein node.js server.

ich hoffe man findet auch Infos ueber Sicherheitsrisiken
 

ComFreek

Mod | @comfreek
Moderator
ich habe eben Testweise die Firewall vom vps server ganz ausgeschaltet und dann funktioniert es auch.
Oh nein, mach doch sowas nicht :D

Weist du ob es vielleicht Sicherheitsrisiken gibt wenn man den Port freischaltet?
Ja, gibt es und zwar so viele Risiken, wie die Applikation, die auf dem Port läuft, nach außen freigibt.

Wenn dein Node.js-Server z. B. einen Dateipfad als String entgegennimmt (etwa aus der URL geparst) und den Dateiinhalt zurückliefert, dann ist das eine sehr große Sicherheitslücke.
Aber es kann auch viel subtiler gehen, siehe Bufferoverflowangriffe. (Gut, bei JS tauchen die in der klassischen Form wie in C nicht direkt auf.)

Auch wird dein Server ggf. anfälliger für DDoS-Angriffe. Wo vorher eine effiziente Firewall die abgewehrt hat, liegt es nun an der am Port lauschenden Applikation damit fertig zu werden.

Du kannst auch einfach mal nach "open port security risk" googeln.
 

Javaris

Grünschnabel
Oh nein, mach doch sowas nicht :D


Ja, gibt es und zwar so viele Risiken, wie die Applikation, die auf dem Port läuft, nach außen freigibt.

Wenn dein Node.js-Server z. B. einen Dateipfad als String entgegennimmt (etwa aus der URL geparst) und den Dateiinhalt zurückliefert, dann ist das eine sehr große Sicherheitslücke.
Aber es kann auch viel subtiler gehen, siehe Bufferoverflowangriffe. (Gut, bei JS tauchen die in der klassischen Form wie in C nicht direkt auf.)

Auch wird dein Server ggf. anfälliger für DDoS-Angriffe. Wo vorher eine effiziente Firewall die abgewehrt hat, liegt es nun an der am Port lauschenden Applikation damit fertig zu werden.

Du kannst auch einfach mal nach "open port security risk" googeln.

Das ist echt gut zu wissen worauf man alles achten muss.

Node.js ist ja eigentlich schon ein groses Projekt geworden im Laufe der Jahre, ich wuerde mich nicht wundern wenn es da schon fertige Webserver Scripte gibt welche sicher sind, frage ist nur wo soll man das suchen und finden. Kennst du gute Quellen wo man am besten nach sowas nachfragen und suchen kann?

Ich koennte Tage und Wochen Infos lesen und waere bestimmt trotzdem nicht in der Lage was wirklich gutes zu bauen, am besten waere ein fertiges Webserver Script, man kann ja auch sonst immer alles moegliche downloaden fuer Node.js
 

ComFreek

Mod | @comfreek
Moderator
Node.js ist ja eigentlich schon ein groses Projekt geworden im Laufe der Jahre, ich wuerde mich nicht wundern wenn es da schon fertige Webserver Scripte gibt welche sicher sind, frage ist nur wo soll man das suchen und finden.
Klar gibt es die :)

Kennst du gute Quellen wo man am besten nach sowas nachfragen und suchen kann?
Ja, Google + mit bisschen Menschenverstand die NPM Packagestatistiken ansehen. (Wann war die letzte Version? Wann der letzte Commit? Wie viele offene Issues auf GitHub? Wie viele Nutzer? Wie viele GitHub Stars? Von wem maintained? Steht eine Firma dahinter? Nutzen Firmen das?)
Du könntest hier starten: express.

Für was möchtest du denn einen Webserver? Nur um statische Dateien auszuliefern? Dann nutze lieber etwas anderes als Node.js (nginx z. B.).
Beachte, dass dich auch fertige Webserverframeworks dich nicht magisch davor schützen, selbst Sicherheitslücken einzubauen.
 

Javaris

Grünschnabel
Ein Node.js Webserver wollte ich gerne benutzen damit ich GET Variablen aus der Anfrage in eine Datenbank speichern kann. Ich habe eine fertige Loesung hierfuer in PHP schon gebaut, aber dann habe ich mehr Infos zu Node.js gelesen und jetzt bin ich der Meinung das Node.js das besser kann als PHP, weil ich zum Beispiel auch jede Sekunde von vielleicht hundert oder Tausend Benutzern gleichzeittig die Daten abspeichern will. Der Aufbau soll zumindest in der Lage sein auch so groesere Mengen gut zu verarbeiten und irgendwie scheint Node.js die bessere Wahl fuer sowas zu sein als PHP.

Und gegebenfalls soll es spaeter auch moeglich sein jede Sekunde diese Daten aus der Datenbank abfragen zu koennen, also so wie bei einer API

Mit Nginx moechte ich auch noch in Zukunft was aufbauen, habe auch gelesen das man damit viel schneller Dateien zurueck geben kann und ich will da eine Mischung aus Nginx und Apache aufbauen, weil fuer Anfragen soll Apache besser sein.

Ich werde jetzt wahrscheinlich das express Framework benutzen fuer node.js dort ist auch eine Webserverloesung mit drine.