Sponsor-Board.de
2 MySQL (Ext / Int) Server - Sinn?

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Community (/forumdisplay.php?fid=56)
+--- Forum: Plauderecke (/forumdisplay.php?fid=39)
+---- Forum: Soft- & Hardware (/forumdisplay.php?fid=80)
+---- Thema: 2 MySQL (Ext / Int) Server - Sinn? (/showthread.php?tid=24255)


2 MySQL (Ext / Int) Server - Sinn? - Storage-Base.de - 07.04.2012 22:43

Hallo,

folgendes, ich wollte aktuell eigentlich keine externe Datenbank mehr anbieten um die lokalen Datenbanken zu schützen, nun kam mir jedoch der Einfall das man auch 2 MySQL Server anlegen könnte. Der eine davon ist dann Explizit nur Intern erreichbar und der andere Int. und Ext.

Was ich mich nun letztlich frage, macht es wirklich Sinn diese Physikalisch zu trennen oder ehr nicht!? Wie denkt ihr darüber?

Meine Meinung ist das es Sinn macht, da man so explizit die Datenbanken, auf einen Server auslagert der ja ehr gefährdet ist als der Interne MySQL Server.

Ich bin mal auf eure Meinung gespannt. Danke!


RE: 2 MySQL (Ext / Int) Server - Sinn? - Dream-Code - 07.04.2012 22:48

Sehr kreative Idee! Like! Nur musst du dann halt mit unwesendlich mer Ressourcenverbrauch rechnen und dem einen Server eine andere IP oder einen anderen Port zuweisen.
Und Sinn macht es sicherlich. Denn obwohl die beiden Server auf dem gleichen Host laufen, sind es seperate Systeme.

Mich würde mal interessieren, wie man das überhaupt einstellen kann, ob die DB nur intern erreichbar ist oder auch von außen.

MfG
CarpetSoftware


RE: 2 MySQL (Ext / Int) Server - Sinn? - Storage-Base.de - 07.04.2012 22:53

CarpetSoftware schrieb:
Nur musst du dann halt mit unwesendlich mer Ressourcenverbrauch rechnen und dem einen Server eine andere IP oder einen anderen Port zuweisen.

Das dadurch der doppelte Grundverbrauch entsteht, ist klar, was aber bei 32GB RAM nicht so Stark ins Gewicht fallen sollte ^^

Ich würde mich für einen weiteren Port entscheiden, was dann den Vorteil hat das man zum einen Kosten einsparen kann und den Server auch Problemlos in Plesk via localhost einbinden kann statt über die IP. Wobei natürlich auch eine eigene Adresse like db-extern.name.tld Sinn macht.

CarpetSoftware schrieb:
Mich würde mal interessieren, wie man das überhaupt einstellen kann, ob die DB nur intern erreichbar ist oder auch von außen.


Du kannst zum einen dem DB Server via my.cnf sagen das er Ext und Intern lauschen darf. Bei einem MySQL Server der sowieso auf localhost gebindet ist, hast du gar keine Möglichkeit nach außen zu gelangen.

Wenn der Server aber nun laut Config auch nach Extern verfügbar ist, kannst du, wenn du einen User erstellst als Host ein %- Zeichen setzen, das sagt aus das von jedem Server verbunden werden darf, alternativ gibts eine Hosttabelle oder einen Host den du explizit angeben kannst. Diese Vorgehensweise hat den Vorteil das man dann nicht von anderen IP's drauf kommt, jedoch macht es keinen Sinn in der Zeit der Dynamischen IP Zuweisung durch die ISP.


RE: 2 MySQL (Ext / Int) Server - Sinn? - Dream-Code - 07.04.2012 22:59

Ob du mir dabei wohl helfen kannst, deine Idee auf meinem Server umzusetzen? Biggrin


RE: 2 MySQL (Ext / Int) Server - Sinn? - Storage-Base.de - 07.04.2012 23:15

Da ich das ganze noch nicht getestet habe und auch keinerlei Erfahrung damit wie und ob es funktioniert, nehme ich davon mal gewaltigen Abstand.

Aber ich kann dir Links geben, mit denen du es versuchen kannst:
[Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]


RE: 2 MySQL (Ext / Int) Server - Sinn? - Dream-Code - 07.04.2012 23:20

Danke, werde mich mal daran versuchen und dir meine Erfahrungen berichten. Kann ich nicht aber einfach einen Server machen der Extern und Intern erreichbar ist?

Wo liegt da das Sicherheitsproblem und reicht es, einfach das hier zu schreiben:

my.cnf schrieb:
#bind-adress: 127.0.0.1




RE: 2 MySQL (Ext / Int) Server - Sinn? - Storage-Base.de - 07.04.2012 23:26

Prinzipiell sollte das funktionieren, ganz sicher bin ich mir da auch nicht.

Je nach MySQL Version musst du ggf. "skip-networking" auskommentieren. Ansonsten würde ich den MySQL Server aber an die WAN IP Binden.

