Wie sicher ist der Node.js Webserver

BTCStorage

Ensign
Registriert
Mai 2020
Beiträge
137
Ich habe heute etwas ausprobiert, ein Node.js Webserver Tutorial: https://www.digitalocean.com/commun...web-server-in-node-js-with-the-http-module-de

Ich frage mich jetzt wie sicher ist so ein Webserver gegen verschiedene Angriffe, wenn ich jetzt auf meinem VPS Server diesen Node.js Webserver laufen lasse und den Port dafuer freischalte hat ja jeder Zugriff. Gibt es den vielleicht fuer Node.js irgendwo schon fertige sichere Webserver Scripte oder benutzt jede diese gleiche Variante?
 
Als welcher nutzer soll der webserver denn mit welchen rechten laufen? wie konfigurierst du die Firewall? Wie macht du logging und nutzt du tools wie fail2ban um moegliche Angreifer zu finden und loszuwerden.

Kommt halt drauf an was du alles implementierst
 
Zuletzt bearbeitet:
Soweit mir bekannt ist der NodeJS-Core relativ sicher. Allerdings gibt es (wie bei allen Anwendungen) zu beachten, dass
  • die Anwendung selbst auf dem neusten Stand ist
  • die verwendeten Bibliotheken auf dem neusten Stand sind und keine bekannten Sicherheitslücken enthalten
  • der eigene Code den allgemein bekannten best practices entspricht
Weiterführende Informationen findest du hier und hier. Viel Erfolg!
 
  • Gefällt mir
Reaktionen: BTCStorage
fullnewb schrieb:
Soweit mir bekannt ist der NodeJS-Core relativ sicher. Allerdings gibt es (wie bei allen Anwendungen) zu beachten, dass
  • die Anwendung selbst auf dem neusten Stand ist
  • die verwendeten Bibliotheken auf dem neusten Stand sind und keine bekannten Sicherheitslücken enthalten
  • der eigene Code den allgemein bekannten best practices entspricht
Weiterführende Informationen findest du hier und hier. Viel Erfolg!
So aehnlich war auch mein Gedanke, das wohl irgendwie die Webserver in Node.js nicht mehr benoetigen, weil in den Tutorials zum Aufbau der Webserver keine Infos zu solchen unbekannten Sicherheitsluecken stehen. Danke fuer die hilfreichen Links zu Security Practices.
Ergänzung ()

madmax2010 schrieb:
Als welcher nutzer soll der webserver denn mit welchen rechten laufen? wie konfigurierst du die Firewall? Wie macht du logging und nutzt du tools wie fail2ban um moegliche Angreifer zu finden und loszuwerden.

Kommt halt drauf an was du alles implementierst
Ich habe heute zum ersten mal so ein Webserver Beispiel nachgebaut und kann wegen zu wenig Erfahrung dadrueber dein Fragen nicht beantworten. Ich war bei meinem Beispielserver Aufbau erst in der Lage vnn Auswaerts mit dem Browser den Server zu erreichen, nachdem ich die Firewall gans ausgeschaltet hatte und ich muss erst noch Informationen finden wie man das einstellt das die Firewall natuerlich weiter laeuft aber der noetige Port fuer den Webserver frei wird. Ich weis auch nicht was fail2ban ist und ob man das bei Node.js Webservern benutzen kann. Hast du selber schon Node.js Webserver aufgebaut oder sind die Infos die du schreibst generell fuer verschiedene Webserver Arten?
 
Zuletzt bearbeitet:
Node.js ist nicht mehr oder weniger unsicher oder sicher als ein beliebiger anderer Webserver. Das kommt voll und ganz darauf an was für Anwendungen damit bereit gestellt werden, ob diese sauber programmiert sind oder Fehler enthalten, ob das System vernünftig abgesichert und gehärtet ist und wie falchlich fit derjenige ist, der den Kram betreibt und entwickelt. Anhand von #4 würde ich vermuten, dass du es nicht bist und solche Dienste nicht öffentlich erreichbar betreiben solltest.
Im Zweifelsfall kann man sich an den OWASP Cheat Sheets entlang hangeln, die gibt es für zig Anwendungen, auch für Node.js.
Ein weiterer Anlaufpunkt wären die CIS Benchmarks, die vor allem gängige Security Best Practices aufzeigen für die häufigsten Betriebssysteme und Distributionen, aber auch Server- und Client-Anwendungen, Netzwerke und Netzwerkgeräte uvm. (afaik nicht für Node.js aber für das zugrunde liegende OS und vieles drum herum sehr nützlich).
 
