Frage Wie schlecht setzt die Bind-Adresse von MySQL auf 0.0.0.0?


Ich versuche, einem Remote-Server den Zugriff auf eine MySQL-Instanz zu ermöglichen, die derzeit einen Linux-Server mit einer Web-App gemeinsam nutzt. Gemäß die Dokumentation der einzige Weg, das wäre möglich (wenn ich nicht richtig verstehe) ist, wenn die Bindeadresse Direktive ist auf gesetzt 0.0.0.0, was dazu führt, dass MySQL Zugriff von jeder IP-Adresse gewährt, die einen gültigen Benutzer hervorbringen kann.

Also, zwei Fragen:

  1. Wie schädlich wäre das für die Sicherheit?
  2. Gibt es einen besseren Ansatz für die lokale und Remote-Interaktion mit MySQL?

33
2018-04-08 19:54


Ursprung




Antworten:


Ich denke, du verstehst das Bindeadresse Einstellung ein wenig. Dies sind die lokalen Adressen, die MySQL auf Verbindungen hört. Der Standardwert ist 0.0.0.0. Dies sind alle Schnittstellen. Diese Einstellung beschränkt nicht, welche IPs auf den Server zugreifen können, außer Sie haben 127.0.0.1 nur für localhost angegeben.

Wenn Sie bestimmte Benutzer einschränken müssen von Spezifische IP-Adressen verwenden Sie create / grant Benutzer wie folgt CREATE USER 'bobdole'@'192.168.10.221';


33
2018-04-08 20:04



+1, aber nur eine Anmerkung, dass die Standard-Empfangsadresse abhängig davon variiert, wie MySQL installiert ist. - John Gardeniers
Dank Doug, ich denke, der Standard war in diesem Fall mein lokaler Host, aber es ist gut zu wissen, dass Benutzer einer bestimmten Datenbank immer noch durch IP eingeschränkt sind. - jonathanatx
@jonathanatx MySQL Standard Bind-Adresse (in 5.6 und so weit zurück, wie ich weiß) ist 0.0.0.0. Obwohl ich denke, dass für viele Installationen nur lokale Bindung die beste Option ist. Öffne die Tür nicht, wenn du nicht willst, dass jemand hindurchgeht. - ebyrob


ein. Es ist schlecht. Obwohl Sie den Benutzerzugriff per IP auf jede Datenbank beschränken können, ist es sicherer, alle Verbindungen lokal zu haben. Auf meinen Servern erlaube ich MySQL nur lokale Verbindungen zu akzeptieren, 127.0.0.1 wie die Standardkonfiguration. Um remote auf die Datenbank zuzugreifen, müssen Sie lediglich einen SSH-Tunnel erstellen, bevor Sie eine Verbindung zur Datenbank herstellen und dann eine lokale Verbindung herstellen. Wenn Sie mit PHP programmieren, ist das ziemlich einfach. Wenn Sie eine Desktop-Anwendung verwenden, ist es einfach, es unter Linux zu tun (ssh-Tunnel nachschlagen). Unter Windows verwende ich normalerweise ein Programm wie Putty, um den Tunnel für mich zu erstellen.


1
2018-04-08 20:03



Das ist ziemlich verrückt. Die standardmäßige Vorgehensweise besteht darin, Benutzer zu erstellen, auf die nur von bestimmten Hostnamen oder IPs aus zugegriffen werden kann. Das Erzwingen, dass jeder Webserver einen SSH-Tunnel zu einer Datenbank macht, ist viel mehr Arbeit als nötig. - TheLQ
Ihr Webserver und Datenbankserver sind nicht immer das gleiche Gerät. Lassen Sie keine Verbindungen aus dem Internet kommen, sicherlich ... aber es gibt sichere Möglichkeiten, Lösungen mit MySQL-Netzwerkzugriff zu erstellen. - Shane Madden♦
Wenn IP pro Datenbank eingeschränkt ist und der Benutzer root mit create user / database etc -Privilegien @ 'localhost' ist - ist das möglich, von einer externen IP 'zu fälschen'? Oder gibt es andere Sicherheitsprobleme, die ich aufwerfen würde? - jonathanatx
Für ein kleines Setup (ein db, ein www) du könnte Tun Sie SSH-Tunneling. Für ein echtes Setup würden Ihre vpns und Firewalls Sie schützen, daher würden Sie sich über 0.0.0.0 öffnen, um Remote-Zugriff zu ermöglichen. - Sonia Hamilton
Für alle, die denken, dass die SSH-Tunnel-Idee verrückt ist, bedenken Sie, dass der Großteil des MySQL-Verkehrs klar ist. Wenn Sie aus irgendeinem Grund eine Verbindung über ein nicht vertrauenswürdiges Netzwerk (d. H. Das Internet) herstellen müssen, ziehen Sie SSH in Betracht oder führen Sie es über ein VPN aus. Feuern Sie Wireshark oder einen anderen Packet Sniffer an, wenn Sie sehen wollen, wovon ich rede. - Brad