Das Sicherheitsproblem liegt in meinen Augen darin das nun jeder den MySQL Server von außen angreifen kann. Vorher ging einfach keine Verbindung über eine externe Schnittstelle, so schon.


RE: 2 MySQL (Ext / Int) Server - Sinn? - Dream-Code - 07.04.2012 23:42

Naja aber selbst wenn man von außen zugreifen kann, braucht man ja User und PW um was zu machen. Und User also NORMALE User haben ei mir eh nur rechte auf die eigenen Datenbanken Tabellen zu erstellen und bearbeiten. Mehr nicht.

Wenn du mir das mit der WAN-IP erklärst, bin ich glücklich xD


RE: 2 MySQL (Ext / Int) Server - Sinn? - zhizhi778 - 07.04.2012 23:44

Gute Idee, aber relativ nutzlos meiner Meinung nach, da man so trotzdem durch eine Schwachstelle an brisante Infos gelangen kann, wie zum Beispiel Passwörter von den MySQL Nutzern (nur ein Beispiel).

Mehr Sinn würde es machen, sich zu überlegen, wofür man wirklich externen Zugriff braucht? reicht vielleicht auch lokaler Zugriff? Dass z.B. VMs untereinander auf ihre MySQL DBs zugriefen können?

Oder muss es unbedingt extern sein? Ich persönlich kenne nur sehr wenige Anwendungsbeispiele für externe Datenbanken - falls es für Load-Balancing oder Backups benötigt wird kann man das ganze noch zusätzlich mit iptables oder ähnlichem filtern, sodass nur ebstimmte IPs überhaupt externen Zugriff bekommen. gleiches gilt z.b. für Gameserver, die auf ein zentrales MySQL System zugreifen müssen...

Es ist immer besser, erst den Zugriff auf eine so kleine Gruppe an Nutzern/Diensten zu beschränken (per Firewall z.B.) und DANN noch zusätzlich auszulagern, sodass das Risiko wirklich minimiert wird.

Möglich sit es aber (eigenerfahrung) zwei MySQL Server laufen zu haben.


RE: 2 MySQL (Ext / Int) Server - Sinn? - Storage-Base.de - 07.04.2012 23:56

CarpetSoftware schrieb:
Wenn du mir das mit der WAN-IP erklärst, bin ich glücklich xD


LAN = Local Area Network
WAN = Wide Area Network - auch als "das Internet" bezeichnet Wink

@zhizhi778

zhizhi778 schrieb:
trotzdem durch eine Schwachstelle an brisante Infos gelangen kann, wie zum Beispiel Passwörter von den MySQL Nutzern

Selbst wenn, wären aber nicht alle Kunden gefährdet sondern nur die, die eine Externe Datenbank eingerichtet haben. Normal sollten dann entsprechend KEINE Websites darin ihre Daten speichern.

zhizhi778 schrieb:
Mehr Sinn würde es machen, sich zu überlegen, wofür man wirklich externen Zugriff braucht? reicht vielleicht auch lokaler Zugriff? Dass z.B. VMs untereinander auf ihre MySQL DBs zugriefen können?

Der Kunde ist König, wenn ich so was anbieten kann und eine entsprechende "Vergütung" dafür bekomme, ist mir der Grund doch egal Wink

zhizhi778 schrieb:
Gameserver, die auf ein zentrales MySQL System zugreifen müssen

Genau das ist z.B. ein Punkt, ich finde die Daten von einem GameServer sind weniger relevant als die von einer Website, daher wäre das schonmal ein Punkt für mich.

zhizhi778 schrieb:
Es ist immer besser, erst den Zugriff auf eine so kleine Gruppe an Nutzern/Diensten zu beschränken (per Firewall z.B.) und DANN noch zusätzlich auszulagern, sodass das Risiko wirklich minimiert wird.

Das würde ich doch tun mit 2 MySQL Servern. Ich würde den Zugriff auf den eigentlichen MySQL Host vollständig unterbinden, die Kunden können aber dennoch externe Datenbanken nutzen. Und die localhost Kunden stellen keine Gefahr für die external dar und umgekehrt Wink


RE: 2 MySQL (Ext / Int) Server - Sinn? - zhizhi778 - 08.04.2012 00:05

Naja, gehen wir mal von dem Szenario aus, dass ein zentraler MySQL für Gameserver bereitstehen soll, soweit so gut. Die Gameserver würdest Du doch selbst vergeben dann alright? Dann weißt Du folglich auch die IPs von denen und kannst sie in die Firewall eintragen und somit den externen MySQL Zugriff explizit wirklich auf deine eigenen (bekannten) Nutzer beschränken. Angriffe werden dann immerhin schon eine Stufe vor dem MySQL Server abgefangen von der Firewall. Oder ist es wirklich notwendig, jeder x beliebigen IP auf der Welt den zugriff zu erlauben?

