web-dev-qa-db-ja.com

MySQLにSSLを使用する必要はありますか?

MySQLとApache Webサーバーがあります(両方とも同じマシンにインストールされています)。ユーザーは、VB.NETアプリケーションとWebを使用してそれを操作します。サーバーはインターネットからアクセスできます。

VB.NETアプリケーション:フィールドに入力し、データベースに情報を送信します。 Web:ユーザーは、ユーザーが送信した情報を表示できます。 Webページは、データベースを表形式で表示するだけです。

情報は非常に重要ではありません。それは単なる統計/ベンチマークです(特に世界中の誰でもそれを表示することが許可されているため)。 SQLを初めてデプロイするのはこれが理由です。 SSLを有効にする必要は本当にありますか?

2
Tyler Montney

あなたは基本的に、世界中の誰でもこの情報を読めると述べて、あなた自身の質問に答えました。これは私にそれが必要ではないと信じさせます。

ただし、セキュリティの観点から、ベストプラクティスを使用することを常にお勧めします。つまり、トランスポート層保護を使用します。

Webベースのクライアント

Webサーバーとデータベースサーバーは同じマシン上で実行されるため、MiTM攻撃は不可能であるため、データベースへの接続は127.0.0.1:3306に行う必要があります。ただし、サーバー上の特権を持つ(データベース以外の)ユーザーは、このトラフィックをキャプチャできます

VBクライアント

これらの特定のクライアントは、おそらくMySQLサーバーに直接接続します。この場合、クライアントは非セキュアなトランスポート層を介して資格を送信します。

VBクライアントがWebサーバーのWebフォームを使用する場合、上記のステートメントは適用されず、Webベースのクライアントの場合と同じことがここで適用されます。

考慮事項と推奨事項

VBクライアントがインターネット経由でデータベースに直接接続する場合は、トランスポート層保護を使用することをお勧めします[1]。

今後、より機密性の高いデータを保存するかどうかを検討してください。将来に備える。

ある日、「ユーザーが詳細を保存するフォームを追加してみましょう」と言って、この「明るいアイデア」を誰かが持っているかもしれません。たとえば、ユーザーの名前、アドレス、電子メールアドレス、IPアドレスを保存する必要があります。

[1]少し最近の欠陥のため、SSLという用語を使用しないようにしています。

4
Jeroen

MySQLとApache Webサーバーがあります(両方とも同じマシンにインストールされています)。ユーザーは、VB.NETアプリケーションとWebを使用してそれを操作します。サーバーはインターネットからアクセスできます。
...
情報はそれほど重要ではありません。それは単なる統計/ベンチマークです(特に世界中の誰でもそれを表示することが許可されているため)

これら2つのステートメントは互いに矛盾しているようです。一方では、MySQLとApacheの両方が同じホスト上にありますが、「世界中の誰でもそれを表示できます」。 Webアプリケーションが出力したデータを参照していると思いますか?

最初のステートメントがtrueで、ApacheウェブサーバーとMySQLデータベースサーバーの両方が同じマシンに存在する場合、Ranizが彼の回答で述べたように、SSLを追加してもメリットはありません。ただし、それらが異なるマシンに存在する場合、またはMySQLにリモートでアクセスする場合、SSLを有効にする必要があります。

ここで重要なことは、SSLがユーザーを保護するものをモデル化することです。これは主にパスワードを盗むことです。 SSLを使用せずにインターネット経由でMySQLサーバーに接続すると、幸運にもあなたと最終目的地(MySQLサーバー)の間に座っていれば、MySQLのユーザー名とパスワードを簡単に抽出できます。その後、抽出したユーザー資格情報を使用して、好きなことを行うことができます。

「この情報はそれほど重要ではない」と言って、この可能性に無関心であるように見えますが、おそらくこの可能性について心配する必要があります。攻撃者がデータベースからすべてを削除した場合はどうなりますか?または、微妙に誤ったデータを挿入し、サイトの信頼性を破壊しましたか? SQLのエクスプロイトを使用してマシンにシェルを取得できたらどうなるでしょうか。

ただし、MySQLサーバーが存在し、ローカルにのみ(WANを介して)アクセスしない場合は、SSLは必要ありません。公開されている場合、または安全でないネットワークを介してデータを共有する場合は、SSLを使用します。


MySQL over SSLを使用する代わりに、MySQLにリモートでアクセスする必要がある場合は常にSSHポート転送を使用します。

ssh -L 3306:localhost:3306 myhost.com

これにより、SSH経由ですべてのトラフィックがローカルポート3306に転送され、myhost.comのローカルポート3306に転送されます。これにより、アクセスを許可しながら資格情報が保護されます。

SSLは一般的に設定が最も簡単なものではなく、MySQLも例外ではありません。それでも、ネットワーク経由でMySQLにアクセスするためにservicesが必要な場合、SSLは非常に必要な目的を果たします。

4
Naftuli Kay