シェルを使ってMySQLにリモートで接続するのは安全ですか?

シェルを使ってMySQLにリモートで接続するのは安全ですか?

データベースに接続し、いくつかのクエリを実行するシェルスクリプトを作成しました。

#/!bin/bash
...
...
mysql -h remote -u root --password='pw' MatchingDB 
some SQL queries 

私の質問は、この接続が安全な接続と見なされ、攻撃者が私がリモートデータベースに送信するクエリをスニッフィングしたり、送信したクエリを変更できることです。

答え1

はい、しかし、コマンドラインにパスワードを提供しないでください。コマンドラインスイッチからパスワードを省略すると、パスワードの入力を求められます。

はい

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 227743
Server version: 5.0.95 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

パスワードを安全に処理する

推奨事項については、MySQLのドキュメントを確認してください。ページのタイトルは次のとおりです。6.1.2.1 エンドユーザーパスワードセキュリティガイドラインさまざまな方法を強調し、各方法の長所と短所について説明します。

説明したオプションの中からオプションファイルを使用できます。

抜粋

オプションファイルにパスワードを保存します。たとえば、Unixでは、ホームディレクトリにある.my.cnfファイルの[client]セクションにパスワードを一覧表示できます。

   [client]
   password=your_pass

パスワードを安全に保つために、自分以外の人はファイルにアクセスできません。これを保証するには、ファイルアクセスモードを400または600に設定します。たとえば、

   shell> chmod 600 .my.cnf

   shell> mysql --defaults-file=/home/francis/mysql-opts

議論されているすべての方法はセキュリティの観点からは問題がありますが、これらの方法を実行しているディレクトリがアクセス権を持つ他のディレクトリから隔離されていると仮定すると、リスクは最も低いでしょう。

ボルトを使用

あなたがしたいことが「本番準備」インストールと呼ばれるものである場合は、暗号化ライブラリを使用することが実際には適切なメカニズムです。これについての詳細は、次のタイトルのMySQLの記事で見ることができます。5.3.6 パスワードストア

Linux、特にGNOMEではGNOMEデーモンを使用しますgnome-keyring

引用する

答え2

接続に対してSSLサポートを有効にする必要があるかもしれません。

サーバーでmysqldサポートされていることを確認するには、SSLシステム変数の値を確認してくださいhave_ssl

mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl      | YES   |
+---------------+-------+

はい、サーバーサポートSSLプロトコルつながる値障害を負う、サーバーは有能なSSL接続はサポートされていますが、--ssl-xxxそれを使用するための適切なオプションはまだ提供されていません。

おそらく以下で確認してください。ここSSLをサポートするmysqlサーバーを設定する方法について説明します。

関連情報