Sicherheit: Server und Datenbanken im Heim-LAN

Sicherheit: Server und Datenbanken im Heim-LAN

Als jemand mit eher begrenzten Kenntnissen über Netzwerksicherheit würde ich gerne wissen: Ist es «sicher», (1) einen MySQL-Server, (2) einige Docker-Container mit beliebigen Diensten und (3) einen Apache oder Nginx als Reverse-DNS in einem Standard-Heim-LAN auszuführen und sie dem Internet auszusetzen? Mein Netzwerk-Setup ist recht einfach: Ein Router stellt eine Verbindung zum Internet her, alle Geräte im Haus verbinden sich direkt mit diesem Router. Ich kann Portweiterleitung und DDNS verwenden, um jedes Gerät im LAN zu einem Server zu machen. Derzeit ist keine DMZ konfiguriert und ich verwende keine physische Firewall.

Ist es sicher, Ports wie 80 an Geräte in einem solchen LAN weiterzuleiten, oder sollte ich sogar darauf verzichten, die öffentliche IP des Routers bei einem DDNS zu registrieren? Mit anderen Worten: Kann das beschriebene Setup (1) die Geräte angreifbar machen, an die Ports weitergeleitet werden (Malware-Injektion, Datendiebstahl, …) oder sogar (2) andere Geräte im LAN angreifbar machen, die nichts mit den Servern zu tun haben?

Natürlich ist dies keine Produktionsumgebung. Ich arbeite einfach oft an mehreren Projekten gleichzeitig, auf die ich von außerhalb meines Hauses zugreifen möchte, und ich möchte nicht viel Geld für AWS, GCP usw. ausgeben. Daher wollte ich Server für MySQL, Mongo, Neo4J usw. immer einsatzbereit haben und auch einige meiner Web-Apps für persönliche Demo- und Testzwecke bereitstellen.

Antwort1

[…]Kann das beschriebene Setup (1) die Geräte anfällig machen, an die die Ports weitergeleitet werden (Malware-Einschleusung, Datendiebstahl, …) oder sogar (2) andere Geräte im LAN anfällig machen, die nichts mit den Servern zu tun haben?

Ja und ja.

Ist es sicher[?]

Dies ist wahrscheinlich eine persönliche Meinung, je nachdem, was Sie als „sicher“ bezeichnen. In der Praxis sind jedoch wahrscheinlich zwei Dinge zu berücksichtigen:

  • Moderne Server sindständigunter einer Flut automatisierter Exploit-Skripte (was normalerweise die Art und Weise ist, wie die meisten Angreifer ihre Opfer ins Visier nehmen).

  • Die meisten dieser Bedrohungen können durch regelmäßige Software-Updates, ein Mindestmaß an Vorsichtsmaßnahmen und einige geeignete Sicherheitseinstellungen (die Sie vernünftigerweise recherchieren können) eingedämmt werden.

Fazit: Wenn Sie diesen Weg wählen, spielen Sie einen Amateur-Systemadministrator für Ihr Netzwerk (Sie lesen wahrscheinlich Protokolle, suchen nach Software-Updates usw.). Wenn Ihnen diese Rolle nichts ausmacht, sind Sie mit einer Heimkonfiguration relativ sicher. Andernfalls sind herkömmliche Dienste von Drittanbietern möglicherweise eher Ihr Ding.

Die Einrichtung meines Netzwerks ist ganz einfach: Ein Router stellt die Verbindung zum Internet her und alle Geräte im Haus verbinden sich direkt mit diesem Router.

Dies kann relativ sicher sein, wenn die richtigen Firewall-Einstellungen vorhanden sind. Allerdings möchten Sie vielleicht einen billigen PC (einen alten oder vielleicht sogar einen Raspberry Pi) für die Firewall-Aufgabe einsetzen, mit etwas wiepfsense.

Ist es sicher, Ports wie 80 an Geräte in einem solchen LAN weiterzuleiten, oder sollte ich sogar darauf verzichten, die öffentliche IP des Routers bei einem DDNS zu registrieren?

Dies ist zwar nur eine Anekdote, aber da ich seit Jahren ein sehr ähnliches Setup zu Testzwecken und für den Eigengebrauch verwende, hatte ich nie ein Problem mit der Sicherheit.

Zu Apache/Nginx und MySQL im Speziellen, nur ein paar kleine Anmerkungen:

  • Stellen Sie sicher, dass Apache/Nginx nicht als offener Proxy fungiert (was leicht missbraucht werden kann und Ihren Server zum Ziel macht). Diese Gefahr lässt sich im Allgemeinen mit einigen einfachen Konfigurationsbefehlen verringern (wie die hier beschriebenen für Apache).

  • Für Apache würde ich empfehlen, .htaccess-Dateien zu deaktivieren.

  • Ein großes Problem bei MySQL ist die Verwendung browserbasierter Verwaltungstools wie phpMyAdmin. Zusammen mit WordPress ist dies bei der Überprüfung von Protokollen die am häufigsten angegriffene Software, die ich gesehen habe (wahrscheinlich, weil SQL-Injection potenziell so mächtig sein kann). Jede Webanwendung, die eine Verbindung zu einer Datenbank herstellt, sollte ordnungsgemäß geschützt sein, aber die Ausführung solcher Tools ist (potenziell) problematisch.

  • Beachten Sie, dass das oben Genannte mit der Beschränkung des Datenbankserverzugriffs auf nur ausgewählte lokale Computer und eingeschränkten Datenbankberechtigungen einhergeht.

  • SQL-Injection-Angriffe können durch Web Application Firewalls (WAF) abgeschwächt werden. Drittanbieterdienste wie CloudFlare bieten diese Art von Diensten an (derzeit 20 $/Monat, auch mit anderen Funktionen) für eine "Einstellen und Vergessen"-Lösung. Es ist jedoch ziemlich einfach, diese Art von Funktion selbst über Apache oder Nginx mit Modulen wie hinzuzufügen:ModSicherheit.

Abschließend sei gesagt, dass die Grundlagen zur Sicherung Ihres Webservers und von MySQL gut dokumentiert und normalerweise recht einfach zu recherchieren sind, z. B. „Wie sichere ich Apache unter Linux?“ oder „Wie verhindere ich SQL-Injection-Angriffe?“. Beides sind allgemeine Tipps, die die meisten böswilligen Benutzer davon abhalten, Ihre Systeme zu manipulieren.

Sie können es natürlich auch ausgefallener gestalten und versuchen, zusätzliche Sicherheit hinzuzufügen (wie etwa eine echte DMZ), aber das bedeutet möglicherweise viel mehr Arbeit.

verwandte Informationen