MySQLのbind-addressを0.0.0.0に設定するのはどれほど悪いですか?


35

現在、LinuxサーバーをWebアプリと共有しているMySQLインスタンスにリモートサーバーがアクセスできるようにしています。ドキュメントによるとこれが可能になる唯一の方法は(私が正しく理解していない限り)、bind-addressディレクティブが0.0.0.0に設定されている場合です。これにより、有効なユーザーを生成できるIPからMySQLにアクセスできます。

したがって、2つの質問:

  1. これはセキュリティにどの程度有害ですか?
  2. MySQLとローカルおよびリモートの両方の対話を可能にするより良いアプローチはありますか?

回答:


36

バインドアドレスの設定を少し誤解していると思います。これらは、MySQLが接続をリッスンするローカルアドレスです。デフォルトは0.0.0.0で、これはすべてのインターフェースです。この設定は、localhostのみに127.0.0.1を指定しない限り、サーバーにアクセスできるIPを制限しません。

特定のユーザー特定のIPアドレスから制限する必要がある場合は、次のようにユーザーを作成/付与します。CREATE USER 'bobdole'@'192.168.10.221';


+1。ただし、デフォルトのリスニングアドレスはMySQLのインストール方法によって異なることに注意してください。
ジョンガーデニアーズ

Dougに感謝します。この場合のデフォルトはローカルホストだと思いますが、特定のデータベースのユーザーは依然としてIPによって制限されていることを知っておくと良いでしょう。
jonathanatx

@jonathanatx MySQLのデフォルトのバインドアドレス(5.6および私が知る限り)は0.0.0.0です。ただし、多くのインストールでは、ローカルバインドのみが最適なオプションだと思います。誰もドアを通り抜けたくない場合は、ドアを開けないでください。
ebyrob 14年

1

a。悪いです。各データベースでipによるユーザーアクセスを制限できますが、すべての接続をローカルに接続する方が安全だと思います。私のサーバーでは、MySQLがデフォルトの構成である127.0.0.1のローカル接続のみを受け入れるようにします。データベースにリモートでアクセスするには、データベースに接続する前にsshトンネルを作成してからローカルに接続するだけです。PHPでコーディングしている場合、これは非常に簡単です。デスクトップアプリケーションを使用している場合、Linuxで簡単に実行できます(sshトンネルを検索)。Windowsでは、通常、Puttyのようなプログラムを使用してトンネルを作成します。


7
それはかなり正気です。標準的な方法は、特定のホスト名またはIPからのみアクセスできるユーザーを作成することです。すべてのWebサーバーにデータベースへのSSHトンネルを強制することは、実行する必要があるよりもはるかに多くの作業です。
TheLQ

3
Webサーバーとデータベースサーバーが常に同じデバイスであるとは限りません。確かに、インターネットからの接続を許可しないでください。
シェーンマッデン

1
小さなセットアップ(1デシベル、1つのWWW)のために、あなたは可能性がある SSHトンネリングを行います。実際のセットアップでは、VPNとファイアウォールで保護されます。したがって、リモートアクセスを許可するには、0.0.0.0で開きます。
ソニアハミルトン

2
SSHトンネルのアイデアはおかしいと思っているすべての人にとって、MySQLトラフィックの大部分は明確であると考えてください。何らかの理由で信頼できないネットワーク(インターネットなど)を介して接続する必要がある場合は、SSHを検討するか、VPN経由で接続することを検討してください。私が話していることを確認したい場合は、Wiresharkまたは他のパケットスニファーを起動します。
ブラッド

2
@Brad MySQLは暗号化をサポートしているため、これは正しくありません。
マルティマルコフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.