弱いmysqlユーザーパスワードを持つのはなぜ悪いのですか?


23

「強力なmysqlユーザーパスワードは必要ありません。それを使用するためには、サーバーに既にアクセスしているからです」という調子に対する議論がありました。私たちは、ライブのビジネスWebサイトで標準的な英語の辞書の単語である4桁のパスワードについて話しています。

私自身の知識と経験で答えに影響を与えることなく、私は彼らに無関心なサードパーティソースからのいくつかの応答を見せたいです。誰もこれにチャイムするのを気にしますか?プログラミング/実用的な答えをいただければ幸いです。


7
これらのいずれかのように聞こえるroot:rootのログイン。

3
四桁のパスワード?同様に1337
ガンボ

回答:


39

この議論をしている人はだれでも「誰かがドアに足を踏み入れたら、あなたも彼らに完全なアクセスを与えるかもしれない」と言っているようです。そのロジックにより、ファイアウォールは内部ネットワーク上のすべてのパスワードの必要性を無効にします。

強力なパスワードは、ネットワーク侵入による被害を制限するための第一歩です。ネットワークのごく一部が危険にさらされたからといって、敗北するように手を振る理由はありません。


13
「多層防御」はその日のモットーです。
スコットパック

3
ファイルシステムへのアクセス権を取得すると、追加のセキュリティを設定しない限り、パスワードが保存されているPHPファイルまたは設定ファイルにアクセスできることに注意してください。これは通常、共有ホストでは困難または不可能です。 。
ロータスノーツ

2
@Lotus PHPとMySQLサーバーが同じマシンであると仮定します。
メガー

2
@Lotus Notes、とにかくアプリケーションでrootユーザーを使用しないでください。適切に設計されたアプリケーションでは、必要なアクセスのみが許可されます。ほとんどの場合、これにはデータへのアクセスが含まれますが、必ずしもすべてのデータが含まれるわけではなく、場合によっては読み取り専用になることもあります。
bradlis7

1
@Lotus注:多くの共有ホストは、PHPのchmod-ing 660を使用できるsuPHPを採用しています。
webbiedave

14

それは本当に「多層防御」のアイデアに戻っているので、少なくとも強力なパスワードは、それらを発見してブロックできるようにそれらを遅くすることができます。すべての家のドアにある鍵に対して、ゲーテッドコミュニティの鍵を1つ持つという例えが好きです。


私は、キー/ドアアナロジーを思い付くために誰かを待っていました。|
メガー

しかし、あなたの家の中のすべてのドアに異なる鍵が船外にある可能性があります。どこで線を引きますか?
ダン

4
@Dan:しかし、安全な施設で、あなたは右、すべてのドアに異なる鍵を期待しますか?一戸建てでは無you'dすべてのロックは、同じキーを使用することを期待していません。しかし、シェアハウス(ルームメイトと同様)では、ロック解除されたドア(すべて同じキーを使用するドア)、またはルームメイトごとに異なるキーのいずれかという、家庭の哲学に依存します。
ウォリック

5
ロックやその他の安全装置は、主にアマチュア泥棒に使用されるか、専門家を阻止するためにのみ使用されます。別の抑止力は、家の周りの適切な照明であり、あなたが一日中どこで何をするかを明らかにする定期的なルーチンを避けることです。休暇計画について知らない人とチャットしたり、長期間外出した場合は地元の警察に警告したりしないでください。常に誰かが家にいるかのように見せるようにしてください。また、...待って、再び質問は何でしたか?
スティーブンワトキンス

6

MySQLサーバーのセットアップ方法に大きく依存します。ホーム(127.0.0.1)IPからの要求のみを受け入れる場合、それは適度により安全になります。

リモートIPアドレスを許可するシナリオを考えると、それははるかに大きな取引になります。

それに加えて、侵入の場合に強力なセキュリティを確保することは常に良いことです-できるだけ少ない距離で立ち去る方が良いです。


6

会計の小口現金ボックスにロックはありますか?もしそうなら、なぜですか?建物に物理的なセキュリティはありませんか?


5

