Ich erhielt ein Argument mit dem Titel "Sie benötigen kein starkes MySQL-Benutzerkennwort, da sie bereits Zugriff auf Ihren Server haben, um es zu verwenden." Es handelt sich um ein 4-stelliges Passwort, das ein Standardwörterbuch für Englisch auf einer Live-Business-Website ist.
Ohne die Antworten mit meinem eigenen Wissen und meiner eigenen Erfahrung zu beeinflussen, möchte ich ihnen einige Antworten von einer uninteressierten Drittanbieterquelle zeigen. Möchte jemand diesen Song mitmachen? Programmierung / praktische Antworten wären willkommen.
root:root
Logins.1337
?Antworten:
Wer auch immer dieses Argument vorbrachte, scheint zu sagen: "Sobald jemand seinen Fuß in der Tür hat, kannst du ihm genauso gut vollständigen Zugang gewähren." Nach dieser Logik macht eine Firewall alle Kennwörter in Ihrem internen Netzwerk überflüssig.
Sichere Kennwörter sind ein Schritt zur Begrenzung des Schadens, der durch das Eindringen in das Netzwerk entsteht. Es gibt keinen Grund, sich geschlagen zu geben, nur weil ein kleiner Teil Ihres Netzwerks kompromittiert wurde.
quelle
Es geht wirklich auf die Idee von ' Defense in Depth ' zurück, so dass zumindest ein starkes Passwort sie verlangsamen kann, so dass Sie sie entdecken und blockieren können. Ich mag die Analogie, einen einzigen Schlüssel für eine Wohnanlage zu haben, und einen Schlüssel an der Tür eines jeden Hauses.
quelle
Es hängt sehr davon ab, wie Ihr MySQL-Server eingerichtet ist. Wenn nur Anforderungen von der IP-Adresse home (127.0.0.1) akzeptiert werden, wird die Sicherheit moderat erhöht.
In einem gegebenen Szenario, in dem Sie Remote-IPs zulassen, wird dies ein viel größeres Geschäft.
Darüber hinaus ist es immer gut, im Falle eines Eindringens eine starke Sicherheit zu haben - besser, sie gehen so wenig wie möglich davon.
quelle
Gibt es eine Sperre für die Kasse in der Buchhaltung? Wenn ja warum? Hat das Gebäude keine physische Sicherheit?
quelle
Dies ist nicht der Fall, da mysql auch in einer netzwerkübergreifenden Client-Server-Umgebung verwendet werden kann. Standardmäßig ist nur user / pass erforderlich, um Zugriff auf die Datenbank zu erhalten (natürlich, wenn der Port 3306 geöffnet und der Server öffentlich sichtbar ist) ).
quelle
In der Tat kann es auch anders sein: Wenn sie Zugriff auf mysql haben, können sie möglicherweise auf das Server-Betriebssystem selbst zugreifen.
quelle
Wenn jemand Root- Zugriff auf Ihren Server erhält, benötigt er kein MySQL-Passwort. Wenn sie jedoch Apps auf Ihrem Server nur als Nicht-Root- und Nicht-Web-Benutzer ausführen können, kann ein starkes MySQL-Kennwort Ihre Daten trotzdem speichern. Aber ja, die meisten Hacks kommen aus dem Web. Das bedeutet, dass der Hacker Zugriff auf Ihr Webkonto erhält und daher das DB-Passwort aus PHP-Dateien extrahieren kann.
Dies alles unter der Annahme, dass Ihr MySQL-Server nur Verbindungen von localhost akzeptiert. Wenn ja, brauchst du ein starkes PW.
quelle
Was hier offenbar übersehen wurde, ist, vertrauen Sie Ihren Benutzern im vertrauenswürdigen Netzwerk?
Ehrlich gesagt nicht, weil ich weiß, wie ich war, als ich in der IT anfing. Ich würde in Bereichen stöbern und stochern, auf die ich kein Recht hatte, und ehrlich gesagt, ein schwaches MySQL-Passwort wäre eine Freude für mich gewesen, da ich eine Chance auf Pech gehabt hätte und reingekommen wäre und Havock hätte anrichten können (aus Versehen, Na sicher).
Was ist, wenn jemand Social Engineering verwendet, um in Ihr vertrauenswürdiges Netzwerk zu gelangen? Was machst du dann? Wenn sie sich auf einem Computer hinter der Firewall befinden, ist Ihre solide Firewall-Sicherheit ruiniert und sie gelangen direkt auf den Computer.
Sichere Passwörter sind so einfach zu erstellen, und es gibt viele Tools zur Passwortverwaltung, mit denen sich die Passwörter einfach schützen lassen. Es gibt also keine Entschuldigung, dies nicht zu tun.
quelle
localhost
/127.0.0.1
als Host angeben . Auf diese Weise kann niemand von außerhalb auf die Datenbanken zugreifen (auch nicht im selben Netzwerk).Eh. Wenn Ihr Server IP-gesperrt ist und Ihr Benutzer in einer Reihe von Tabellen, in denen Ihnen die Informationen egal sind, auf SELECT beschränkt ist, ist dies keine große Sache.
Andererseits setze ich meine MySQL-Passwörter, indem ich für eine Minute auf die Tastatur klopfe und den resultierenden Kauderwelsch in eine geschützte Datei kopiere, auf die ich in meinem Code verweise, wenn ich mich einloggen muss. So sollte es funktionieren.
Warum es einfach machen? Wenn das Kennwort an ein begrenztes lokales Konto angehängt ist (wie es alle sein sollten), warum geben Sie es dann ein? Ist dies nicht der Fall, sollte ein Kennwort vorhanden sein, dessen Stärke sich nach dem Wert der zu schützenden Daten richtet.
quelle
Die Konto- / Zugriffsinformationen von mySQL werden in einer von den tatsächlichen Datenbanken getrennten Datei gespeichert. So können Sie einfach eine andere Datei per Drag & Drop an ihren Platz ziehen. Mit mySQL ist das Spiel beendet, wenn sie Schreibzugriff auf den relevanten Teil Ihres Dateisystems haben.
quelle
Weil sich die Anforderungen ändern ...
Daher kann der Server, der heute nur MySQL-Verbindungen zum lokalen Computer akzeptiert, morgen geöffnet werden, damit ein externes Tool zum Verwalten der Datenbank verwendet werden kann. Die Person, die diese Einrichtung durchführt, weiß möglicherweise nicht, dass extrem schwache Kennwörter verwendet werden.
Wenn sich Ihr Benutzer ein gutes, sicheres (z. B. langes, zufälliges) Kennwort merken muss, sollten Sie es als sehr sicher einstufen und dann im
.my.cnf
- speichern, was noch praktischer ist als ein schwaches Kennwort, das er eingeben muss. Natürlich hat dies auch Auswirkungen auf die Sicherheit, aber Sie müssen Ihr Kennwort irgendwo speichern, z. B. in den Anwendungen, die darauf zugreifen, sodass Sie bereits Kopien des Kennworts sichern.Lesen Sie aber auch, was @meagar gesagt hat.
quelle
Die Voraussetzung, dass sie bereits Zugriff haben würden, ist nicht wahr. Wenn sie jedoch Zugriff haben und über ein nicht privilegiertes Konto verfügen, können sie das mysql-Passwort trotzdem leicht hacken.
Wenn der Server ein Live-Produktionsserver ist, machen Sie Werbung für sich im Internet. das bedeutet , dass irgendwann jemand WILL einen Brute - Force - Angriff auf dem Server versuchen, einschließlich mysql, sowohl den Hafen und das Benutzerkonto.
Wenn Sie sich für die Daten interessieren, müssen Sie als grundlegende Schritte ein anderes Root-Passwort für die Datenbank als für den Root-Benutzer festlegen. Andere haben angegeben, dass Sie auch die niedrigstmöglichen Berechtigungen für Benutzer und Programme haben sollten.
Ein 4-stelliges Passwort kann auf einem ziemlich billigen Computer in wenigen Minuten gehackt werden.
Ich kann nur wiederholen, was andere gesagt haben, aber je mehr Munition Sie für Ihren Manager haben, desto besser.
quelle
Viele der Gründe für das reale Szenario wurden zuvor in Beiträgen behandelt, daher füge ich die "Philosophie" hinzu. Das Verwenden sicherer Kennwörter und das Ergreifen von Vorsichtsmaßnahmen, um die Sicherheit zu erhöhen, ist eine Arbeitsphilosophie. Eine Denkweise.
Ein schwaches Passwort jetzt , weil Sie mysql nur auf 127.0.0.1 laufen und nur der Root - Benutzer hat Zugriff auf es zeigt , dass Sie nicht im Voraus denken. Was passiert, wenn Sie eines Tages über das Netzwerk Zugriff auf Ihr MySQL gewähren müssen? Denken Sie daran, alle Sicherheitslücken abzudecken, die Sie verlassen haben?
Ein guter Administrator bringt das schlimmste Szenario auf den Punkt der Paranoia.
quelle
Es hängt davon ab, welche Rechte der Benutzer hat. Sie sollten Dinge immer auf mehreren Ebenen sperren. Dies hängt auch von den Daten ab, die Sie in Ihrer Datenbank gespeichert haben. Nehmen wir auch an, es gibt eine Sicherheitslücke in MySQL, die es ihnen ermöglicht, die gesamte Datenbank zu übernehmen, sie mussten sich jedoch nur bei einem beliebigen Benutzerkonto anmelden. Wenn Ihr Kennwort sicher ist, wird diese Sicherheitsanfälligkeit stumm geschaltet. Aber das hängt wirklich nur von Ihrem speziellen Fall ab.
quelle
Es ist sehr einfach, sich in MySQL als jemand anderes auszugeben. Bei einer Benutzer-ID ohne Passwort (die schwächste Sicherheit) einfach verwenden
mysql -u userid
. Wenn es ein Passwort hat, ist es etwas schwieriger, aber ein schwaches Passwort macht es einfach. Wenn root kein Passwort hat, kann ich als root zugreifenmysql -u root
. Ich kann dann alles in der Datenbank machen, was root kann.Die Verwendung von Hostspezifikationen in der Sicherheit ist ebenfalls eine gute Idee, insbesondere wenn Remotezugriff verfügbar ist oder möglicherweise verfügbar ist.
Passwörter in Dateien können und sollten durch Berechtigungen etwas gesichert sein. Der Zugriff durch root oder den Eigentümer der Passwortdatei ist trivial. Wenn möglich, sollte das Kennwort auf der Festplatte verschlüsselt werden. Dies macht den Zugang etwas schwieriger, aber dennoch anfällig.
quelle
Wenn Sie die MySQL-Datenbank nicht selbst hosten, sondern sich auf einem Hosting-Dienst befinden und jemand Zugriff auf die IP-Adresse Ihres Servers erhält, sind Benutzername und Passwort Ihre letzte Verteidigungslinie. Es ist immer gut, einen sicheren Benutzernamen / ein sicheres Passwort zu haben.
quelle