Ist es riskant, einen Datenbankserver und einen Webserver auf demselben Computer zu haben?

8

Es scheint, als wäre es einfach, den Datenbankserver auf demselben Computer wie den Webserver auszuführen, aber gehen wir damit ein großes Sicherheitsrisiko ein?

Die Umgebung wird Windows 2008 Server, Postgresql (neueste Version, möglicherweise 9.0, wenn es herauskommt) und Apache 2 sein.

CLJ
quelle
Es hängt davon ab, ob. Können Sie weitere Details zu dem von Ihnen in Betracht gezogenen Szenario angeben?
K. Brian Kelley

Antworten:

7

Nicht unbedingt.

Angenommen, Ihr Webserver wird kompromittiert, erhält der Angreifer weiterhin die Berechtigung, auf dieselben Datenbanken zuzugreifen, unabhängig davon, auf welchem ​​Server er ausgeführt wird. Schließlich muss der Datenbankserver noch so konfiguriert werden, dass legitime Anforderungen vom Webserver zugelassen werden.

(Vorausgesetzt, vernünftige Sicherheitsmaßnahmen wie bei mysqld akzeptieren keine passwortlosen Root-Anmeldungen von localhost.)

Abgesehen davon möchten Sie möglicherweise immer noch einen separaten Datenbankserver ausführen. Der Grund dafür liegt in der Leistung, Skalierbarkeit usw.

andol
quelle
3
Ich würde zustimmen, dass ein größeres Problem der Leistungseinbruch wäre, den Sie beide auf demselben Computer ausführen.
ChrisF
5

Ich bin mit den Plakaten nicht einverstanden, die besagen, dass dies kein Sicherheitsbedenken ist, und hier ist der Grund:

  • Ihr nach vorne gerichteter Dienst sollte die kleinstmögliche Angriffsfläche haben . Dies ist der Hauptgrund für die Verwendung von Reverse-Proxys und Firewalls und für die Vermeidung unnötiger Dienste und Programme von Servern, für deren Betrieb diese nicht erforderlich sind. Aus diesem Grund sind Webserver die häufigsten Ziele für Sicherheitsüberprüfungen.
  • Ihr Webserver sollte keine Rechte für Ihr Datenbanksystem haben. Eine Kompromittierung des Webservers beeinträchtigt daher auch nicht den Datenbankserver. Für den Anfang sollte das Konto, mit dem der Webserver auf die Datenbank zugreift, keine lokalen Administratorrechte für die SQL-Box haben. Seine Rechte sollten sich ausschließlich auf Datenbankberechtigungen beschränken. Zweitens sollte es innerhalb dieser SQL-Berechtigungen nach dem Prinzip der geringsten Berechtigung arbeiten . Ihre Webbox sollte beispielsweise nicht in der Lage sein, neue Datenbanken innerhalb der Instanz zu instanziieren. Im Idealfall kann Ihre Webbox keine Tabellen löschen oder Zeilen aus Tabellen löschen, die nicht unbedingt erforderlich sind. Im Falle eines Kompromisses in einem ordnungsgemäß konfigurierten 2-Tier-Setup ist die Auswirkung eines Angreifers, der die SQL-Anmeldeinformationen verwendet, im Umfang begrenzt.
Chris Thorpe
quelle
1
Ich glaube nicht, dass jemand sagt, dass eine Zwei-Box-Lösung nicht sicherer ist. Die Frage war jedoch, ob dieses Risiko, um die Frage zu zitieren, "groß" war. Die Antwort wird offensichtlich von den Umständen abhängen - ich würde beispielsweise keine mit dem Internet verbundene Bankensite auf einem einzigen Computer betreiben. Ein ordnungsgemäß gesperrter Webserver sollte jedoch nach einer Gefährdung nicht mehr oder weniger Zugriff auf seinen Datenbankserver haben als vor der Gefährdung. Dieses Prinzip ist unabhängig davon, ob sich die Lösung auf zwei oder einem Computer befindet. Wenn dies nicht der Fall ist, ist es Zeit, das System neu zu gestalten.
BMDan
Ich folge nicht deiner Logik. Wenn Sie einen Webserver kompromittieren und Root auf diesem Computer erhalten, haben Sie alles, was sich auf diesem Computer befindet. Wenn dies Ihre gesamte Datenbank mit all ihren Daten umfasst, ist alles gefährdet. Wenn Sie jedoch über zwei separate Server verfügen und den Webserver in irgendeiner Weise vollständig kompromittieren, erhalten Sie nur Zugriff auf Datenebene auf die Daten, auf die der Webserver selbst zugreifen konnte.
Chris Thorpe
3