snaxilian schrieb:
Node.js ist nicht mehr oder weniger unsicher oder sicher als ein beliebiger anderer Webserver. Das kommt voll und ganz darauf an was für Anwendungen damit bereit gestellt werden, ob diese sauber programmiert sind oder Fehler enthalten, ob das System vernünftig abgesichert und gehärtet ist und wie falchlich fit derjenige ist, der den Kram betreibt und entwickelt. Anhand von #4 würde ich vermuten, dass du es nicht bist und solche Dienste nicht öffentlich erreichbar betreiben solltest.
Im Zweifelsfall kann man sich an den OWASP Cheat Sheets entlang hangeln, die gibt es für zig Anwendungen, auch für Node.js.
Ein weiterer Anlaufpunkt wären die CIS Benchmarks, die vor allem gängige Security Best Practices aufzeigen für die häufigsten Betriebssysteme und Distributionen, aber auch Server- und Client-Anwendungen, Netzwerke und Netzwerkgeräte uvm. (afaik nicht für Node.js aber für das zugrunde liegende OS und vieles drum herum sehr nützlich).

Das sind natuerlich Sachen die ich als laie niemals richtig umsetzen koennte, aber die Infos sind sehr interessant.

Was denkst du ueber das Node.js Framework Express (https://expressjs.com/de/), es sieht so aus das es fuer Node.js Webserver Einsatz gedacht ist, denkst du das Framework ist sicher genug aufgebaut, sodass man es ohne zu viel Bedenken einsetzen kann, ohne jetzt selber zu versuchen diese ganzen Sicherheitsaspekte zu studieren?
 
Diese Webserver sind für den Produktiveinsatz geeignet, allerdings würde ich sie definitiv nicht ohne einen Reverse-Proxy direct ans WAN anbinden.

Lass den Server lokal laufen und nutze HAproxy, Nginx, Traefik, Caddy, Envoy etc. um den Traffic von "Draußen" auf Port 80/443 des VPSs entgegen zu nehmen. Dieser Proxy terminiert dann die TLS/SSL Verbindung und routet an deine intern laufende Webanwendung, die z.B. auf port 3000 läuft weiter. Dafür ist natürlich auch eine Domain, die dir gehört nötig.

Alternativ kannst du natürlich auch VPN nutzen, wenn du der einzige bist. Das wird nur nichts, wenn diese Webanwendung öffentlich zugänglich und von anderen genutzt werden soll.
 
  • Gefällt mir
Reaktionen: BTCStorage und Nase
Kann man Nginx auch auf einem Windows VPS Server installieren oder ist das nur fuer Linux gedacht?
Ich frage mich auch ob es irgendwelche Programme oder sowas wie eine Batchdatei gibt mit welcher man Ngnix direkt richtig einstellen kann, damit es die Anfragen von Port 80 checkt und nach port 3000 weiter sendet.

Oder wuerdet ihr mir nicht empfehlen ein Windows VPS Server zum hosten der Webseite zu benutzen? Ich habe bisher nur Windows benutzt, aber wenn Linux aus irgendeinen Grund besser ist koennte ich auch versuchen das mit Linux auf zu bauen. Bei Windows scheint alles einfacher zu sein mit dem Userinterface.
Ergänzung ()

Ich dachte Ngnix ist kostenlos, jetzt sehe ich gerade auf der Webseite das es etwas kostet, seit wann ist da so? https://www.nginx.com/pricing/
 
Nginx kostet nichts.
Nginx plus kostet.

Nginx kannst du auch unter Windows installieren
 
  • Gefällt mir
Reaktionen: BTCStorage
Es gibt diverse Seiten die bei der Erstellung der nginx configs helfen können, z.B. https://www.digitalocean.com/community/tools/nginx oder https://www.serverion.com/nginx-config/

Jedes OS hat seine Vor- und Nachteile aber wenn die betroffene Software unter Windows läuft spricht nix dagegen. Auch Linux kann optional eine oder mehrere grafische Oberflächen haben, ist nur eher selten wenn es als Server verwendet wird. Gleiches gilt btw. bei Windows wenn man den Nano oder Core Server einsetzt ;)
Auch bei Microsoft selbst gibt es Produkte wo man manches nur noch ausschließlich über die CLI erledigen kann. Von daher: Keine Scheu vor der Konsole und nimm ansonsten das, womit du am besten klar kommst. Das System entsprechend absichern und härten musst du sowieso, egal ob Windows oder Linux.
Nachteil bei Windows ist halt die relativ teure Lizenzierung. Essentials kostet dich ab 300€, Standard ab 500€ und je nachdem kommen da dann natürlich noch ggf. User- bzw. Device-CALs hinzu.
 
  • Gefällt mir
Reaktionen: BTCStorage und Nase
Hallo Leute, eine Sache ist mir aufgefallen, wenn irgendwie die verbindung zum Mysql Server mal kurz weg geht hoert das node js Script auf zu arbeiten und man muss es manuel neu starten mit dem Komando "node index.js"

Was fuer Loesungen gibt es den wie man das automatisch neu starten kann, ich kann ja nicht immer selber nachkucken. Kann man denn irgendwie bei jedem Fehler erst nach kucken was fuer ein Fehler das ist und wenn es zu Beispiel daran lag das kurz die Verbindung zur Mysql Datenbank weg war, dann laest man das script die verbindung nochmal neu aufbauen?
 
Zurück
Oben