強力なmysqlユーザーパスワードは必要ありません。それを使用するには、サーバーへのアクセス権が既にあるからです。

mysqlはクロスネットワーククライアントサーバー環境でも使用できるため、デフォルトでは、データベースにアクセスするために必要なのはuser / passだけです(オフコース、3306ポートが開かれ、サーバーが公開されているため) )。


5

確かにそれは他の方法することができます:彼らは、MySQLへのアクセス権を持っている場合、彼らは、サーバーOS自体にアクセスすることがある可能性があります。

  1. MySQL LOAD_FILEおよびSELECT ... INTO OUTFILEクエリを使用すると、mysqlユーザーは基になるファイルシステムでファイルを読み書きできます。mysqlユーザーもアクセスできるファイル(MySQLはルートとして実行されていますか?)。linux / UNIXの場合は、SELECT LOAD_FILE( '/ etc / passwd')を照会し、笑顔を見るだけです。mysqldがrootとして実行されている場合、SELECT LOAD_FILE( '/ etc / shadow')を試して、システム管理者の泣き声を見ることができます。
  2. 多くの場合、Linuxでは、mysqlユーザー「root」はサーバーの「mysql」ユーザー(mysqldを実行するユーザー)と同じパスワードを持っています。次に、このパスワードが簡単な場合(またはmedusa / hydraなどの自動化ツールで検索できる場合)、データベースサーバーに直接SSH / telnetして、だますことができます。

4

誰かがあなたのサーバーへのルートアクセスを取得した場合、MySQLパスワードは必要ありません。ただし、サーバー上で非ルートおよび非Webユーザーとしてのみアプリを実行できる場合、強力なMySQLパスワードでデータを保存できます。しかし、ほとんどのハックはWebから来ています。つまり、ハッカーはWebアカウントにアクセスできるため、PHPファイルからDBパスワードを抽出できます。

これはすべて、MySQLサーバーがlocalhost以外からの接続を受け入れないことを前提としています。もしそうなら、強力なPWが必要です。


4

ここで見落とされていると思われるものは、信頼できるネットワーク上のユーザーを信頼していますか?

率直に言って、私はそうしていません。なぜなら、私がITを始めたときの自分の姿を知っているからです。権利のない地域で突っ込んだり、突っ込んだりしました。そして、率直に言って、MySQLの弱いパスワードは、ポットラックのチャンスをつかんでハボックを破壊することができたので、私にとってはうれしかったでしょう。もちろん)。

誰かがソーシャルエンジニアリングを使用して信頼できるネットワークにアクセスした場合はどうなりますか?それからあなたは何をしますか?それらがファイアウォールの背後にあるマシン上にある場合、あなたは確固たるファイアウォールのセキュリティが台無しになり、マシンにまっすぐになります。

強力なパスワードは非常に簡単に実行でき、パスワードを簡単に安全に保つためのパスワード管理ツールがたくさんあります。


問題は、MySQLでリモート接続を許可しないことです。必要な場合は、ホストとしてlocalhost/ 127.0.0.1を指定します。この方法では、誰も外部のデータベースにアクセスできません(同じネットワーク内のデータベースであっても)。
チャジーチャズ

2

えー サーバーがIPロックされていて、ユーザーが情報を気にしないテーブルのセットでSELECTに制限されている場合、それは大した問題ではありません。

一方、キーボードを1分間強打してMySQLのパスワードを設定し、結果の意味不明なものを保護されたファイルにコピーして、ログインする必要があるたびにコードで参照します。

なぜ簡単にするのですか?パスワードが制限されたローカルアカウントに添付されている場合(すべてがそうであるように)、なぜそれを入力するのですか?そうでない場合は、保護しているデータの値に相対的な強度のパスワードが必要です。


2

mySQLのアカウント/アクセス情報は、実際のデータベースとは別のファイルに保存されます。したがって、別のファイルをその場所にドラッグアンドドロップするだけです。mySQLを使用すると、ファイルシステムの関連部分への書き込みアクセス権があれば、ゲームオーバーになります。


2

要件が変わるため...