Dies hängt wirklich vom Sicherheitsmodell Ihrer Web- und DB-Server (dh der Software) sowie vom Grad der Firewall / Zugriffskontrolle / IDP ab, die Sie für beide erzwingen würden, wenn sie sich auf separaten Servern befinden.

Wenn alles andere gleich ist, ist es wahrscheinlich besser, die beiden zu trennen. Praktisch jedoch, zumindest in einer LAMP-Umgebung, solange Sie privsep Apache verwenden (wenn Sie sich nicht sicher sind, machen Sie sich keine Sorgen) und nicht die Root-Anmeldung bei MySQL in Ihrer Webanwendung verwenden. und Sie haben tcp / 3306 nicht der Außenwelt ausgesetzt, Sie gewinnen nicht wirklich viel Sicherheit, indem Sie das eine oder andere auf ein anderes Stück Silizium bewegen. Sie erhalten jedoch Vorteile in Bezug auf Leistung und Debugfähigkeit.

Ihre Frage hat den Stil, der eine absolute Antwort zu erfordern scheint, aber ohne weitere Informationen (zumindest über die Betriebssystem- und Web- / DB-Server-Varianten, über die wir sprechen) ist es schwierig, eine informative zu geben.

BMDan
quelle
1
+1 Grundlegende Sicherheit und Best Practices reichen für die meisten Daten aus.
Chris S
Wir werden laufen: Windows Server 2008 und Postgresql 8.4 (oder 9.0, wenn es herauskommt), Apache 2
CLJ
0

Ich sehe kein großes zusätzliches Sicherheitsrisiko, wenn die Datenbank und die Webserver auf derselben Hardware installiert werden. Wenn der Webserver verletzt wird, sind die Daten trotzdem zugänglich. Sicherheit ist nicht der typische Grund für die Trennung von Ebenen.

In beiden Fällen möchten Sie sicherstellen, dass der Datenbankserver nicht standardmäßige Ports überwacht, nur auf Anforderungen vom Webserver reagiert und dass die Firewall nur http / s-Anforderungen an den Webserver und keine anderen Ports oder Adressen zulässt .

Trotzdem ist es eine gute Praxis, sie zu trennen. Jeder Server ist einfacher zu verwalten und zu konfigurieren, und Sie können Fehler, Probleme, Neuerstellungen, Leistungsprobleme usw. leichter beheben. Sie können also zwei virtuelle Server auf derselben Hardware in Betracht ziehen, die dann getrennt werden können, wenn Leistung oder Kapazität dies erfordern.

Tomjedrz
quelle
0

Ich würde nicht - aber das bin ich.

Es hängt davon ab, was sich vor Ihrer Box befindet (z. B. Firewalls, Load-Balancer usw.) und wie "eng" sie sind, wie die tatsächlichen Daten sind (dh die jetzt öffentlich verfügbaren Daten an einem Ende, die nationalen Geheimnisse am anderen Ende). , ob es Auswirkungen auf die Leistung beim Kombinieren gibt, die Stärke des Netzwerks zwischen beiden (dh Inter-Tier-Firewalls) und die Qualität der OS / App-Härtung, die angewendet wird.

Wenn Sie nicht erwarten, dass dieses System mit zu viel Last umgehen muss, können Sie in Betracht ziehen, das System in zwei separate VMs zu virtualisieren. eine pro Funktion - möglicherweise sogar mit einer dritten Firewall-VM, die nur Software enthält. Dies würde bedeuten, dass selbst wenn jemand Ihren Webserver geknackt hätte, er den Datenbankserver und, falls vorhanden, eine zwischengeschaltete Firewall-VM knacken müsste. Dies würde natürlich die Gesamtsystemleistung verringern, wäre jedoch zumindest bis zu einem gewissen Grad sicherer und könnte auch helfen, wenn Ihre Last jemals ein Zwei-Server-Design erfordert, da Sie einfach eine VM auf den zweiten Computer verschieben könnten. Das kostenlose ESXi-Produkt von VMWare kann dies ganz einfach tun, und es sind bereits kostenlose Firewall-VMs vorgepackt, die zur Implementierung bereit sind, wenn Sie dies wünschen.

Chopper3
quelle