Das war nur mein Vorschlag ;-) Im Grunde baut es einfach nur auf deiner Idee auf, da hast Du recht!
Der Unterschied ist halt, so müsste keiner der beiden MySQL Server extern erreichbar sein, sondern anhand der eingehenden IPs (von den Gameservern) kann die FIrewall mit entsprechenden Regeln dann NAT betreiben und somit zum Beispiel

Zugriff von IP 87.65.32.1 auf Port 3306 des Hosts: 123.45.67.8
umleiten per NAT auf: 127.0.0.1:3307

So wäre es von außen auch noch unsichtbar, dass zwei verschiedene MySQL Server laufen -> Der Kunde muss keinen anderen Port angeben und trotzdem laufen zwei ausschließlich intern erreichbare MySQL Server parallel!

//EDIT: Sollte ein Angreifer also herausfinden, dass es überhaupt einen MySQL extern gibt auf Port 3306 und dann noch an der Firewall vorbeikommt so stößt er auf ein nicht-antwortenden MySQL, da dieser in Wirklichkeit nur auf Localhost lauscht.

Verstehst Du in etwa, was ich meine? Wink


RE: 2 MySQL (Ext / Int) Server - Sinn? - Storage-Base.de - 08.04.2012 00:10

Was du meinst ist klar. Gleiche Prinzip wie der Router daheim Biggrin

ABER, ich vergebe keine GameServer mehr, folglich kann ich auch nicht nur den Zugriff aus meinen Netzen zulassen. Desweiteren betreibe ich ja mit dem Server auch "Reselling" die Reseller wollen vielleicht auch externe Datenbanken anbieten, ohne das diese mir bei jedem Kunden mitteilen müssen von welcher IP er anstrebt diese nun zu nutzen.

Kniffeliger ist es für die Leute die vlt. eine Lokale Anwendung testen möchten, wie soll man eine Dynamische IP einschränken? ^^


RE: 2 MySQL (Ext / Int) Server - Sinn? - Nilss - 08.04.2012 00:23

Also ich hatte vor ca. 4 Tagen für Visual Basic ein extrens MYSQl gesucht. Aber dannach hab ich das Problem durch PHP gelöst. Die PHP Datei greift auf die locale Datenbank.
Und die gibt "echos" aus. Die man dann in VB abrufen kann. Somit ist das Problem gelöst.


RE: 2 MySQL (Ext / Int) Server - Sinn? - zhizhi778 - 08.04.2012 00:25

Da bleibt leider in der Tat nicht viel übrig, als den externen Zugriff zuzulassen, wie du es beschrieben hast. Nur würde ich dennoch ein IPtables dazwischenhängen mit NAT, sodass MySQL schonmal nicht ganz am Interface zur außenwelt hängen muss. So hat man immerhin ein wenig die Kontrolle, woher die Anfragen kommen. Wenn ein Reseller eine eigene IP bekommt, dann könnte man sogar die Reseller an verschiedene MySQL Server zuweisen.

Es gibt viele Möglichkeiten mit Firewalls zu arbeiten - aber leider wirds brenzlig, sobald es an dynamische IPs oder Hostnamen geht. Einzige zusätzliche Sicherheitsvorkehrung, die ich noch für den zweiten MySQL Server sehe wäre chrooting oder noch besser, falls du ein kleines VM Netz hast eine Minimal-VM einrichten und dort drauf laufen lassen. Per IPTables wieder umleiten lassen und fertig ist. Sollte das System einmal kompromittiert werden, so kannst Du leicht ein Backup wieder einspielen, in dem du die VM zurücksetzt auf einen regelmäßig erstelltes Image.

Das ist ja der große Vorteil an Virtualisierung, da man dadurch eine quasi-physikalische Trennung von Diensten erreicht Wink
Nach dieser Methode bearbeite ich übrigens das Problem mit den externen MySQL Zugriffen...ist manchmal schon lästig sich darum Gedanken machen zu müssen^^


RE: 2 MySQL (Ext / Int) Server - Sinn? - coloskopie - 08.04.2012 16:20

Nilss schrieb:
Also ich hatte vor ca. 4 Tagen für Visual Basic ein extrens MYSQl gesucht. Aber dannach hab ich das Problem durch PHP gelöst. Die PHP Datei greift auf die locale Datenbank.
Und die gibt "echos" aus. Die man dann in VB abrufen kann. Somit ist das Problem gelöst.


nills schreibt doch schon die lösung...man verbietet den externen zugriff und nutzt z.B. php als wrapper.

so machen es die "profis" doch auch! Wieso also ein enormes Sicherheitsrisiko eingehen?


RE: 2 MySQL (Ext / Int) Server - Sinn? - Storage-Base.de - 09.04.2012 16:23

Dafür ja einen Zweiten MySQL Server, manchmal geht es nicht anders, wie z.B. bei Gameservern.