したがって、ローカルマシンのみへのMySQL接続の受け入れに限定されている現在のサーバーは、外部ツールを使用してデータベースを管理できるように明日開かれる可能性があります。この設定を行う人は、非常に弱いパスワードが使用されていることを知らない場合があります。

ユーザーが適切で強力な(例:長くてランダムな)パスワードを覚えなければならないため不便な場合は、パスワードを非常に強力にしてから保存することを検討して.my.cnfください。もちろん、これにはセキュリティ上の影響もありますが、パスワードにアクセスするアプリケーションなど、どこかにパスワードを保存する必要があるため、パスワードのコピーを既に保護しています。

しかし、@ meagarが言ったことも読んでください。


1

既にアクセスできるという前提は正しくありません。ただし、アクセス権があり、非特権アカウントを持っている場合、mysqlパスワードを簡単にハッキングできます。

また、サーバーがライブの実稼働サーバーである場合は、インターネットに自分自身を広告するよりも。ある時点で、誰かがいることを意味そのWILL mysqlの、ポートとユーザーアカウントの両方を含め、そのサーバー上のブルートフォース攻撃を、してみてください。

データを気にする場合、基本的な手順は、データベースのルートパスワードをルートユーザーのルートパスワードとは異なるものにすることです。他のユーザーは、ユーザーとプログラムに可能な限り低いアクセス許可を与えるべきだと述べています。

非常に安価なコンピューターで、4文字のパスワードを数分でハッキングできます。

私は他の人が言ったことを繰り返しているかもしれませんが、あなたのマネージャーのための弾薬が多いほど良いです。


1

実際のシナリオの理由の多くは、以前は投稿でカバーされていたので、「哲学」を追加します。強力なパスワードを使用し、予防策を講じてセキュリティを強化することは、仕事の哲学です。考え方。

あなたはmysqlが127.0.0.1でのみ動作し、rootユーザーのみがそれにアクセスできるので、は弱いパスワードを使用すると、あなたが先に考えていないことがわかります。いつかmysqlへのネットワーク経由のアクセスを許可する必要がある場合はどうなりますか。あなたが残したすべてのセキュリティ全体をカバーすることを覚えていますか?

優れた管理者は、最悪のシナリオを最初に妄想状態に置きます。


1

ユーザーがどのような権利を持っているかによりますが、常に複数のレベルで物事をロックダウンする必要があります。また、データベースに保存するデータにも依存します。また、MySQLにはデータベース全体を引き継ぐことができるが、ユーザーアカウントにログインするだけで済む脆弱性があると仮定します。パスワードが強力な場合、この脆弱性はミュートされます。しかし、これは本当にあなたの特定のケースに依存します。


MySQLサーバーが危険にさらされると、ユーザーとパスワードは役に立たなくなります。データベースファイルは暗号化されません。アプリのMySQLユーザーは、ホストをlocalhost / 127.0.0.1にして、リモートで使用したり、リモート接続を無効にできないようにする必要があります。
チャジーチャズ

1

mysqlで他人になりすますことは非常に簡単です。パスワードなしのユーザーID(最も弱いセキュリティ)を指定する場合は、を使用しますmysql -u userid。パスワードがある場合は少し難しくなりますが、パスワードが弱いと簡単になります。rootにパスワードがない場合、rootとしてにアクセスできますmysql -u root。その後、データベース内でrootができることは何でもできます。

セキュリティでホスト仕様を使用することもお勧めです。特にリモートアクセスが利用可能な場合は可能です。

ファイル内のパスワードは、許可によってある程度保護できます。ルート、またはパスワードファイルの所有者によるアクセスは簡単です。可能であれば、ディスク上のパスワードの暗号化を使用する必要があります。これにより、アクセスが若干難しくなりますが、依然として脆弱です。


0

自分でMySQL dbをホストしていないが、ホスティングサービスを使用していて、誰かがサーバーのIPアドレスにアクセスできる場合、ユーザー名とパスワードが最後の防衛線になります。安全なユーザー名/パスワードを持っていることは常に良いことです。


えっ!誰かがサーバーにアクセスした場合、PHPファイルからユーザー/パスワードを読み取ることができます...この回答を更新または削除してください。
チャジーチャズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.